Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[20.10 backport] cli: additionalHelp() don't decorate output if it's piped, and add extra newline #3976

Merged
merged 2 commits into from
Jan 18, 2023

Commits on Jan 17, 2023

  1. cli: additionalHelp() don't decorate output if it's piped

    This prevents the escape-characters being included when piping the
    output, e.g. `docker --help > output.txt`, or `docker --help | something`.
    These control-characters could cause issues if users copy/pasted the URL
    from the output, resulting in them becoming part of the URL they tried
    to visit, which would fail, e.g. when copying the output from:
    
        To get more help with docker, check out our guides at https://docs.docker.com/go/guides/
    
    Users ended up on URLs like;
    
        https://docs.docker.com/go/guides/ESC
        https://docs.docker.com/go/guides/%1B[0m
    
    Before this patch, control characters ("bold") would be printed, even if
    no TTY was attached;
    
        docker --help > output.txt
        cat output.txt | grep 'For more help' | od -c
        0000000 033   [   1   m   F   o   r       m   o   r   e       h   e   l
        0000020   p       o   n       h   o   w       t   o       u   s   e
        0000040   D   o   c   k   e   r   ,       h   e   a   d       t   o
        0000060   h   t   t   p   s   :   /   /   d   o   c   s   .   d   o   c
        0000100   k   e   r   .   c   o   m   /   g   o   /   g   u   i   d   e
        0000120   s   / 033   [   0   m  \n
        0000127
    
        docker --help | grep 'For more help' | od -c
        0000000 033   [   1   m   F   o   r       m   o   r   e       h   e   l
        0000020   p       o   n       h   o   w       t   o       u   s   e
        0000040   D   o   c   k   e   r   ,       h   e   a   d       t   o
        0000060   h   t   t   p   s   :   /   /   d   o   c   s   .   d   o   c
        0000100   k   e   r   .   c   o   m   /   g   o   /   g   u   i   d   e
        0000120   s   / 033   [   0   m  \n
        0000127
    
    With this patch, no control characters are included:
    
        docker --help > output.txt
        cat output.txt | grep 'For more help' | od -c
        0000000   F   o   r       m   o   r   e       h   e   l   p       o   n
        0000020       h   o   w       t   o       u   s   e       D   o   c   k
        0000040   e   r   ,       h   e   a   d       t   o       h   t   t   p
        0000060   s   :   /   /   d   o   c   s   .   d   o   c   k   e   r   .
        0000100   c   o   m   /   g   o   /   g   u   i   d   e   s   /  \n
        0000117
    
        docker --help | grep 'For more help' | od -c
        0000000   F   o   r       m   o   r   e       h   e   l   p       o   n
        0000020       h   o   w       t   o       u   s   e       D   o   c   k
        0000040   e   r   ,       h   e   a   d       t   o       h   t   t   p
        0000060   s   :   /   /   d   o   c   s   .   d   o   c   k   e   r   .
        0000100   c   o   m   /   g   o   /   g   u   i   d   e   s   /  \n
        0000117
    
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    (cherry picked from commit 59e74b4)
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    thaJeztah committed Jan 17, 2023
    Configuration menu
    Copy the full SHA
    1686805 View commit details
    Browse the repository at this point in the history
  2. Add extra newline after additionalHelp output

    The additionalHelp message is printed at the end of the --help output;
    
        To get more help with docker, check out our guides at https://docs.docker.com/go/guides/
        PS>
    
    As this message may contain an URL, users may copy/paste the URL to open it
    in their browser, but can easily end up copying their prompt (as there's
    no whitespace after it), and as a result end up on a broken URL, for example:
    
        https://docs.docker.com/go/guides/PS
    
    This patch adds an extra newline at the end to provide some whitespace
    around the message, making it less error-prone to copy the URL;
    
        To get more help with docker, check out our guides at https://docs.docker.com/go/guides/
    
        PS>
    
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    (cherry picked from commit 9bb7021)
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    thaJeztah committed Jan 17, 2023
    Configuration menu
    Copy the full SHA
    913fa47 View commit details
    Browse the repository at this point in the history