aboutsummaryrefslogtreecommitdiff
path: root/sbdata/__main__.py
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()