-
Notifications
You must be signed in to change notification settings - Fork 12
/
cliist.py
executable file
·157 lines (125 loc) · 5.87 KB
/
cliist.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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/usr/bin/env python3
from optparse import OptionParser
from lib import process, output, cache
from lib.utils import CliistException
USAGE = "usage: %prog [options] task_content|search_string|task_id"
DESC = """Simple Todoist console client.
If no options and arguments specified, all uncompleted tasks for today and overdue are listed.
Note: because ! is a special bash character, you can write %% instead of !!"""
def main():
parser = OptionParser(usage=USAGE,
description=DESC)
parser.add_option('-d', '--date',
dest='date',
default=None,
help='Todoist due date formatted in Todoist date format. Available when no other options specified and when adding or editing tasks. If using with --archive, date can only be a full iso formatted date. Example: 2014-12-1T10:11')
parser.add_option('-s', '--sort',
dest='order',
default=None,
help='Sort todoist tasks by content (c), priority (p) or due date (d). Available every time a list of tasks is listed.')
parser.add_option('-r', '--reverse',
dest='reverse',
action='store_true',
default=False,
help='Reverse the list. Available every time tasks, projects or labels are listed.')
parser.add_option('-e', '--edit',
dest='edit_id',
default=None,
help='Edit specified task content. Specify content with arguments.')
parser.add_option('-q', '--query',
dest='query',
default=None,
help='Query tasks using Todoist search queries as arguments.')
parser.add_option('-c', '--complete',
dest='complete',
action='store_true',
default=None,
help='Mark tasks completed (arguments are task ids or search queries).')
parser.add_option('-a', '--add',
dest='add_task',
action='store_true',
default=False,
help='Todoist add task where content as arguments.')
parser.add_option('-L', '--labels',
dest='labels',
action='store_true',
default=False,
help='List Todoist labels.')
parser.add_option('--info',
dest='info',
action='store_true',
default=False,
help='Add aditional info.')
parser.add_option('-P', '--projects',
dest='projects',
action='store_true',
default=False,
help='List Todoist projects.')
parser.add_option('-p', '--project-tasks',
dest='project_name',
default=False,
help='List Todoist project tasks.')
parser.add_option('-A', '--all',
dest='all',
action='store_true',
default=False,
help='List all uncompleted todoist tasks.')
parser.add_option('--archive',
dest='archive',
action='store_true',
help='If -p PROJECT is specified, show only completed tasks of that project. Date (-d) will be set as from date but it has to be in ISO format.')
parser.add_option('--limit',
dest='limit',
default=30,
help='Limit returned archive size.')
parser.add_option('--gte',
dest='gte_date',
default=None,
help='List tasks with due date greater or equal than GTE_DATE.')
parser.add_option('--lte',
dest='lte_date',
default=None,
help='List tasks with due date less or equal to LTE_DATE.')
parser.add_option('--gt',
dest='gt_date',
default=None,
help='List tasks with due date greater than GT_DATE.')
parser.add_option('--lt',
dest='lt_date',
default=None,
help='List tasks with due date less than LT_DATE.')
parser.add_option('--eqaul',
dest='eq_date',
default=None,
help='List tasks with due date equal to EQ_DATE.')
parser.add_option('--not-equal',
dest='neq_date',
default=None,
help='List tasks with due date not equal to NEQ_DATE.')
parser.add_option('--cached',
dest='cached',
action='store_true',
default=False,
help='List cached resultset.')
parser.add_option('-o', '--project',
dest='task_project',
default=None,
help='New task project (available only when adding a task).')
parser.add_option('-i', '--priority',
dest='task_priority',
default=False,
help='New task priority (available only when adding a task).')
parser.add_option('--format',
dest='format',
default='plain',
help='Select output format (default plain). Formats: '
+ ', '.join(output.formaters.keys()) + '.')
options, args = parser.parse_args()
try:
cache.load()
process.command(args, options)
cache.save()
except CliistException as msg:
print(msg)
if __name__ == '__main__':
main()