aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2021-07-25 11:52:24 -0400
committerGravatar - 2021-07-26 22:55:42 -0400
commit2b0466bc32491791d2a3e3decc3bd90ff7fc7739 (patch)
tree86fade64702e712622a2dd91925db353d24060a7
parentunderwriter: start new argument parser (diff)
add list tags and list cards
-rw-r--r--example/underwriter.dbbin24576 -> 24576 bytes
-rw-r--r--natargs.py8
-rwxr-xr-xunderwriter73
3 files changed, 24 insertions, 57 deletions
diff --git a/example/underwriter.db b/example/underwriter.db
index 19eea7b..2e270cc 100644
--- a/example/underwriter.db
+++ b/example/underwriter.db
Binary files differ
diff --git a/natargs.py b/natargs.py
index 8e96d2c..f1438a7 100644
--- a/natargs.py
+++ b/natargs.py
@@ -44,10 +44,13 @@ def getarg(dict, l):
return resolved
class Arguments:
+ def usage(self, i):
+ print(self.ustr)
+ sys.exit(i)
def execarg(self, args):
res = getarg(self.trie, args)
if res is None:
- raise Exception
+ self.usage(1)
return res[0](res[1])
def addarg(self, args, chk, f):
@@ -55,5 +58,6 @@ class Arguments:
raise ValueError
self.trie = addargs(self.trie, args, args, chk, f)
- def __init__(self):
+ def __init__(self, us):
self.trie = {}
+ self.ustr = us
diff --git a/underwriter b/underwriter
index 8b42c8f..0aa1f2a 100755
--- a/underwriter
+++ b/underwriter
@@ -108,55 +108,21 @@ END;
cur.rename_card(name, newname)
self.db.commit()
- def list_cards(self):
- return \
- self.db.execute("SELECT name FROM cards").fetchall()
- def list_tags(self):
- return \
- self.db.execute("SELECT name FROM tags").fetchall()
-
- def tags_for_cards(self, cards):
- return self.db.executemany("""
-SELECT tags.name FROM tagmap
-INNER JOIN tags on tagmap.tag = tags.id WHERE tagmap.card =
-(SELECT id FROM cards WHERE name = ? LIMIT 1);
- """, cards).fetchall()
-
- def tags_for_cards(self, cards):
- for c in cards:
- print(c)
- for (t,) in self.db.execute("""
- SELECT tags.name FROM tagmap
- INNER JOIN tags
- ON tagmap.tag = tags.id
- WHERE tagmap.card = (SELECT
- id FROM cards WHERE name = ?
- LIMIT 1);
- """, (c,)).fetchall():
- print(t)
- print("===================")
-
- def cards_for_tags(self, tags):
- for t in tags:
- print(t)
- for (c,) in self.db.execute("""
- SELECT cards.name FROM tagmap
- INNER JOIN cards
- ON tagmap.card = cards.id
- WHERE tagmap.tag = (SELECT
- id FROM tags WHERE name = ?
- LIMIT 1);
- """, (t,)).fetchall():
- print(c)
- print("===================")
+ def list_cards(self,n):
+ for (i,) in \
+ self.db.execute("SELECT name FROM cards").fetchall():
+ print(i)
+ def list_tags(self,n):
+ for (i,) in \
+ self.db.execute("SELECT name FROM tags").fetchall():
+ print(i)
def __init__(self, name):
if not os.path.isfile(name):
self.db = Context.initdb(name)
self.db = sqlite3.connect(name)
-def usage():
- print(
+usagestr = \
"""
underwriter [--database | -d file] [action]
@@ -164,30 +130,27 @@ tag file [tags...]: add a file to the database if it not already in
it, and add 0 or more tags to it
untag file [tags...]: remove tags from a file
-rename card new_name: rename a card
-remove files...: remove a file from the database
-
-list tags cards...: list tags for certain cards
-list cards tags...: list cards for certain tags
-""")
+list [tags | cards]: list all tags or cards in the database
+"""
if __name__ == "__main__":
args = sys.argv[1:]
db = "underwriter.db"
+
+ argparse = Arguments(usagestr)
+
if len(args) == 0:
- usage()
- sys.exit(1)
+ argparse.usage()
if args[0] == "--database" or args[0] == "-d":
db = args[1]
args = args[2:]
ctx = Context(db)
- argparse = Arguments()
argparse.addarg(["tag"], lambda x:x > 0, ctx.card_add_tags)
- argparse.addarg(["untag"], lambda x:x > 0, ctx.card_remove_tags)
- argparse.addarg(["list", "tags"], lambda x: x > 0, ctx.tags_for_cards)
- argparse.addarg(["list", "cards"], lambda x: x > 0, ctx.cards_for_tags)
+ argparse.addarg(["untag"], lambda x:x > 1, ctx.card_remove_tags)
+ argparse.addarg(["list", "tags"], lambda x: x == 0, ctx.list_tags)
+ argparse.addarg(["list", "cards"], lambda x: x == 0, ctx.list_cards)
argparse.execarg(args)