@@ -88,14 +88,22 @@ def pause():
8888
8989
9090@task .command ()
91- @click .argument ("task_name" )
91+ @click .argument ("task_name" , required = False )
9292def start (task_name ):
9393 """
9494 - starts a new/existing task in current project.
9595 """
96+ data = data_handler .load_data ()
9697 state = data_handler .load_data (settings .state_filepath )
9798 project_name = state .get (settings .CURRENT_PROJECT )
98- if project_name :
99+ if project_name and data .get (project_name ):
100+ if task_name is None :
101+ num = len (data .get (project_name ).get ("tasks" , {}).keys ())
102+ while task_name is None or data .get (project_name ).get ("tasks" , {}).get (
103+ task_name , ""
104+ ):
105+ num += 1
106+ task_name = f"UNTITLED_{ num } "
99107 data_handler .update (
100108 partial (task_handler .create , project_name = project_name , task_name = task_name )
101109 )
@@ -141,3 +149,40 @@ def status():
141149 console .print ("[red bold]No active task." )
142150 else :
143151 console .print ("[red bold]No active project." )
152+
153+
154+ @task .command ()
155+ @click .argument ("task_name" )
156+ @click .argument ("new_name" )
157+ def rename (task_name , new_name ):
158+ """
159+ - Renames a task of the active project.
160+ """
161+ state = data_handler .load_data (settings .state_filepath )
162+ data = data_handler .load_data ()
163+ project_name = state .get (settings .CURRENT_PROJECT )
164+ if project_name :
165+ if not data .get (project_name ):
166+ console .print (f"[red bold]Project doesn't exist." )
167+ state [settings .CURRENT_PROJECT ] = ""
168+ data_handler .save_data (state , settings .state_filepath )
169+ return
170+ if task_name not in data .get (project_name ).get ("tasks" , []):
171+ console .print (f"[bold red] { task_name } doesn't exists." )
172+ return
173+ if new_name in data .get (project_name ).get ("tasks" , []):
174+ console .print (f"Task { new_name } already exists. Choose a different name." )
175+ return
176+ data_handler .update (
177+ partial (
178+ task_handler .rename ,
179+ project_name = project_name ,
180+ task_name = task_name ,
181+ new_name = new_name ,
182+ )
183+ )
184+ state [settings .CURRENT_TASK ] = new_name
185+ data_handler .save_data (state , settings .state_filepath )
186+ console .print (f"Renamed task: [green]{ task_name } [/green] to { new_name } ." )
187+ else :
188+ console .print ("[red bold]No active project." )
0 commit comments