diff --git a/triditko/__main__.py b/triditko/__main__.py index 1bb1b40..6009a83 100644 --- a/triditko/__main__.py +++ b/triditko/__main__.py @@ -4,6 +4,7 @@ from triditko.renderers import DrawItemNameRenderer from triditko.utils import align import json import importlib +import argparse def get_base_surface(screen_size, categories) -> (pg.Surface, (int, int)): """Returns a surface template with legend, suitable as a basis for rendering the rest. @@ -35,16 +36,47 @@ def main(): font = pgft.Font(None) #TODO: use argparse and reasonable stuff - categories = ['good', 'bad', 'ugly'] - bindings = { - pg.K_1: 'good', - pg.K_2: 'bad', - pg.K_3: 'ugly', - } + argp = argparse.ArgumentParser() + argp.add_argument('-c', '--categories', + action='store', + metavar='CATEGORIES', + default='S, A, B, C, D, F', + type=str, + help='categories to sort into (defaults to S,A,B,C,D,F)', + ) + argp.add_argument('-r', '--renderer', + action='store', + type=str, + default='triditko.renderers:DrawItemNameRenderer', + help='alternative renderer for items', + ) + argp.add_argument('-o', '--output', + action='store', + metavar='FILE', + type=str, + default='/dev/stdout', + help='output file (defaults to stdout)', + ) + argp.add_argument('-i', '--input', + action='store', + metavar='FILE', + type=str, + required=False, + default='/dev/stdin', + help='file with items (defaults to stdin)', + ) + args = argp.parse_args() + categories = [x.strip() for x in args.categories.split(',')] + with open(args.input, 'rt') as inputfile: + items = [line.strip() for line in inputfile if line.strip() != ''] + # XXX: We won't need these for a long timeā€¦ + renderer = args.renderer + outputfile = args.output + # TODO: customizable bindings! + if len(categories) > 10: + raise NotImplementedError('Too many categories, cannot automatically assign keybindings.') + bindings = {pg.key.key_code(str(key)): cat for key, cat in zip(range(1, 10+1), categories)} escape_char = pg.K_ESCAPE - items = [f'item_{i}' for i in range(20)] - renderer = 'triditko.renderers:DrawItemNameRenderer' - outputfile = '/dev/stdout' result = {k: [] for k in categories}