implement force-remove in manage.py, should only be used when relay is not running
[relay.git/.git] / relay / manage.py
1 import asyncio
2 import sys
3 import simplejson as json
4
5 from .actor import follow_remote_actor, unfollow_remote_actor
6 from . import CONFIG
7 from .database import DATABASE
8
9
10 def relay_list():
11     print('Connected to the following instances or relays:')
12     [print('-', relay) for relay in DATABASE['relay-list']]
13
14
15 def relay_follow():
16     if len(sys.argv) < 3:
17         print('usage: python3 -m relay.manage follow <target>')
18         exit()
19
20     target = sys.argv[2]
21
22     loop = asyncio.get_event_loop()
23     loop.run_until_complete(follow_remote_actor(target))
24
25     print('Sent follow message to:', target)
26
27
28 def relay_unfollow():
29     if len(sys.argv) < 3:
30         print('usage: python3 -m relay.manage unfollow <target>')
31         exit()
32
33     target = sys.argv[2]
34
35     loop = asyncio.get_event_loop()
36     loop.run_until_complete(unfollow_remote_actor(target))
37
38     print('Sent unfollow message to:', target)
39
40 def relay_forceremove():
41     if len(sys.argv) < 3:
42         print('usage: python3 -m relay.manage force-remove <target>')
43         exit()
44
45     target = sys.argv[2]
46
47     following = DATABASE.get('relay-list', [])
48
49     if target in following:
50         following.remove(target)
51         DATABASE['relay-list'] = following
52         with open('relay.jsonld', 'w') as f:
53             json.dump(DATABASE, f)
54         print('Removed target from DB:', target)
55
56
57 TASKS = {
58     'list': relay_list,
59     'follow': relay_follow,
60     'unfollow': relay_unfollow,
61     'force-remove': relay_forceremove
62 }
63
64
65 def usage():
66     print('usage: python3 -m relay.manage <task> [...]')
67     print('tasks:')
68     [print('-', task) for task in TASKS.keys()]
69     exit()
70
71
72 def main():
73     if len(sys.argv) < 2:
74         usage()
75
76     if sys.argv[1] in TASKS:
77         TASKS[sys.argv[1]]()
78     else:
79         usage()
80
81
82 if __name__ == '__main__':
83     main()