diff options
author | nea <romangraef@gmail.com> | 2022-03-12 01:57:57 +0100 |
---|---|---|
committer | nea <romangraef@gmail.com> | 2022-03-12 01:57:57 +0100 |
commit | e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26 (patch) | |
tree | 03bce4042c47e475a99dfe90bc1e7a31afe25358 /sbdata/__main__.py | |
download | sbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.tar.gz sbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.tar.bz2 sbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.zip |
Initial commit
Diffstat (limited to 'sbdata/__main__.py')
-rw-r--r-- | sbdata/__main__.py | 36 |
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() |