-
Notifications
You must be signed in to change notification settings - Fork 0
/
parser.py
96 lines (83 loc) · 5.26 KB
/
parser.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
#!/usr/bin/env python
import sys, argparse
from textwrap import dedent
class Parser():
def __init__(self, obj):
mainDesc = dedent('''\
Transfer contacts between your pump.io accounts
For more help run pumpmigrate.py {move,sync} -h
''')
self.parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter,
description=mainDesc)
self.parser.add_argument('-v', '--version', action='version', version='%s %s' % (obj.name, obj.version))
subparsers = self.parser.add_subparsers(dest='subcommand', title='subcommands')
moveDesc = dedent('''\
Move contacts between accounts.
example 1:
user@pump1 is following foo and user@pump2 is following bar.
pumpmigrate.py move -a user@pump1 user@pump2
user@pump1 is not following anyone, and user@pump2 is following foo and bar.
example 2:
user@pump1 is following foo and user@pump2 is following bar.
pumpmigrate.py move -a user@pump1 user@pump2 --no-unfollow
user@pump1 is still following foo, and user@pump2 is following foo and bar.
''')
move = subparsers.add_parser('move', help='Move contacts between accounts',
formatter_class=argparse.RawDescriptionHelpFormatter,
description=moveDesc)
move.add_argument('-a', '--accounts', nargs=2, metavar='webfinger', dest='webfingers',
help='The accounts to move contacts between')
move.add_argument('--quiet', action='store_true', dest='quiet',
help='Do not print any output')
move.add_argument('--no-follow', action='store_true', dest='nofollow',
help='Do not follow any contacts')
move.add_argument('--no-unfollow', action='store_true', dest='nounfollow',
help='Do not unfollow any contacts')
move.add_argument('--continue', action='store_true', dest='noprompt',
help='Do not prompt before actions, just continue')
move.add_argument('--dry-run', action='store_true', dest='dryrun',
help='Do not actually follow/unfollow any contacts')
move.set_defaults(func=obj.move)
syncDesc = dedent('''\
Sync contacts between accounts.
example:
user@pump1 is following foo and user@pump2 is following bar.
pumpmigrate.py sync -a user@pump1 user@pump2
user@pump1 and user@pump2 are now both following foo and bar.''')
sync = subparsers.add_parser('sync', help='Sync contacts between accounts',
formatter_class=argparse.RawDescriptionHelpFormatter,
description=syncDesc)
sync.add_argument('-a', '--accounts', nargs=2, metavar='webfinger', dest='webfingers',
help='The accounts to sync contacts between')
sync.add_argument('--quiet', action='store_true', dest='quiet',
help='Do not print any output')
sync.add_argument('--continue', action='store_true', dest='noprompt',
help='Do not prompt before actions, just continue')
sync.add_argument('--dry-run', action='store_true',
dest='dryrun', help='Do not actually follow/unfollow any contacts')
sync.set_defaults(func=obj.sync)
loadDesc = dedent('''\
Follow contacts from file, file contents should be
in the format of ["foo@bar", "foz@baz"]
example:
pumpmigrate.py load my_contacts.json
''')
load = subparsers.add_parser('load', help='Follow contacts from file',
formatter_class=argparse.RawDescriptionHelpFormatter,
description=loadDesc)
load.add_argument('-a', '--account', metavar='webfinger', dest='webfinger',
help='The account to load contacts into')
load.add_argument('--quiet', action='store_true', dest='quiet',
help='Do not print any output')
load.add_argument('--continue', action='store_true', dest='noprompt',
help='Do not prompt before actions, just continue')
load.add_argument('--dry-run', action='store_true',
dest='dryrun', help='Do not actually follow/unfollow any contacts')
load.add_argument('filename', metavar='FILE',
help='Path to file with list of contacts')
load.set_defaults(func=obj.load)
if len(sys.argv) < 2:
# show help if no args
self.args = self.parser.parse_args(['--help'])
else:
self.args = self.parser.parse_args()