diff options
Diffstat (limited to 'src/vgstash_cli.py')
-rw-r--r-- | src/vgstash_cli.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/vgstash_cli.py b/src/vgstash_cli.py index 29c1de8..6289dba 100644 --- a/src/vgstash_cli.py +++ b/src/vgstash_cli.py @@ -2,8 +2,11 @@ import vgstash import sqlite3 import click import os +import subprocess import sys +import tempfile +# Click also has this, but it doesn't support a fallback value. from shutil import get_terminal_size def get_db(): @@ -164,3 +167,32 @@ def update_game(title, system, attr, val): if db.update_game(target_game, updated_game): click.echo("Updated {} for {}. Its {} is now {}.".format(title, system, attr, val)) pass + + +@cli.command('notes') +@click.argument('title', required=True) +@click.argument('system', required=True) +@click.option('--edit', '-e', is_flag=True, default=False) +def notes(title, system, edit): + db = get_db() + target_game = db.get_game(title, system) + if edit: + with tempfile.NamedTemporaryFile() as tmpfile: + tmpfile.write(target_game.notes.encode("UTF-8")) + tmpfile.flush() + process = subprocess.run([os.getenv("EDITOR", "vim"), tmpfile.name]) + tmpfile.flush() + tmpfile.seek(0) + note_arr = [] + for line in tmpfile: + note_arr.append(line.decode("UTF-8").rstrip("\r\n")) + target_game.notes = "\n".join(note_arr) + db.update_game(target_game, target_game) + if process.returncode == 0: + click.echo("Notes for {} on {} have been updated!".format(target_game.title, target_game.system)) + else: + click.echo("Couldn't find an editor for notes. Check the EDITOR environment variable and try again.") + else: + click.echo("Notes for {} on {}:".format(target_game.title, target_game.system)) + click.echo() + click.echo(target_game.notes) |