brag-sheet: add insert/update script, simplify SKILL.md
This commit is contained in:
parent
37002b305e
commit
eb8da9611e
2 changed files with 118 additions and 41 deletions
106
brag-sheet/scripts/brag_sheet.py
Normal file
106
brag-sheet/scripts/brag_sheet.py
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
#!/usr/bin/env python3
|
||||
# /// script
|
||||
# requires-python = ">=3.11"
|
||||
# dependencies = ["pymongo"]
|
||||
# ///
|
||||
"""Log entries to the notes.brag_sheet MongoDB collection.
|
||||
|
||||
Usage:
|
||||
brag_sheet.py add "<note>" "<context>" [--tags tag1,tag2]
|
||||
brag_sheet.py update <doc_id> [--note "..."] [--context "..."] [--tags tag1,tag2]
|
||||
"""
|
||||
|
||||
import sys
|
||||
from datetime import datetime
|
||||
from bson import ObjectId
|
||||
from pymongo import MongoClient
|
||||
|
||||
MONGO_URI = "mongodb://root:3wwfoUjyk2E2zWELXFlLuHqfw1ALlOp4pb2H5Vq3TImbMIHL2h1u8Jej2mjzCPl@docdb.connorrhodes.com:35563"
|
||||
|
||||
|
||||
def parse_tags(args, i):
|
||||
raw = args[i + 1]
|
||||
return [t.strip() for t in raw.split(",") if t.strip()], i + 2
|
||||
|
||||
|
||||
def handle_add(args):
|
||||
if len(args) < 2:
|
||||
print("Usage: brag_sheet.py add \"<note>\" \"<context>\" [--tags tag1,tag2]")
|
||||
sys.exit(1)
|
||||
|
||||
note = args[0]
|
||||
context = args[1]
|
||||
tags = ["work"]
|
||||
|
||||
i = 2
|
||||
while i < len(args):
|
||||
if args[i] == "--tags" and i + 1 < len(args):
|
||||
tags, i = parse_tags(args, i)
|
||||
else:
|
||||
print(f"Error: unknown argument '{args[i]}'")
|
||||
sys.exit(1)
|
||||
|
||||
client = MongoClient(MONGO_URI)
|
||||
result = client["notes"]["brag_sheet"].insert_one({
|
||||
"date": datetime.now(),
|
||||
"note": note,
|
||||
"context": context,
|
||||
"tags": tags,
|
||||
})
|
||||
print(f"Inserted: {result.inserted_id}")
|
||||
client.close()
|
||||
|
||||
|
||||
def handle_update(args):
|
||||
if not args:
|
||||
print("Usage: brag_sheet.py update <doc_id> [--note ...] [--context ...] [--tags tag1,tag2]")
|
||||
sys.exit(1)
|
||||
|
||||
doc_id = args.pop(0)
|
||||
updates = {}
|
||||
i = 0
|
||||
while i < len(args):
|
||||
if args[i] == "--note" and i + 1 < len(args):
|
||||
updates["note"] = args[i + 1]; i += 2
|
||||
elif args[i] == "--context" and i + 1 < len(args):
|
||||
updates["context"] = args[i + 1]; i += 2
|
||||
elif args[i] == "--tags" and i + 1 < len(args):
|
||||
updates["tags"], i = parse_tags(args, i)
|
||||
else:
|
||||
print(f"Error: unknown argument '{args[i]}'")
|
||||
sys.exit(1)
|
||||
|
||||
if not updates:
|
||||
print("Error: no fields to update")
|
||||
sys.exit(1)
|
||||
|
||||
client = MongoClient(MONGO_URI)
|
||||
result = client["notes"]["brag_sheet"].update_one(
|
||||
{"_id": ObjectId(doc_id)},
|
||||
{"$set": updates}
|
||||
)
|
||||
if result.matched_count:
|
||||
print(f"Updated {doc_id}: {list(updates.keys())}")
|
||||
else:
|
||||
print(f"Error: document {doc_id} not found")
|
||||
client.close()
|
||||
|
||||
|
||||
def main():
|
||||
args = sys.argv[1:]
|
||||
if not args:
|
||||
print(__doc__)
|
||||
sys.exit(1)
|
||||
|
||||
cmd = args.pop(0)
|
||||
if cmd == "add":
|
||||
handle_add(args)
|
||||
elif cmd == "update":
|
||||
handle_update(args)
|
||||
else:
|
||||
print(f"Error: unknown command '{cmd}'. Use 'add' or 'update'.")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue