1+ import time ,os ,sys
2+
3+ usage = "Usage :-\n $ ./task add 2 'hello world' # Add a new item with priority 2 and text \" hello world\" to the list\n $ ./task ls # Show incomplete priority list items sorted by priority in ascending order\n $ ./task del INDEX # Delete the incomplete item with the given index\n $ ./task done INDEX # Mark the incomplete item with the given index as complete\n $ ./task help # Show usage\n $ ./task report # Statistics ( list complete/incomplete task )"
4+
5+ def func ():
6+ try :
7+
8+ # printing help
9+ if sys .argv [1 ]== "help" :
10+ print (usage )
11+ return usage
12+
13+ # lisiting all the task
14+ if sys .argv [1 ]== "ls" :
15+ try :
16+ f = open ("path/to/plans/task.txt" ,'r' )
17+ data = f .read ()
18+ datalist = data .split ("\n " )
19+ datalist = sorted (datalist )
20+ datalist = datalist [1 :]
21+ # print(datalist)
22+ for i in range (len (datalist )):
23+ print (f"{ i + 1 } . { datalist [i ][2 :]} [{ datalist [i ][0 :1 ]} ]" )
24+
25+ except :
26+ print ("Error: Missing file" )
27+
28+
29+
30+ # adding the task
31+ if sys .argv [1 ]== "add" :
32+ try :
33+ with open ("path/to/plans/task.txt" ,'a' ,encoding = 'utf-8' ) as f :
34+ res = f .write (f"{ sys .argv [2 ]} { sys .argv [3 ]} \n " )
35+ except :
36+ print ("Error: Missing tasks string. Nothing added!" )
37+ else :
38+ print (f"Added task: \" { sys .argv [3 ]} \" with priority { sys .argv [2 ]} " )
39+
40+
41+
42+ # deleting the task
43+ if sys .argv [1 ]== "del" :
44+ lineno = int (sys .argv [2 ])
45+ try :
46+ with open ("path/to/plans/task.txt" ,"r+" ) as f :
47+ new_f = f .readlines ()
48+ new_f = sorted (new_f )
49+ # print(new_f)
50+ del_f = new_f .pop (lineno - 1 )
51+ # print(new_f)
52+
53+ f .seek (0 )
54+ for line in new_f :
55+ if del_f not in line :
56+ f .write (line )
57+ f .truncate ()
58+ except :
59+ print (f"Error: item with index { lineno } does not exist. Nothing deleted." )
60+
61+
62+
63+ # marking done
64+ if sys .argv [1 ]== "done" :
65+ lineno = int (sys .argv [2 ])
66+ try :
67+ with open ("path/to/plans/task.txt" ,"r+" ) as f :
68+ new_f = f .readlines ()
69+ new_f = sorted (new_f )
70+ # print(new_f)
71+ del_f = new_f .pop (lineno - 1 )
72+ # print(new_f)
73+
74+ f .seek (0 )
75+ for line in new_f :
76+ if del_f not in line :
77+ f .write (line )
78+ with open ("path/to/plans/completed.txt" ,"a" ) as r :
79+ r .write (del_f )
80+ f .truncate ()
81+
82+
83+
84+ except :
85+ print (f"Error: no incomplete item with index #0 exists." )
86+ else :
87+ print (f"Marked item as done." )
88+
89+
90+ # generating the report
91+ if sys .argv [1 ]== "report" :
92+ try :
93+ task = open ("path/to/plans/task.txt" ,'r' )
94+ data = task .read ()
95+ datalist = data .split ("\n " )
96+ datalist = sorted (datalist )
97+ datalist = datalist [1 :]
98+ print (f"Pending : { len (datalist )} " )
99+ for i in range (len (datalist )):
100+ print (f"{ i + 1 } . { datalist [i ][2 :]} [{ datalist [i ][0 :1 ]} ]" )
101+
102+ compt = open ("path/to/plans/completed.txt" ,'r' )
103+ data = compt .read ()
104+ datalist = data .split ("\n " )
105+ datalist = sorted (datalist )
106+ datalist = datalist [1 :]
107+ print (f"Completed : { len (datalist )} " )
108+ for i in range (len (datalist )):
109+ print (f"{ i + 1 } . { datalist [i ][2 :]} [{ datalist [i ][0 :1 ]} ]" )
110+ except :
111+ print ("Error: Missing file" )
112+
113+ except :
114+ print (usage )
115+ return usage .encode ('utf8' )
116+
117+ func ()
0 commit comments