aboutsummaryrefslogtreecommitdiff
path: root/sbdata/__main__.py
diff options
context:
space:
mode:
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()