-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
114 lines (78 loc) · 5.55 KB
/
main.py
File metadata and controls
114 lines (78 loc) · 5.55 KB
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
import argparse
from commands.config import set_config, get_config, remove_config, reset_config, view_configs
from commands.organise import organise
from commands.rename import rename
from commands.task import add_task, remove_task, edit_task, view_task, sort_task
from commands.search import search
from commands.shortcut import add_shortcut, remove_shortcut, view_shortcut, run_shortcut
from validators.config_validators import validate_key, validate_feature
parser = argparse.ArgumentParser(description="Developer Productivity CLI", usage="devcli <command> [options]")
subparsers = parser.add_subparsers(title="Commands", metavar="<command>")
organise_parser = subparsers.add_parser("organize",help="organize files", description="organize files")
organise_parser.set_defaults(func=organise)
rename_parser = subparsers.add_parser("rename",help="rename files", description="rename files")
rename_parser.set_defaults(func=rename)
#Task Parser
task_parser = subparsers.add_parser("task",help="manage tasks", description="Manage tasks from the command line", usage="devcli task <command> [options]")
task_actions_parser = task_parser.add_subparsers(title="Commands", metavar="<command>")
task_add_parser = task_actions_parser.add_parser("add", help="add a new task", usage="devcli task add <name> <description> [options]") # Add task
task_add_parser.add_argument("task_name")
task_add_parser.add_argument("task_description")
task_add_parser.add_argument("-p","--priority", choices=["H", "M", "L", "h", "m", "l"], default="M")
task_add_parser.add_argument("-s","--status", choices=["Pending", "Ongoing", "Completed", "pending", "ongoing", "completed"], default="Pending")
task_add_parser.set_defaults(func=add_task)
task_view_parser = task_actions_parser.add_parser("view", help="view tasks", usage="devcli task view [options]") # View task
task_view_parser.add_argument("-id","--task-id",type=int)
task_view_parser.set_defaults(func=view_task)
task_remove_parser = task_actions_parser.add_parser("remove", help="remove a task", usage="devcli task remove <id>") # Remove task
task_remove_parser.add_argument("id", type=int)
task_remove_parser.set_defaults(func=remove_task)
task_edit_parser = task_actions_parser.add_parser("edit", help="edit a task", usage="devcli task edit <id> [options]") # Edit task
task_edit_parser.add_argument("id", type=int)
task_edit_parser.add_argument("-n","--name")
task_edit_parser.add_argument("-d","--description")
task_edit_parser.add_argument("-p","--priority", choices=["H", "M", "L", "h", "m", "l"])
task_edit_parser.add_argument("-s","--status", choices=["Pending", "Ongoing", "Completed", "pending", "ongoing", "completed"])
task_edit_parser.set_defaults(func=edit_task)
task_sort_parser = task_actions_parser.add_parser("sort", help="sort tasks", usage="devcli task sort --by <field>") # Sort task
task_sort_parser.add_argument("-by","--sort-by", choices=["name","status","created at","priority"])
task_sort_parser.add_argument("-d","--desc", action="store_true")
task_sort_parser.set_defaults(func=sort_task)
#Search Parser
search_parser = subparsers.add_parser("search")
search_parser.set_defaults(func=search)
#Config Parser
config_parser = subparsers.add_parser("config", help="manage config", description="Manage CLI configuration and defaults", usage="devcli config <command> [options]")
config_actions_parser = config_parser.add_subparsers(title="Commands", metavar="<command>")
config_set_parser = config_actions_parser.add_parser("set", help="set a configuration value", usage="devcli config set <feature.property> <value>") # Set config
config_set_parser.add_argument("key", type=validate_key)
config_set_parser.add_argument("value")
config_set_parser.set_defaults(func=set_config)
config_get_parser = config_actions_parser.add_parser("get", help="get a configuration value") # Get config
config_get_parser.add_argument("key", type=validate_key)
config_get_parser.set_defaults(func=get_config)
config_remove_parser = config_actions_parser.add_parser("remove", help="remove a configuration") # Remove config
config_remove_parser.add_argument("key", type=validate_key)
config_remove_parser.set_defaults(func=remove_config)
config_reset_parser = config_actions_parser.add_parser("reset", help="reset configuration") # Reset config
config_reset_parser.add_argument("feature", type=validate_feature)
config_reset_parser.add_argument("-f", "--force", action="store_true")
config_reset_parser.set_defaults(func=reset_config)
config_view_parser = config_actions_parser.add_parser("view", help="view all configurations") # View config
config_view_parser.set_defaults(func=view_configs)
#Shortcut parser
shortcut_parser = subparsers.add_parser("shortcut", help="manage shortcuts", description="Create and run command shortcuts", usage="devcli shortcut <command> [options]")
shortcut_actions_parser = shortcut_parser.add_subparsers(title="Commands", metavar="<command>")
shortcut_add_parser = shortcut_actions_parser.add_parser("add", help="add a shortcut") # Add shortcut
shortcut_add_parser.set_defaults(func=add_shortcut)
shortcut_remove_parser = shortcut_actions_parser.add_parser("remove", help="remove a shortcut") # Remove shortcut
shortcut_remove_parser.set_defaults(func=remove_shortcut)
shortcut_view_parser = shortcut_actions_parser.add_parser("view", help="view shortcuts") # View shortcut
shortcut_view_parser.set_defaults(func=view_shortcut)
shortcut_run_parser = shortcut_actions_parser.add_parser("run", help="run a shortcut") # Run shortcut
shortcut_run_parser.set_defaults(func=run_shortcut)
args = parser.parse_args()
if hasattr(args,"func"):
args.func(args)
else :
parser.print_help()