diff options
Diffstat (limited to '')
| -rw-r--r-- | src/vgstash_cli.py | 29 | 
1 files changed, 27 insertions, 2 deletions
| diff --git a/src/vgstash_cli.py b/src/vgstash_cli.py index f88187c..29c1de8 100644 --- a/src/vgstash_cli.py +++ b/src/vgstash_cli.py @@ -40,7 +40,7 @@ def row_format(row, width, header):      #    progress (9)      twidth = int(width) - 29      if header == True: -        click.echo("{:<{w}s} | {:<8s} | {:^3s} | {:<9s}".format( +        click.echo("{:<{w}s} | {:<8s} | {:^3s} | {}".format(              "Title",              "System",              "Own", @@ -61,7 +61,7 @@ def row_format(row, width, header):          3: 'B',          4: 'C'      } -    progstr = "{: <7s}".format((" " * row['progress'] * 2) + progltr[row['progress']]) +    progstr = "{}".format((" " * (row['progress'] - 1) * 2) + progltr[row['progress']])      print(" | ".join((titlestr, systemstr, ownstr, progstr))) @@ -139,3 +139,28 @@ def delete_game(title, system):      target_game = vgstash.Game(title, system)      if db.delete_game(target_game):          click.echo("Removed {} for {} from your collection.".format(title, system)) + + +@cli.command('update') +@click.argument('title', required=True) +@click.argument('system', required=True) +@click.argument('attr', type=click.Choice(['title', 'system', 'ownership', 'progress']), required=True) +@click.argument('val', required=True) +def update_game(title, system, attr, val): +    # TODO: Consider namedtuple as a solution +    db = get_db() +    target_game = db.get_game(title, system) +    if attr == 'ownership': +        val = vgstash.vtok(val, vgstash.OWNERSHIP) +    if attr == 'progress': +        val = vgstash.vtok(val, vgstash.PROGRESS) +    updated_game = vgstash.Game( +        val if attr == 'title' else target_game.title, +        val if attr == 'system' else target_game.system, +        val if attr == 'ownership' else target_game.ownership, +        val if attr == 'progress' else target_game.progress, +        target_game.notes +    ) +    if db.update_game(target_game, updated_game): +        click.echo("Updated {} for {}. Its {} is now {}.".format(title, system, attr, val)) +    pass | 
