aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/vgstash/test_vgstash_cli.py39
-rw-r--r--src/vgstash_cli.py37
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)