summary refs log tree commit diff stats
path: root/scripts/grus-add
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/grus-add')
-rwxr-xr-xscripts/grus-add54
1 files changed, 54 insertions, 0 deletions
diff --git a/scripts/grus-add b/scripts/grus-add
new file mode 100755
index 0000000..ec1eac8
--- /dev/null
+++ b/scripts/grus-add
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+
+import sys
+import sqlite3
+import argparse
+
+parser = argparse.ArgumentParser(description='grus-add')
+parser.add_argument('-f', '--file', type=str, required=False,
+                    help='file containing list of strings')
+parser.add_argument('-w', '--word', type=str, required=False,
+                    help='file containing list of strings')
+parser.add_argument('-d', '--db', type=str, required=True,
+                    help='database file')
+args = parser.parse_args()
+
+if __name__ == '__main__':
+    if args.file == None and args.word == None:
+            print("-f or -w required")
+            print("run grus-add --help to print help")
+            sys.exit(1)
+
+    conn = sqlite3.connect(args.db)
+    curs = conn.cursor()
+
+    stmt = """CREATE TABLE IF NOT EXISTS words (
+    word   TEXT PRIMARY KEY NOT NULL,
+    sorted TEXT NOT NULL);"""
+    curs.execute(stmt)
+    conn.commit()
+
+    stmt = """INSERT INTO words(word, sorted)
+    VALUES(?, ?);"""
+
+    if args.file != None:
+        rows = []
+        with open(args.file) as words:
+            for word in words:
+                word = word.strip()
+                lexical = ''.join(sorted(word))
+                rows.append((word, lexical))
+                print(len(rows))
+                sys.stdout.write('\x1b[1A')
+                sys.stdout.write('\x1b[2K')
+        curs.executemany(stmt, rows)
+
+    elif args.word != None:
+        word = args.word.strip()
+        lexical = ''.join(sorted(word))
+        curs.execute(stmt, (word, lexical))
+
+    conn.commit()
+
+    curs.close()
+    conn.close()