-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
117 lines (89 loc) · 2.99 KB
/
main.py
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# flake8: noqa
import logging
import click
from api.conditional import Conditional
from api.connection import Connection
from api.container import Container
from api.note import Note
from api.rule import Rule
from api.task import Task
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
@click.group(chain=True)
@click.pass_context
def main(ctx):
ctx.obj = dict()
@main.command()
@click.option("--title", required=True)
@click.option("--text", required=True)
@click.argument("attr_keys", nargs=-1)
@click.argument("attr_vals", nargs=-1)
@click.pass_obj
def create_note(ctx, title, text, attr_keys, attr_vals):
attrs = dict(zip(attr_keys, attr_vals))
note = Note(title=title, text=text, attrs=attrs)
print("Note created: {}".format(note.title))
ctx[note.id] = note
@main.command()
@click.option("--note_id", required=True)
@click.option("--attr", required=True)
@click.option("--text", required=True)
@click.pass_obj
def modify_attr(ctx, note_id, attr, text):
ctx[note_id].attrs[attr] = text
@main.command()
@click.option("--endpoint_one_id", required=True)
@click.option("--endpoint_two_id", required=True)
@click.option("--text")
@click.pass_obj
def create_connection(ctx, endpoint_one_id, endpoint_two_id, text):
connection = Connection(endpoint_one=ctx[endpoint_one_id],
endpoint_two=ctx[endpoint_two_id],
text=text)
ctx[connection.id] = connection
@main.command()
@click.argument("note_ids", nargs=-1)
@click.pass_obj
def create_container(ctx, note_ids):
notes = [ctx[id] for id in note_ids]
container = Container(notes=notes)
ctx[container.id] = container
@main.command()
@click.option("--container_id", required=True)
@click.option("--note_id", required=True)
@click.pass_obj
def add_note_to_container(ctx, container_id, note_id):
ctx[container_id].add_note(ctx[note_id])
@main.command()
@click.option("--target", required=True)
@click.option("--condition", required=True)
@click.pass_obj
def create_conditional(ctx, target, condition):
cond = Conditional(target=target, condition=condition)
ctx[cond.id] = cond
@main.command()
@click.option("--container_id", required=True)
@click.option("--condition_id", required=True)
@click.argument("attrs", nargs=-1)
@click.pass_obj
def search_container(ctx, container_id, condition_id, attrs):
results = ctx[container_id].search_child_note_attrs(ctx[condition_id], attrs)
logger.log(results)
@main.command()
@click.option("--target", required=True)
@click.option("--add_text", required=True)
@click.option("--effect_location")
@click.pass_obj
def create_rule(ctx, target, add_text, effect_location):
rule = Rule(target=target, add_text=add_text, effect_location=effect_location)
ctx[rule.id] = rule
@main.command()
@click.pass_obj
def add_rule(ctx, container_id, rule_id):
ctx[container_id].add_rule(ctx[rule_id])
@main.command()
@click.pass_obj
def save_document(ctx, document_id):
pass
if __name__ == "__main__":
main()