diff --git a/lib/ansible/cli/arguments/option_helpers.py b/lib/ansible/cli/arguments/option_helpers.py index 8c6444f602b..7c4b77d0913 100644 --- a/lib/ansible/cli/arguments/option_helpers.py +++ b/lib/ansible/cli/arguments/option_helpers.py @@ -15,6 +15,7 @@ import time from jinja2 import __version__ as j2_version import ansible +from ..splash import dump_splash from ansible import constants as C from ansible.module_utils._text import to_native from ansible.module_utils.common.yaml import HAS_LIBYAML, yaml_load @@ -33,6 +34,7 @@ class SortingHelpFormatter(argparse.HelpFormatter): class AnsibleVersion(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): + dump_splash() ansible_version = to_native(version(getattr(parser, 'prog'))) print(ansible_version) parser.exit() diff --git a/lib/ansible/cli/splash/__init__.py b/lib/ansible/cli/splash/__init__.py new file mode 100644 index 00000000000..ad0ae1fb02c --- /dev/null +++ b/lib/ansible/cli/splash/__init__.py @@ -0,0 +1,33 @@ +import pkgutil +import re + + +def dump_splash(splash_name='chaosbomb_80x40', color=True): + try: + b_data = pkgutil.get_data(__package__, f'{splash_name}.txt') + except Exception: + # TODO: warn + return + + # TODO: are we a TTY? + # TODO: select the right size based on TTY caps + # TODO: do we support color + # TODO: filter escape codes if not color + + if not b_data: + return + data = b_data.decode("utf8") + if not color: + data = _filter_ansi(data) + print(f'\n{data}\n') + + +_ansi_re = None # ANSI escape sequence re lazy compiled on first use + + +def _filter_ansi(raw): + global _ansi_re + if not _ansi_re: # lazily compile the RE + _ansi_re = re.compile('\033\[([0-9;]*)m') + + return re.sub(_ansi_re, '', raw) diff --git a/lib/ansible/cli/splash/ansible_120x7.txt b/lib/ansible/cli/splash/ansible_120x7.txt new file mode 100644 index 00000000000..1999cf2b31c --- /dev/null +++ b/lib/ansible/cli/splash/ansible_120x7.txt @@ -0,0 +1,7 @@ + lx ck. ll ;dOOOOkx; lx xxdddxdc .x. ,dkOOOkx, + :WKk OMWl 0K lM, 0W Ml .OW. .M; kW' + 'W' Xl OX.0K. 0K .KK:. 0W Ml OX .M; oW, + .WK. .W; OX :No 0K .ckXkc. 0W MXOOOOKNl .M; .OW0kkkk + Xk,kO;:W. OX kX'0K .cNO 0W Ml 0N .M; .Wx + OK .lXMN. OX ;NWK .. .0X 0W Mo 'X0 .M: X0. + 'x. ,x; co ol ,oxdddxd: lx xxxxxxxo, xxxxxxxx, ;dxddddx' diff --git a/lib/ansible/cli/splash/ansible_80x5.txt b/lib/ansible/cli/splash/ansible_80x5.txt new file mode 100644 index 00000000000..3152bc3ca5f --- /dev/null +++ b/lib/ansible/cli/splash/ansible_80x5.txt @@ -0,0 +1,5 @@ + .0 xl x. cdllll .O Oc:cd: .k 'dllll. + K;O KxO. X. X: .M M W .N K; + Ok cd K'.O: X. ,odl. .M Mlllkk .N :Xoll. + ld.odX; K' ckN. .X, .M M lx .N M + .x :k d. .O. ll::ol .O Olcclo Ollll, ,dc::l. diff --git a/lib/ansible/cli/splash/bluea_40x20.txt b/lib/ansible/cli/splash/bluea_40x20.txt new file mode 100644 index 00000000000..f5c30cd2a3b --- /dev/null +++ b/lib/ansible/cli/splash/bluea_40x20.txt @@ -0,0 +1,20 @@ +                 dddddo                  +           xxxxxxxxxxxxxxxxxd            +        dxxxxxxxxxxxxxxxxxxxxxxx         +      dxxxxxxxxxxxxxxxxxxxxxxxxxxx       +    dxxxxxxxxxxxxxxkOxxxxxxxxxxxxxxo     +   xxxxxxxxxxxxxxxOMMNxxxxxxxxxxxxxxd    +  oxxxxxxxxxxxxxxkWMWMXxxxxxxxxxxxxxxo   +  xxxxxxxxxxxxxxxWMXxWMKxxxxxxxxxxxxxx   + dxxxxxxxxxxxxxxNMNxxkMM0xxxxxxxxxxxxxo  + dxxxxxxxxxxxxxKMMOxxxOMMkxxxxxxxxxxxxx  + dxxxxxxxxxxxx0MMWMN0xxKMWkxxxxxxxxxxxx  + oxxxxxxxxxxxOMM0xOXMMXkXMNxxxxxxxxxxxo  +  xxxxxxxxxxkWMXxxxxx0WMWMMXxxxxxxxxxx   +  dxxxxxxxxxWMNxxxxxxxxOXMMMKxxxxxxxxd   +   dxxxxxxxOXXkxxxxxxxxxxx0X0xxxxxxxd    +    oxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd     +      dxxxxxxxxxxxxxxxxxxxxxxxxxxd       +        dxxxxxxxxxxxxxxxxxxxxxxx         +           dxxxxxxxxxxxxxxxxd            +                 oxxxxo                  diff --git a/lib/ansible/cli/splash/bluea_80x40.txt b/lib/ansible/cli/splash/bluea_80x40.txt new file mode 100644 index 00000000000..74472e8bc5c --- /dev/null +++ b/lib/ansible/cli/splash/bluea_80x40.txt @@ -0,0 +1,40 @@ +                                                                                 +                                  lodddxxdddoo                                   +                           dddxxxxxxxxxxxxxxxxxxxxxdd                            +                      :dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdo                       +                   odxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdd                    +                odxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdo                 +              odxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdo               +            odxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdd             +           dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd            +         odxxxxxxxxxxxxxxxxxxxxxxxxxxxkKNXOxxxxxxxxxxxxxxxxxxxxxxxxxxxd          +        dxxxxxxxxxxxxxxxxxxxxxxxxxxxxkWMMMMOxxxxxxxxxxxxxxxxxxxxxxxxxxxd         +       dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxNMMMMMMkxxxxxxxxxxxxxxxxxxxxxxxxxxxd        +      dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXMMMMMMMWxxxxxxxxxxxxxxxxxxxxxxxxxxxxd       +     dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxKMMMMKMMMMNxxxxxxxxxxxxxxxxxxxxxxxxxxxxd      +     dxxxxxxxxxxxxxxxxxxxxxxxxxxxx0MMMMXxOMMMMXxxxxxxxxxxxxxxxxxxxxxxxxxxxd;     +    dxxxxxxxxxxxxxxxxxxxxxxxxxxxxkMMMMNxxxKMMMM0xxxxxxxxxxxxxxxxxxxxxxxxxxxd     +    dxxxxxxxxxxxxxxxxxxxxxxxxxxxkWMMMWkxxxxXMMMMOxxxxxxxxxxxxxxxxxxxxxxxxxxx     +   oxxxxxxxxxxxxxxxxxxxxxxxxxxxxNMMMMOxxxxxxNMMMMkxxxxxxxxxxxxxxxxxxxxxxxxxxo    +   dxxxxxxxxxxxxxxxxxxxxxxxxxxxXMMMM0xxxxxxxkWMMMWxxxxxxxxxxxxxxxxxxxxxxxxxxd    +   dxxxxxxxxxxxxxxxxxxxxxxxxxxKMMMMMKkxxxxxxxOMMMMNxxxxxxxxxxxxxxxxxxxxxxxxxx    +   dxxxxxxxxxxxxxxxxxxxxxxxxx0MMMMMMMMN0xxxxxx0MMMMXxxxxxxxxxxxxxxxxxxxxxxxxx    +   dxxxxxxxxxxxxxxxxxxxxxxxxkMMMMWKWMMMMWKkxxxxXMMMM0xxxxxxxxxxxxxxxxxxxxxxxd    +   oxxxxxxxxxxxxxxxxxxxxxxxkWMMMMOxxOXMMMMMN0xxxNMMMMOxxxxxxxxxxxxxxxxxxxxxxo    +    dxxxxxxxxxxxxxxxxxxxxxxNMMMM0xxxxxxKWMMMMMXkkWMMMWkxxxxxxxxxxxxxxxxxxxxx     +    dxxxxxxxxxxxxxxxxxxxxxXMMMMXxxxxxxxxxOXMMMMMNXMMMMWxxxxxxxxxxxxxxxxxxxxd     +     dxxxxxxxxxxxxxxxxxxxKMMMMNxxxxxxxxxxxxkKWMMMMMMMMMNxxxxxxxxxxxxxxxxxxxo     +     dxxxxxxxxxxxxxxxxxxOMMMMWkxxxxxxxxxxxxxxxOXMMMMMMMMKxxxxxxxxxxxxxxxxxd      +      dxxxxxxxxxxxxxxxxkMMMMMOxxxxxxxxxxxxxxxxxxkKWMMMMMM0xxxxxxxxxxxxxxxd       +       dxxxxxxxxxxxxxxkWMMMM0xxxxxxxxxxxxxxxxxxxxxxONMMMM0xxxxxxxxxxxxxxd        +        dxxxxxxxxxxxxxkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkOOkxxxxxxxxxxxxxxd         +         dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd          +           dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdl           +            ddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdd             +              odxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd               +                odxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdd                 +                   ddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdd                    +                      odxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdo                       +                          .dddxxxxxxxxxxxxxxxxxxxxxddl                           +                                  oddxxxxxxddl                                   +                                                                                 diff --git a/lib/ansible/cli/splash/chaosbomb_40x20.txt b/lib/ansible/cli/splash/chaosbomb_40x20.txt new file mode 100644 index 00000000000..6560810de12 --- /dev/null +++ b/lib/ansible/cli/splash/chaosbomb_40x20.txt @@ -0,0 +1,20 @@ +                                         +                               .oll      +                              .0WWWx     +                       .'...  ;kWWd.     +                     ,'    ..'. :;.      +                  .,,.                   +         ..',,,,,,'''..                  +      .';c,,,,,,,,,,,,,.                 +    .,,,OO,,,,:d,,,,,,,,,.               +   .,,,0k:,,,:WM0,,,,,,,,,'              +  .,,,,,,,,,,XNoMx,,,,,,,,,'             +  ,,,,,,,,,,0W:,xMo,,,,,,,,,             +  ,,,,,,,,,kMNo,,0W:,,,,,,,,.            +  ,,,,,,,,oMdc0WOcXN;,,,,,,'             +  .,,,,,,cMO,,,;xNWMK,,,,,'.             +   .',,,;WK,,,,,,,l0Mx,,,'.              +    .'',,,,,,,,,,,,,,,'''.               +      .''''',,,,,,'''''..                +        ...'''''''''..                   +                                         diff --git a/lib/ansible/cli/splash/chaosbomb_80x40.txt b/lib/ansible/cli/splash/chaosbomb_80x40.txt new file mode 100644 index 00000000000..ed1190f978f --- /dev/null +++ b/lib/ansible/cli/splash/chaosbomb_80x40.txt @@ -0,0 +1,40 @@ +                                                                                 +                                                                                 +                                                                ',   ;.          +                                                              ,:kWWNNx           +                                                              .WWWWWWX:,.        +                                                            .OWWWMMMWWWX         +                                                            .NWWWWWWW0oc;        +                                             .:;ld,xc;;..   .';cXWWWx            +                                           .x:.      ...c,lo,c. cXkkd            +                                      .   co                    .                +                                     ;,;,'.                                      +                                    '',,,,,,'                                    +                     ..',,;;;;;;;;,,'.....','.                                   +                 .';;,,,,,,,,,,,,,,,,,,;;,..                                     +              .,;,,,,,,,,,,,,,,,,,,,,,,,,,,;;'.                                  +            ';,,,lOo,,,,,,,,,,,,,,,,,,,,,,,,,,;,.                                +          ';,,,,lOdc,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.                              +        .;,,,,,:kNMX,,,,,,,,,0WK:,,,,,,,,,,,,,,,,,,,                             +       ,,,,,,,kWMWx,,,,,,,,,0MMMX;,,,,,,,,,,,,,,,,,,;.                           +      ,,,,,,,:0kl,,,,,,,,,,xMMMMMK,,,,,,,,,,,,,,,,,,,;.                          +     ',,,,,,,,,,,,,,,,,,,,oMMMdNMMk,,,,,,,,,,,,,,,,,,,,                          +    .,,,,,,,,,,,,,,,,,,,,cMMMx,cWMMo,,,,,,,,,,,,,,,,,,,,                         +    ,,,,,,,,,,,,,,,,,,,,;NMM0,,,dMMMc,,,,,,,,,,,,,,,,,,,.                        +    ,,,,,,,,,,,,,,,,,,,,XMMX,,,,,kMMW:,,,,,,,,,,,,,,,,,,.                        +   .,,,,,,,,,,,,,,,,,,,0MMMx,,,,,,KMMX,,,,,,,,,,,,,,,,,,'                        +   .,,,,,,,,,,,,,,,,,,xMMMMMWk:,,,;NMM0,,,,,,,,,,,,,,,,,'                        +   .,,,,,,,,,,,,,,,,,oMMWclKMMMKo,,cWMMk,,,,,,,,,,,,,,,,.                        +    ,,,,,,,,,,,,,,,,cWMMd,,,;xNMMWO:oMMMo,,,,,,,,,,,,,,'.                        +    .,,,,,,,,,,,,,,;NMMO,,,,,,,l0MMMXNMMWc,,,,,,,,,,,,''                         +     '',,,,,,,,,,,,XMMK,,,,,,,,,,;xNMMMMMW:,,,,,,,,,,''.                         +     .'',,,,,,,,,,0MMN;,,,,,,,,,,,,,lKMMMMX,,,,,,,,'''.                          +      .''',,,,,,,xMMWc,,,,,,,,,,,,,,,,:kWMWc,,,,,''''.                           +       .'''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,'''''.                            +         .''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''..                             +          ..'''''',,,,,,,,,,,,,,,,,,,,,,,''''''''.                               +            ..'''''''''',,,,,,,,,,''''''''''''..                                 +               ..''''''''''''''''''''''''''..                                    +                  ...''''''''''''''''''...                                       +                        .............                                            +                                                                                 diff --git a/lib/ansible/cli/splash/reda_40x20.txt b/lib/ansible/cli/splash/reda_40x20.txt new file mode 100644 index 00000000000..ffae4beba22 --- /dev/null +++ b/lib/ansible/cli/splash/reda_40x20.txt @@ -0,0 +1,20 @@ +                                         +             looooooooooool              +         oooooooooooooooooooooo          +       looooooooooooooooooooooool        +     ooooooooooooooodoooooooooooooo      +    oooooooooooooodWMKoooooooooooool     +   looooooooooooooNMWMOoooooooooooool    +   ooooooooooooooXMXdWMkooooooooooooo    +  looooooooooooo0MNookMWdooooooooooool   +  oooooooooooookMMkoooOMWooooooooooooo   +  ooooooooooooxMMNMNOooKMXoooooooooooo   +  loooooooooodWM0od0WMKxNMKooooooooool   +   ooooooooooNMXoooookNMWMMOooooooooo    +   looooooooKMWoooooooodKWMMxoooooool    +    ooooooodOOdoooooooooookOdooooool     +     oooooooooooooooooooooooooooooo      +       looooooooooooooooooooooooo        +         oooooooooooooooooooooo          +             looooooooooool              +                                         diff --git a/lib/ansible/cli/splash/reda_80x40.txt b/lib/ansible/cli/splash/reda_80x40.txt new file mode 100644 index 00000000000..7f3c8d509a2 --- /dev/null +++ b/lib/ansible/cli/splash/reda_80x40.txt @@ -0,0 +1,40 @@ +                                                                                 +                                                                                 +                                .lloloooolollllc                                 +                          clloooooooooooooooooooooooll                           +                      llooooooooooooooooooooooooooooooooll                       +                   loooooooooooooooooooooooooooooooooooooooll                    +                ,loooooooooooooooooooooooooooooooooooooooooooold                 +              dlooooooooooooooooooooooooooooooooooooooooooooooool:               +             looooooooooooooooooooooooooooooooooooooooooooooooooool              +           lloooooooooooooooooooooooooodxdooooooooooooooooooooooooool            +          looooooooooooooooooooooooooo0MMMXooooooooooooooooooooooooool           +         loooooooooooooooooooooooooooOMMMMMKooooooooooooooooooooooooool          +        loooooooooooooooooooooooooookMMMMMMMOooooooooooooooooooooooooool         +       looooooooooooooooooooooooooodWMMMNMMMMkooooooooooooooooooooooooool        +      looooooooooooooooooooooooooooNMMMNo0MMMWdooooooooooooooooooooooooool       +      loooooooooooooooooooooooooooXMMMWdooXMMMWdoooooooooooooooooooooooooo       +     loooooooooooooooooooooooooooKMMMMxooodWMMMXooooooooooooooooooooooooool      +     looooooooooooooooooooooooooOMMMMOoooooxMMMMKoooooooooooooooooooooooool      +     ooooooooooooooooooooooooooxMMMMKoooooookMMMMOooooooooooooooooooooooooo      +     ooooooooooooooooooooooooodWMMMMKdooooooo0MMMMkoooooooooooooooooooooooo      +     oooooooooooooooooooooooooNMMMMMMMNOooooooXMMMWdooooooooooooooooooooooo      +     loooooooooooooooooooooooXMMMMOXMMMMWKxooooNMMMWooooooooooooooooooooooo      +     looooooooooooooooooooooKMMMMOood0WMMMMNOoodWMMMXoooooooooooooooooooool      +     loooooooooooooooooooooOMMMMKooooookXMMMMMKxkMMMMKooooooooooooooooooool      +      ooooooooooooooooooooxMMMMNoooooooood0WMMMMNNMMMMOooooooooooooooooool       +      loooooooooooooooooodWMMMWdooooooooooookXMMMMMMMMMkoooooooooooooooool       +       loooooooooooooooooNMMMMxoooooooooooooood0WMMMMMMWdoooooooooooooool        +        loooooooooooooooXMMMMOoooooooooooooooooookXMMMMMNooooooooooooool         +         loooooooooooooONNNNKooooooooooooooooooooood0NWNkoooooooooooool          +          looooooooooooooooooooooooooooooooooooooooooooooooooooooooool           +           looooooooooooooooooooooooooooooooooooooooooooooooooooooool            +             looooooooooooooooooooooooooooooooooooooooooooooooooool,             +              :loooooooooooooooooooooooooooooooooooooooooooooooolc               +                xlooooooooooooooooooooooooooooooooooooooooooool:                 +                   lloooooooooooooooooooooooooooooooooooooool                    +                      looooooooooooooooooooooooooooooooool                       +                          lloooooooooooooooooooooooool                           +                                clloooooooooollc                                 +                                                                                 +                                                                                 diff --git a/lib/ansible/cli/splash/redhat_40x15.txt b/lib/ansible/cli/splash/redhat_40x15.txt new file mode 100644 index 00000000000..433af988677 --- /dev/null +++ b/lib/ansible/cli/splash/redhat_40x15.txt @@ -0,0 +1,15 @@ +           .'''''.'''''''..              +          .'''''''''''''''''''.          +          .''''''''''''''''''''.         +         .''''''''''''''''''''''.        +         .''''''''''''''''''''''.        +  ..''''  .''''''''''''''''''''''        +.'''''''    ..'''''''''''''''''''.       +'''''''''       ..''''''''''''''. ..     +.'''''''''..         ..........   .''..  + ''''''''''''..                   '''''. +  .''''''''''''''....          ..''''''' +    .''''''''''''''''''''''''''''''''''' +       .'''''''''''''''''''''''''''''''' +           .'''''''''''''''''''''''''''. +                .'''''''''''''''''''..   diff --git a/lib/ansible/cli/splash/redhat_80x30.txt b/lib/ansible/cli/splash/redhat_80x30.txt new file mode 100644 index 00000000000..57bf0666111 --- /dev/null +++ b/lib/ansible/cli/splash/redhat_80x30.txt @@ -0,0 +1,30 @@ +                        .......       ..'''''...                                 +                       .'''''''''....''''''''''''''..                            +                      .''''''''''''''''''''''''''''''''...                       +                     .'''''''''''''''''''''''''''''''''''''..                    +                    ..''''''''''''''''''''''''''''''''''''''''.                  +                    .''''''''''''''''''''''''''''''''''''''''''.                 +                   .'''''''''''''''''''''''''''''''''''''''''''.                 +                  ..''''''''''''''''''''''''''''''''''''''''''''.                +                  .'''''''''''''''''''''''''''''''''''''''''''''.                +                  .''''''''''''''''''''''''''''''''''''''''''''''.               +           ..'..    .''''''''''''''''''''''''''''''''''''''''''''.               +    ...'''''''''     ..'''''''''''''''''''''''''''''''''''''''''''               +  ..''''''''''''        .'''''''''''''''''''''''''''''''''''''''''.              + .''''''''''''''.         ..''''''''''''''''''''''''''''''''''''''.              +.''''''''''''''''.            ..''''''''''''''''''''''''''''''''''.              +.'''''''''''''''''..              ...''''''''''''''''''''''''''''.  '...         +.'''''''''''''''''''..                  ....'''''''''''''''''...    .'''..       + .'''''''''''''''''''''.                              .             .''''''.     +  .'''''''''''''''''''''''..                                        '''''''''.   +   .'''''''''''''''''''''''''...                                   .''''''''''.. +    ..''''''''''''''''''''''''''''...                           ..'''''''''''''. +      ..''''''''''''''''''''''''''''''''......            ....'''''''''''''''''' +        ..'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +           ..''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +              ..'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +                  ..'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''. +                      ..''''''''''''''''''''''''''''''''''''''''''''''''''''''.  +                          ...'''''''''''''''''''''''''''''''''''''''''''''''..   +                                ...''''''''''''''''''''''''''''''''''''''..      +                                       .'..''''''''''''''''''''''''''..