From 411e47351c996aa1d1f19dc10366ee824d091b40 Mon Sep 17 00:00:00 2001 From: zlg Date: Wed, 10 Oct 2018 20:49:02 -0700 Subject: cli: Add "export" command The export command is like the import command; currently supporting YAML output, but ready to be expanded as needed. --- src/vgstash_cli.py | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'src/vgstash_cli.py') diff --git a/src/vgstash_cli.py b/src/vgstash_cli.py index 5f69c47..72a751a 100644 --- a/src/vgstash_cli.py +++ b/src/vgstash_cli.py @@ -120,7 +120,6 @@ def list_games(filter, raw, width): notes = notes.replace('\r', '\\r') else: notes = '' - if raw: click.echo("|".join(( r['title'], @@ -209,6 +208,7 @@ def notes(title, system, edit): dir_okay=False, file_okay=True), default=sys.stdin, + required=False, ) def import_file(format, filepath, update): """ @@ -236,3 +236,39 @@ def import_file(format, filepath, update): except sqlite3.IntegrityError as e: count -= 1 click.echo("Successfully imported {} games from {}.".format(count, filepath)) + + +@cli.command("export") +@click.option("--format", "-f", type=click.Choice(["yaml"]), required=False, default="yaml") +@click.argument("filepath", + type=click.Path( + exists=False, + readable=True, + writable=True, + resolve_path=True, + dir_okay=False, + file_okay=True), + default=sys.stdout, + required=False, + ) +def export_file(format, filepath): + """ + Export the game database to a file written in the chosen format. + + The default format is YAML. + """ + db = get_db() + data = db.list_games() + game_set = [] + # Time to re-read master's code + if format == "yaml": + for game in data: + g = {} + for field in game.keys(): + g.update({field: game[field]}) + game_set.append(g) + with open(filepath, "w") as fp: + yaml.dump(game_set, fp, default_flow_style=False, + indent=4, allow_unicode=True) + click.echo("Successfully exported 6 games to {}.".format(os.path.join(os.getcwd(), "test_export.yml"))) + -- cgit v1.2.3-54-g00ecf