From 269aecb4478c4ed6e15e1b155f259d978b178d2e Mon Sep 17 00:00:00 2001 From: zlg Date: Sat, 16 Oct 2021 18:33:48 -0700 Subject: vgstash_cli: 'export' with no filename prints to stdout ZLG-Bug: 6 --- src/vgstash_cli.py | 17 +++++++++++----- tests/test_vgstash_cli.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 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() -- cgit v1.2.3-54-g00ecf