diff options
| author | 2021-07-25 11:52:24 -0400 | |
|---|---|---|
| committer | 2021-07-26 22:55:42 -0400 | |
| commit | 2b0466bc32491791d2a3e3decc3bd90ff7fc7739 (patch) | |
| tree | 86fade64702e712622a2dd91925db353d24060a7 | |
| parent | underwriter: start new argument parser (diff) | |
add list tags and list cards
| -rw-r--r-- | example/underwriter.db | bin | 24576 -> 24576 bytes | |||
| -rw-r--r-- | natargs.py | 8 | ||||
| -rwxr-xr-x | underwriter | 73 |
3 files changed, 24 insertions, 57 deletions
diff --git a/example/underwriter.db b/example/underwriter.db Binary files differindex 19eea7b..2e270cc 100644 --- a/example/underwriter.db +++ b/example/underwriter.db @@ -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) |
