summaryrefslogtreecommitdiff
path: root/src/vgstash_cli.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/vgstash_cli.py')
-rw-r--r--src/vgstash_cli.py38
1 files changed, 37 insertions, 1 deletions
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")))
+