commit 182e63479f31554e53bda340f525962d06e8d6ab
parent 2c0e6b4f791bd12cdf8930bd79f5e07bfd488e06
Author: GeaRSiX <gearsix@tuta.io>
Date:   Sun, 26 Jul 2020 13:21:19 +0100
dotfm now accepts multiple args for DOTFILE;
The DOTFILE arg now consumes and leftover arguments.
Had to rewrite dotfm_list to handle this.
The rest of the functions are the same and "dotfile" is just looped
through in main.
Diffstat:
| M | src/dotfm.py | | | 53 | ++++++++++++++++++++++++++++++++++------------------- | 
1 file changed, 34 insertions(+), 19 deletions(-)
diff --git a/src/dotfm.py b/src/dotfm.py
@@ -59,7 +59,7 @@ def parse_arguments():
     
     parser = argparse.ArgumentParser(description='a simple tool to help you manage your dot files, see \"man dotfm\" for more.')
     parser.add_argument('cmd', metavar='COMMAND', choices=valid_commands, help='the dotfm COMMAND to execute: {}'.format(valid_commands))
-    parser.add_argument('dotfile', metavar='DOTFILE', help='the target dotfile to execute COMMAND on')
+    parser.add_argument('dotfile', metavar='DOTFILE', nargs=argparse.REMAINDER, help='the target dotfile to execute COMMAND on')
     parser.add_argument('-d', '--debug', action='store_true', help='display debug logs')
     parser.add_argument('-v', '--version', action='version', version='%(prog)s {}'.format(VERSION))
     ARGS = parser.parse_args()
@@ -236,25 +236,37 @@ def dotfm_edit(dotfile_alias):
     if target == '':
         error_exit('could not find alias {} in installed.csv'.format(os.path.basename(dotfile)))
 
-def dotfm_list(dotfile):
-    LOGGER.info('listing dotfm files')
+def dotfm_list(dotfiles):
+    LOGGER.info('listing dotfm files: {}'.format('all' if len(dotfiles) == 0 else dotfiles))
 
     found = False
-    LOGGER.info('\t{} Location'.format('Aliases...'.ljust(35)))
-    for dfl in INSTALLED_DOTFILES:
-        # list all dotfile locations
-        if dotfile == 'all':
-            dfln = '"' + '", "'.join(dfl[1:]) + '"'
-            LOGGER.info('\t{} {} -> {}'.format(dfln.ljust(35), dfl[0], os.path.realpath(dfl[0])))
-        # list specific dotfile location
-        else:
-            for name in dfl:
-                if dotfile == name:
-                    found = True
-                    dfln = '"' + '", "'.join(dfl[1:]) + '"'
-                    LOGGER.info('\t{} {} -> {}'.format(dfln.ljust(35), dfl[0], os.path.realpath(dfl[0])))
+    printout = [ # string arr, 1 elem for each row
+        '\t{} Location'.format('Aliases...'.ljust(35)),
+    ]
+
+    # list all dotfiles
+    if len(dotfiles) == 0:
+        for dfl in INSTALLED_DOTFILES:
+            aliases = ('"'+'", "'.join(dfl[1:])+'"')
+            location = dfl[0]
+            if os.path.realpath(dfl[0]) != location:
+                location += ' -> {}'.format(os.path.realpath(dfl[0]))
+            printout.append('\t{} {}'.format(aliases.ljust(35), location))
+    # list specified dotfiles
+    else:
+        for dotfile in dotfiles:
+            for dfl in INSTALLED_DOTFILES:
+                if dotfile in dfl:
+                    aliases = ('"'+'", "'.join(dfl[1:])+'"')
+                    location = dfl[0]
+                    if os.path.realpath(dfl[0]) != location:
+                        location += ' -> {}'.format(os.path.realpath(dfl[0]))
+                    printout.append('\t{} {}'.format(aliases.ljust(35), location))
                     break
 
+    for p in printout:
+        LOGGER.info(p)
+
 #------
 # MAIN
 #------
@@ -278,11 +290,14 @@ if __name__ == '__main__':
 
     # run command
     if command == 'install':
-        dotfm_install(os.path.abspath(dotfile))
+        for d in dotfile:
+            dotfm_install(os.path.abspath(d))
     elif command == 'remove':
-        dotfm_remove(dotfile)
+        for d in dotfile:
+            dotfm_remove(d)
     elif command == 'edit':
-        dotfm_edit(dotfile)
+        for d in dotfile:
+            dotfm_edit(d)
     elif command == 'list':
         dotfm_list(dotfile)