aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/vgstash_cli.py17
-rw-r--r--tests/test_vgstash_cli.py49
2 files changed, 61 insertions, 5 deletions
diff --git a/src/vgstash_cli.py b/src/vgstash_cli.py
index 7b9a9b4..29f6026 100755
--- a/src/vgstash_cli.py
+++ b/src/vgstash_cli.py
@@ -294,7 +294,6 @@ def import_file(format, filepath, update):
resolve_path=True,
dir_okay=False,
file_okay=True),
- default=sys.stdout,
required=False,
)
def export_file(format, filepath):
@@ -317,14 +316,22 @@ def export_file(format, filepath):
for field in game.keys():
g.update({field: game[field]})
game_set.append(g)
- with open(filepath, "w") as fp:
+ if not filepath:
if format == "yaml":
- yaml.dump(game_set, fp, default_flow_style=False,
+ yaml.dump(game_set, sys.stdout, default_flow_style=False,
indent=4, allow_unicode=True)
if format == "json":
- json.dump(game_set, fp, allow_nan=False, indent=1, skipkeys=True, sort_keys=True)
+ json.dump(game_set, sys.stdout, allow_nan=False, indent=1, skipkeys=True, sort_keys=True)
+ else:
+ with open(filepath, "w") as fp:
+ if format == "yaml":
+ yaml.dump(game_set, fp, default_flow_style=False,
+ indent=4, allow_unicode=True)
+ if format == "json":
+ json.dump(game_set, fp, allow_nan=False, indent=1, skipkeys=True, sort_keys=True)
if len(game_set) > 0:
- click.echo("Successfully exported {} games to {}.".format(len(game_set), filepath))
+ if filepath:
+ click.echo("Successfully exported {} games to {}.".format(len(game_set), filepath))
else:
click.echo("Could not export any games; have you made sure your collection has games in it?")
diff --git a/tests/test_vgstash_cli.py b/tests/test_vgstash_cli.py
index e24c5a4..c6fa39d 100644
--- a/tests/test_vgstash_cli.py
+++ b/tests/test_vgstash_cli.py
@@ -342,6 +342,55 @@ def test_import_file_yaml_update():
print(list_result.output)
assert list_result.exit_code == 0
+def test_export_no_file():
+ runner = CliRunner()
+ result = runner.invoke(vgstash_cli.cli, ["export"])
+ if verbose:
+ print(result.output)
+ assert result.exit_code == 0
+ assert result.output == """- notes: ''
+ ownership: 2
+ progress: 4
+ system: 3DS
+ title: The Legend of Zelda
+- notes: ''
+ ownership: 1
+ progress: 3
+ system: GBA
+ title: Fire Emblem
+- notes: ''
+ ownership: 0
+ progress: 3
+ system: Genesis
+ title: Sonic the Hedgehog 2
+- notes: 'beep
+
+ boop'
+ ownership: 1
+ progress: 2
+ system: Genesis
+ title: Vectorman 2
+- notes: ''
+ ownership: 1
+ progress: 3
+ system: NES
+ title: Super Mario Bros.
+- notes: ''
+ ownership: 2
+ progress: 2
+ system: NES
+ title: The Legend of Zelda
+- notes: ''
+ ownership: 2
+ progress: 4
+ system: Switch
+ title: Puyo Puyo Tetris
+- notes: ''
+ ownership: 2
+ progress: 3
+ system: WiiU
+ title: Super Smash Bros for WiiU
+"""
def test_export_file_json():
runner = CliRunner()