From cbf2dc42201ee56e0d2c9f565eee3208ef725aa2 Mon Sep 17 00:00:00 2001 From: davidovski Date: Sat, 30 Oct 2021 20:04:31 +0100 Subject: added notes to keep track of how everything should operate --- src/xi.py | 117 ++++++++++++++++++-------------------------------------------- 1 file changed, 34 insertions(+), 83 deletions(-) (limited to 'src/xi.py') diff --git a/src/xi.py b/src/xi.py index 0711f0a..2449328 100644 --- a/src/xi.py +++ b/src/xi.py @@ -1,88 +1,39 @@ -import sys +import options -options = { - "y" : { - "name" : "no-confirm", - "flag" : True, - "desc": "will not prompt the user" - }, - "r" : { - "name" : "root", - "flag" : False, - "desc" : "specify the directory to use as the system root", - "default" : "/" - }, - "h": { - "name": "help", - "flag" : True, - "desc" : "prints the command usage and exists the program", - } - } - -def parse_args(): - - # re-organise the options by name rather than by single letter - # a dict with "name": option_leter - names = { v["name"] if v["name"] else k : k for k,v in options.items()} - - args = sys.argv - index = 1 - - # save all of the options into a "parsed" dictionary - parsed = {"other" : []} - - while index < len(args): - arg = args[index] - - if len(arg) > 1 and arg[0] == "-": - option = None +def search(terms): + print(f"searching for {terms}") + pass - # is a named argument with a -- - if arg[1] == "-" and len(arg) > 2 and arg[2:].split("=")[0] in names: - option = names[arg[2:].split("=")[0]] - # is a single letter argument with a - - elif arg[1] in options: - option = arg[1] - else: - parsed["other"].append(arg) +def install(terms): + print(f"installing for {terms}") + pass - # add the option and any values ot the parsed dict - if option is not None: - if options[option]["flag"]: - parsed[option] = True - else: - if "=" in arg: - parsed[option] = arg.split("=")[1] - else: - index += 1 - parsed[option] = args[index] - else: - parsed["other"].append(arg) - +def remove(terms): + print(f"removing for {terms}") + pass - index += 1 - - # add all default values to the parsed options - for option in options: - if not option in parsed: - if options[option]["flag"]: - parsed[option] = False - else: - parsed[option] = options[option]["default"] - - return parsed - -def print_usage(): - for option,o in options.items(): - name = o["name"] - description = o["desc"] - d = ("[default=" + o["default"] + "]") if not o["flag"] else "" - - print(f"\t-{option}, --{name}\t{d}") - print(f"\t\t{description}\n") - - -opts = parse_args() -if opts["h"]: - print_usage() +verbs = { v: globals()[v] for v in [ + "search", + "install" + "remove" + ] + } +def main(): + opts = options.parse_args() + args = opts["args"] + + if opts["h"]: + options.print_usage() + return + + if len(args) > 0: + verb = args[0].lower() + ( + verbs[verb] if verb in verbs else search + )( + args[1:] if len(args) > 1 else [] + ) + else: + options.print_usage() + return -- cgit v1.2.1