]> git.phdru.name Git - m_librarian.git/blobdiff - scripts/ml-import.py
Feat(ml-import): Display tty progress bar during import
[m_librarian.git] / scripts / ml-import.py
index 0273ff67972e122b492947d5798b79ec837b0feb..56ff8a670df980b3ad09b6c0dd72646c8bfcf91d 100755 (executable)
@@ -1,14 +1,42 @@
 #! /usr/bin/env python
+from __future__ import print_function
 
+import argparse
 import sys
-from m_librarian.db import init_db, update_counters
-from m_librarian.glst import import_data
+
+from m_librarian.config import get_config
+from m_librarian.db import open_db, init_db, update_counters
+from m_librarian.glst import import_glst
 from m_librarian.inp import import_inpx
+from m_librarian.pbar import ttyProgressBar
+if ttyProgressBar:
+    from m_librarian.pbar import ml_ttyProgressBar
 
 if __name__ == '__main__':
-    if len(sys.argv) != 2:
-        sys.exit("Usage: %s file.inpx" % sys.argv[0])
+    parser = argparse.ArgumentParser(description='Import')
+    parser.add_argument('-C', '--config', help='configuration file')
+    parser.add_argument('-D', '--database', help='database URI')
+    parser.add_argument('-P', '--no-pbar', action='store_true',
+                        help='inhibit progress bar')
+    parser.add_argument('inpx', nargs='+', help='INPX files to import')
+    args = parser.parse_args()
+
+    if args.config:
+        get_config(args.config)  # Get and cache config file
+
+    open_db(args.database)
     init_db()
-    import_data()
-    import_inpx(sys.argv[1])
+    import_glst()
+    for inpx in args.inpx:
+        if ttyProgressBar and not args.no_pbar:
+            if len(inpx) > 25:
+                pbar_fname = inpx[:22] + '...'
+            else:
+                pbar_fname = inpx
+            print(pbar_fname.ljust(20), end=': ')
+            sys.stdout.flush()
+            pbar = ml_ttyProgressBar()
+            import_inpx(inpx, pbar_cb=pbar)
+        else:
+            import_inpx(inpx)
     update_counters()