From 84eca126e13263f00780f126040158d2e323c1ed Mon Sep 17 00:00:00 2001
From: James Graham <j.graham@soton.ac.uk>
Date: Wed, 16 Mar 2022 20:16:11 +0000
Subject: [PATCH] feat: add secret flags for output formatting

---
 pycgtool/__main__.py | 60 ++++++++++++++++++++++++++++++--------------
 1 file changed, 41 insertions(+), 19 deletions(-)

diff --git a/pycgtool/__main__.py b/pycgtool/__main__.py
index beb36d5..ae46fed 100755
--- a/pycgtool/__main__.py
+++ b/pycgtool/__main__.py
@@ -228,6 +228,14 @@ def parse_arguments(arg_list):
     run_options.add_argument('--log-level', default='INFO',
                              choices=('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'),
                              help="Which log messages should be shown?")
+
+    # Secret options
+
+    secret_options = parser.add_argument_group("secret options")
+    secret_options.add_argument('--curmudgeon', default=False, action='store_true',
+                                help=argparse.SUPPRESS)
+    secret_options.add_argument('--cow', default=False, action='store_true',
+                                help=argparse.SUPPRESS)
     # yapf: enable
 
     args = parser.parse_args(arg_list)
@@ -267,25 +275,39 @@ def main():
     start_time = time.time()
     args = parse_arguments(sys.argv[1:])
 
-    logging.basicConfig(level=args.log_level,
-                        format='%(message)s',
-                        datefmt='[%X]',
-                        handlers=[RichHandler(rich_tracebacks=True)])
-
-    banner = r"""
-         _____        _____ _____ _______ ____   ____  _      
-        |  __ \      / ____/ ____|__   __/ __ \ / __ \| |     
-        | |__) |   _| |   | |  __   | | | |  | | |  | | |     
-        |  ___/ | | | |   | | |_ |  | | | |  | | |  | | |     
-        | |   | |_| | |___| |__| |  | | | |__| | |__| | |____ 
-        |_|    \__, |\_____\_____|  |_|  \____/ \____/|______|
-                __/ |                                         
-               |___/                                          
-    """  # noqa
-
-    logger.info('[bold blue]%s[/]',
-                textwrap.dedent(banner),
-                extra={'markup': True})
+    if args.curmudgeon:
+        logging.basicConfig(level=args.log_level)
+
+    else:
+        logging.basicConfig(level=args.log_level,
+                            format='%(message)s',
+                            datefmt='[%X]',
+                            handlers=[RichHandler(rich_tracebacks=True)])
+
+        banner = r"""
+             _____        _____ _____ _______ ____   ____  _      
+            |  __ \      / ____/ ____|__   __/ __ \ / __ \| |     
+            | |__) |   _| |   | |  __   | | | |  | | |  | | |     
+            |  ___/ | | | |   | | |_ |  | | | |  | | |  | | |     
+            | |   | |_| | |___| |__| |  | | | |__| | |__| | |____ 
+            |_|    \__, |\_____\_____|  |_|  \____/ \____/|______|
+                    __/ |                                         
+                   |___/                                          
+        """  # noqa
+
+        banner = textwrap.dedent(banner)
+        if args.cow:
+            try:
+                import cowsay
+                banner = cowsay.cow('PyCGTOOL')
+
+            except ImportError:
+                pass
+
+        else:
+            logger.info('[bold blue]%s[/]',
+                        textwrap.dedent(banner),
+                        extra={'markup': True})
 
     logger.info(30 * '-')
     logger.info('Topology:\t%s', args.topology)
-- 
GitLab