diff options
-rw-r--r-- | src/vgstash/test_vgstash_cli.py | 39 | ||||
-rw-r--r-- | src/vgstash_cli.py | 37 |
2 files changed, 40 insertions, 36 deletions
diff --git a/src/vgstash/test_vgstash_cli.py b/src/vgstash/test_vgstash_cli.py index d0def8b..7306a7d 100644 --- a/src/vgstash/test_vgstash_cli.py +++ b/src/vgstash/test_vgstash_cli.py @@ -83,49 +83,52 @@ def test_list_filter(): )) def test_list_pretty(): + print() runner = CliRunner() result = runner.invoke(vgstash_cli.cli, ['list', '-w', '80']) if verbose: print(result.output) assert result.exit_code == 0 assert result.output == '\n'.join(( - ' ID | Title | System | Own | Status ', + ' ID | Title | System | Own | Progress ', '--------------------------------------------------------------------------------', - ' 3 | Sonic the Hedgehog 2 | Genesis | | C', - ' 4 | Vectorman | Genesis | | C', - ' 5 | Vectorman 2 | Genesis | P | B ', - ' 1 | Super Mario Bros. | NES | P | B ', - ' 2 | The Legend of Zelda | NES | D | B \n' + ' 3 | Sonic the Hedgehog 2 | Genesis | | B', + ' 4 | Vectorman | Genesis | | B', + ' 5 | Vectorman 2 | Genesis | P | P ', + ' 1 | Super Mario Bros. | NES | P | P ', + ' 2 | The Legend of Zelda | NES | D | P \n', )) def test_list_pretty_smaller(): + print() runner = CliRunner() result = runner.invoke(vgstash_cli.cli, ['list', '-w', '60']) if verbose: print(result.output) assert result.exit_code == 0 assert result.output == '\n'.join(( - ' ID | Title | System | Own | Status ', + ' ID | Title | System | Own | Progress ', '------------------------------------------------------------', - ' 3 | Sonic the Hedgehog 2 | Genesis | | C', - ' 4 | Vectorman | Genesis | | C', - ' 5 | Vectorman 2 | Genesis | P | B ', - ' 1 | Super Mario Bros. | NES | P | B ', - ' 2 | The Legend of Zelda | NES | D | B \n' + ' 3 | Sonic the Hedgehog 2 | Genesis | | B', + ' 4 | Vectorman | Genesis | | B', + ' 5 | Vectorman 2 | Genesis | P | P ', + ' 1 | Super Mario Bros. | NES | P | P ', + ' 2 | The Legend of Zelda | NES | D | P \n' )) def test_list_pretty_tiny(): + print() runner = CliRunner() result = runner.invoke(vgstash_cli.cli, ['list', '-w', '50']) if verbose: print(result.output) assert result.exit_code == 0 assert result.output == '\n'.join(( - ' ID | Title | System | Own | Status ', + ' ID | Title | System | Own | Progress ', '--------------------------------------------------', - ' 3 | Sonic the Hedge | Genesis | | C', - ' 4 | Vectorman | Genesis | | C', - ' 5 | Vectorman 2 | Genesis | P | B ', - ' 1 | Super Mario Bro | NES | P | B ', - ' 2 | The Legend of Z | NES | D | B \n' + ' 3 | Sonic the Hedg | Genesis | | B', + ' 4 | Vectorman | Genesis | | B', + ' 5 | Vectorman 2 | Genesis | P | P ', + ' 1 | Super Mario Br | NES | P | P ', + ' 2 | The Legend of | NES | D | P \n' )) diff --git a/src/vgstash_cli.py b/src/vgstash_cli.py index e4d1a32..5aada8c 100644 --- a/src/vgstash_cli.py +++ b/src/vgstash_cli.py @@ -28,24 +28,24 @@ def init(): else: raise sqlite3.OperationalError("Cannot create schema.") + def row_format(row, width, header): """ - TODO + Prints a row from the result set into a nice table. """ - # There's another way to do this, involving gathering the entire results and - # *then* formatting them. That is incredibly wasteful of resources imo, so - # it may need some testing to see if it's better. Ideally, we'd only make - # the table as wide as needed; that can't happen unless we know the longest - # title's length... - - twidth = int(width) - 35 + # The magic number comes from: + # game ID (4) + # system name (8) + # ownership (3) + # progress (9) + twidth = int(width) - 36 if header == True: - click.echo("{:^4s} | {:<{w}s} | {:<8s} | {:^3s} | {:<7s}".format( + click.echo("{:^4s} | {:<{w}s} | {:<8s} | {:^3s} | {:<9s}".format( "ID", "Title", "System", "Own", - "Status", + "Progress", w=twidth) ) click.echo("-" * int(width)) @@ -56,15 +56,16 @@ def row_format(row, width, header): # unowned, physical, digital, both ownltr = [' ', 'P', ' D', 'P D'] ownstr = "{: <3s}".format(ownltr[row['ownership']]) - statltr = { - -1: 'U', - 0: 'N', - 1: 'P', - 2: 'B', - 3: 'C' + progltr = { + 0: '', + 1: 'N', + 2: 'P', + 3: 'B', + 4: 'C' } - statstr = "{: <7s}".format((" " * row['progress'] * 2) + statltr[row['progress']]) - print(" | ".join((gidstr, titlestr, systemstr, ownstr, statstr))) + progstr = "{: <7s}".format((" " * row['progress'] * 2) + progltr[row['progress']]) + print(" | ".join((gidstr, titlestr, systemstr, ownstr, progstr))) + @cli.command('add') @click.argument('title', type=str) |