summaryrefslogtreecommitdiff
path: root/src/xpit_/xpit.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/xpit_/xpit.py')
-rw-r--r--src/xpit_/xpit.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/xpit_/xpit.py b/src/xpit_/xpit.py
new file mode 100644
index 0000000..f6eefd0
--- /dev/null
+++ b/src/xpit_/xpit.py
@@ -0,0 +1,53 @@
+from sys import argv, stdout
+from . import args_helpers, init, create, list_
+
+help_text = """\
+xpit - cross-platform issue tracker
+Usage: xpit <COMMAND> [options]
+<COMMAND>:
+ init:
+ Initialize issue tracker in current directory.
+ create:
+ Create new issue or reply.
+ list:
+ List issues.
+Options:
+ -h, --help
+ Print this help text. `xpit <COMMAND> -h` for help with specific command.
+"""
+
+class Args:
+ def __init__(self) -> None:
+ pass
+
+ def parse(self) -> bool:
+ flag_value_map = {
+ "help|h": 0,
+ }
+ res = args_helpers.parse_generic(flag_value_map, argv, 1)
+ if res is None:
+ return False
+ if "help" in res:
+ stdout.write(help_text)
+ return False
+
+ return True
+args = Args()
+
+def main() -> int:
+ if len(argv) <= 1:
+ stdout.write(help_text)
+ return 1
+
+ elif argv[1] == "init":
+ return init.main()
+ elif argv[1] == "create":
+ return create.main()
+ elif argv[1] == "list":
+ return list_.main()
+ else:
+ if not args.parse():
+ return 1
+
+ return 0
+