summaryrefslogtreecommitdiff
path: root/src/vgstash_cli.py
diff options
context:
space:
mode:
authorzlg <zlg@zlg.space>2018-10-10 20:49:02 -0700
committerzlg <zlg@zlg.space>2018-10-10 20:49:02 -0700
commit411e47351c996aa1d1f19dc10366ee824d091b40 (patch)
tree03626608293d8382c1c1cb43ed229ac0cfe7638c /src/vgstash_cli.py
parentcli: Add "import" command (diff)
downloadvgstash-411e47351c996aa1d1f19dc10366ee824d091b40.tar.gz
vgstash-411e47351c996aa1d1f19dc10366ee824d091b40.tar.bz2
vgstash-411e47351c996aa1d1f19dc10366ee824d091b40.tar.xz
vgstash-411e47351c996aa1d1f19dc10366ee824d091b40.zip
cli: Add "export" command
The export command is like the import command; currently supporting YAML output, but ready to be expanded as needed.
Diffstat (limited to '')
-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")))
+
LOCATION point to a filezlg2-21/+20 It used to point to a directory, which would then look for .vgstash.db. This behavior was kind of backwards and I don't remember why I did it that way. This change gives users more control over where they put their DB. Be sure to update your environment variable if you have it set! 2016-11-18Remove settings from helpers.shZe Libertine Gamer1-5/+0 Sourcing them in .bash_profile screws up login if they're set. 2016-11-15Correct phrasing in README.Ze Libertine Gamer1-4/+4 2016-11-13DerpZe Libertine Gamer1-0/+1 2016-11-03Improve error handling in shell scriptsZe Libertine Gamer4-3/+23 2016-10-24Correct run_again, add recursionZe Libertine Gamer1-0/+4 Loops and functions -- oh my, what a useful combination. :) 2016-10-21Add quotes to correct behavior for arglistZe Libertine Gamer1-1/+1 2016-10-14updater.sh: add recursion, error handlingZe Libertine Gamer1-43/+101 2016-10-14Correct pipe-handling behaviorZe Libertine Gamer1-1/+9 2016-10-12Clarify a method to move between platformsZe Libertine Gamer1-2/+5 Also correct a typo.