blob: 596a51f0ed807de2287c829ee1e42e3bf9efa8b2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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()
|