summaryrefslogtreecommitdiff
path: root/src/options.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/options.py')
-rw-r--r--src/options.py121
1 files changed, 0 insertions, 121 deletions
diff --git a/src/options.py b/src/options.py
deleted file mode 100644
index f3f83d5..0000000
--- a/src/options.py
+++ /dev/null
@@ -1,121 +0,0 @@
-import sys
-
-options = {
- "h": {
- "name": "help",
- "flag" : True,
- "desc" : "prints the command usage and exists the program",
- },
- "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" : "/"
- },
- "l": {
- "name" : "no-sync",
- "flag" : True,
- "desc" : "skip syncing with repo sources (not recommended)"
- },
- "u": {
- "name" : "unsafe",
- "flag" : True,
- "desc" : "skip any checksum or signature verification"
- },
- "n": {
- "name" : "no-deps",
- "flag" : True,
- "desc" : "do not resolve dependencies"
- },
- "v": {
- "name" : "verbose",
- "flag" : True,
- "desc" : "print more"
- },
- "c": {
- "name" : "config",
- "flag" : False,
- "desc" : "specify the configuration file to use",
- "default" : "/etc/xipkg.conf"
- }
- }
-
-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 = {"args" : []}
-
- while index < len(args):
- arg = args[index]
-
- if len(arg) > 1 and arg[0] == "-":
- option = []
-
- # is a named argument with a --
- if arg[1] == "-" and len(arg) > 2 and arg[2:].split("=")[0] in names:
- option.append(names[arg[2:].split("=")[0]])
- # is a single letter argument with a -
- else:
- for letter in arg[1:]:
- if letter in options:
- option.append(letter)
-
- if len(option) == 0:
- parsed["args"].append(arg)
-
-
- # add the option and any values ot the parsed dict
- for opt in option:
- if opt is not None:
- if options[opt]["flag"]:
- parsed[opt] = True
- else:
- if "=" in arg:
- parsed[opt] = arg.split("=")[1]
- else:
- index += 1
- parsed[opt] = args[index]
- else:
- parsed["args"].append(arg)
-
-
- 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")
-
- if "verbs" in globals():
- print("Available actions:")
- for verb in verbs:
- print(f"\t{verb}")
-
-
-