From d59cd47f36bc638dd42aac3e02a5de81e0ec3ec7 Mon Sep 17 00:00:00 2001
From: Salt <rehashedsalt@cock.li>
Date: Tue, 3 Mar 2020 19:25:40 -0600
Subject: [PATCH] Cleaner args

---
 badwitch.py | 101 ++++++++++++++++++++++++++--------------------------
 1 file changed, 50 insertions(+), 51 deletions(-)

diff --git a/badwitch.py b/badwitch.py
index d5a0af2..b48d016 100755
--- a/badwitch.py
+++ b/badwitch.py
@@ -41,15 +41,17 @@ class Library:
 class BadWitch:
     # Our program
     def __init__(self):
-        # Set up arguments
-        self.argparser = argparse.ArgumentParser(description='Manage a declarative music library through YouTube scraping')
-        self.argparser.add_argument('action', metavar='action', nargs=1,
-                choices=['download', 'add', 'remove', 'list', 'test'],
-                help='Action to perform on the library')
-        self.argparser.add_argument('-l', '--library', metavar='f', nargs=1,
+        # Flags and arguments
+        self.argparser = argparse.ArgumentParser(
+                description='Manage a declarative music library through YouTube scraping')
+        self.argparser.add_argument('-l', '--library', metavar='f', nargs='?',
                 help='Override default library file with this one')
         self.argparser.add_argument('-v', '--verbose', action='store_true',
                 help='Show more status messages')
+        # Subparsers
+        self.argparser.add_argument('action', metavar='action', nargs='?',
+                choices=['download', 'add', 'remove', 'list', 'test'],
+                help='Action to perform on the library')
         # Set up appdirs
         self.dirs = AppDirs('badwitch', 'rehashedsalt')
         Path(self.dirs.user_data_dir).mkdir(parents=True, exist_ok=True)
@@ -57,54 +59,51 @@ class BadWitch:
     def execute(self):
         self.args = self.argparser.parse_args() 
         # Initialize library
-        libfile = self.dirs.user_data_dir + '/lib.json'
-        if self.args.library is not None:
-            libfile = self.args.library[0]
+        libfile = self.args.library or self.dirs.user_data_dir + '/lib.json'
         lib = Library(file=libfile)
         # Perform action
-        for action in self.args.action:
-            if action == 'download':
-                return
-            elif action == 'add':
-                return
-            elif action == 'remove':
-                return
-            elif action == 'list':
-                lib.load()
-                for album, albumcontent in lib.albums.items():
-                    for song, songcontent in albumcontent.items():
-                        print(album + ' - ' + song + ' by ' + songcontent['artist'])
-                return
-            elif action == 'test':
-                # Set up a test album
-                lib.albums['Bad Witch'] = {
-                        'Shit Mirror': {
-                            'artist': 'Nine Inch Nails',
-                            'source': 'https://www.youtube.com/watch?v=yeqjz5mXrLQ'
-                            },
-                        'Ahead of Ourselves': {
-                            'artist': 'Nine Inch Nails',
-                            'source': 'https://www.youtube.com/watch?v=4Ab1O-i4ep4'
-                            },
-                        'Play the Goddamned Part': {
-                            'artist': 'Nine Inch Nails',
-                            'source': 'https://www.youtube.com/watch?v=85UgvBkMfr8'
-                            },
-                        'God Break Down the Door': {
-                            'artist': 'Nine Inch Nails',
-                            'source': 'https://www.youtube.com/watch?v=eeJ_DzRJUI4'
-                            },
-                        'I\'m Not From This World': {
-                            'artist': 'Nine Inch Nails',
-                            'source': 'https://www.youtube.com/watch?v=9fjbcSUSt9w'
-                            },
-                        'Over and Out': {
-                            'artist': 'Nine Inch Nails',
-                            'source': 'https://www.youtube.com/watch?v=h-XlN3N2fis'
-                            }
+        if self.args.action == 'download':
+            return
+        elif self.args.action == 'add':
+            return
+        elif self.args.action == 'remove':
+            return
+        elif self.args.action == 'list':
+            lib.load()
+            for album, albumcontent in lib.albums.items():
+                for song, songcontent in albumcontent.items():
+                    print(album + ' - ' + song + ' by ' + songcontent['artist'])
+            return
+        elif self.args.action == 'test':
+            # Set up a test album
+            lib.albums['Bad Witch'] = {
+                    'Shit Mirror': {
+                        'artist': 'Nine Inch Nails',
+                        'source': 'https://www.youtube.com/watch?v=yeqjz5mXrLQ'
+                        },
+                    'Ahead of Ourselves': {
+                        'artist': 'Nine Inch Nails',
+                        'source': 'https://www.youtube.com/watch?v=4Ab1O-i4ep4'
+                        },
+                    'Play the Goddamned Part': {
+                        'artist': 'Nine Inch Nails',
+                        'source': 'https://www.youtube.com/watch?v=85UgvBkMfr8'
+                        },
+                    'God Break Down the Door': {
+                        'artist': 'Nine Inch Nails',
+                        'source': 'https://www.youtube.com/watch?v=eeJ_DzRJUI4'
+                        },
+                    'I\'m Not From This World': {
+                        'artist': 'Nine Inch Nails',
+                        'source': 'https://www.youtube.com/watch?v=9fjbcSUSt9w'
+                        },
+                    'Over and Out': {
+                        'artist': 'Nine Inch Nails',
+                        'source': 'https://www.youtube.com/watch?v=h-XlN3N2fis'
                         }
-                lib.save()
-                return
+                    }
+            lib.save()
+            return
 
 badwitch = BadWitch()
 badwitch.execute()