aboutsummaryrefslogtreecommitdiff
path: root/sbdata/__main__.py
diff options
context:
space:
mode:
authornea <romangraef@gmail.com>2022-03-12 01:57:57 +0100
committernea <romangraef@gmail.com>2022-03-12 01:57:57 +0100
commite7caa7a9ba0202c44ad02ea9fd37c27bd4336c26 (patch)
tree03bce4042c47e475a99dfe90bc1e7a31afe25358 /sbdata/__main__.py
downloadsbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.tar.gz
sbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.tar.bz2
sbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.zip
Initial commit
Diffstat (limited to 'sbdata/__main__.py')
-rw-r--r--sbdata/__main__.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/sbdata/__main__.py b/sbdata/__main__.py
new file mode 100644
index 0000000..596a51f
--- /dev/null
+++ b/sbdata/__main__.py
@@ -0,0 +1,36 @@
+import dataclasses
+import json
+import sys
+from typing import Any
+
+import questionary
+
+from sbdata.repo import Item
+from sbdata.task import Arguments, tasks
+
+
+class ObjectEncoder(json.JSONEncoder):
+
+ def default(self, o: Any) -> Any:
+ if isinstance(o, Item):
+ return o.internalname
+ if dataclasses.is_dataclass(o):
+ return o.__dict__
+ return super().default(o)
+
+
+def main():
+ args = Arguments(sys.argv)
+ task = args.get_value(
+ 'Task', tasks.get(args.task),
+ questionary.select('Which task do you want to execute?', choices=[
+ questionary.Choice(task.label, task) for task in tasks.values()
+ ]))
+ print("Selected task: " + task.label)
+ data = task.run(args)
+ if args.has_flag('json'):
+ print(json.dumps(data, cls=ObjectEncoder))
+
+
+if __name__ == '__main__':
+ main()