Skip to content

Commit 52cf3e8

Browse files
committed
feat: add support for editing the created field in tasks
1 parent 3724bd1 commit 52cf3e8

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

scripts/tasks.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1183,7 +1183,7 @@ def resolve_tasks(
11831183
"set_fields",
11841184
type=(str, str),
11851185
multiple=True,
1186-
help="Set a field value (state, priority)",
1186+
help="Set a field value (state, priority, created)",
11871187
)
11881188
@click.option(
11891189
"--add",
@@ -1205,10 +1205,17 @@ def edit(task_ids, set_fields, add_fields, remove_fields):
12051205
Examples:
12061206
tasks edit task-123 --set state active
12071207
tasks edit task-123 --set priority high
1208+
tasks edit task-123 --set created 2025-05-05T10:00:00+02:00
12081209
tasks edit task-123 --add depends other-task
12091210
tasks edit task-123 --add tag feature
12101211
tasks edit task-123 --remove tag wip
12111212
tasks edit task-123 --set state active --add tag feature --add depends other-task
1213+
1214+
Date formats:
1215+
The created field accepts ISO format dates:
1216+
- Date only: 2025-05-05
1217+
- Date and time: 2025-05-05T10:00:00
1218+
- With timezone: 2025-05-05T10:00:00+02:00
12121219
"""
12131220
console = Console()
12141221
repo_root = find_repo_root(Path.cwd())
@@ -1232,9 +1239,9 @@ def edit(task_ids, set_fields, add_fields, remove_fields):
12321239

12331240
# Validate set operations
12341241
for field, value in set_fields:
1235-
if field not in ("state", "priority"):
1242+
if field not in ("state", "priority", "created"):
12361243
console.print(
1237-
f"[red]Cannot set field: {field}. Use --set with state or priority.[/]"
1244+
f"[red]Cannot set field: {field}. Use --set with state, priority, or created.[/]"
12381245
)
12391246
return
12401247

@@ -1246,6 +1253,17 @@ def edit(task_ids, set_fields, add_fields, remove_fields):
12461253
if value not in ("high", "medium", "low", "none"):
12471254
console.print(f"[red]Invalid priority: {value}[/]")
12481255
return
1256+
elif field == "created":
1257+
try:
1258+
# Parse and validate the date format
1259+
created_dt = datetime.fromisoformat(value)
1260+
# Convert to string format for storage
1261+
value = created_dt.isoformat()
1262+
except ValueError:
1263+
console.print(
1264+
"[red]Invalid created date format. Use ISO format (YYYY-MM-DD[THH:MM:SS+HH:MM])[/]"
1265+
)
1266+
return
12491267

12501268
changes.append(("set", field, value))
12511269

0 commit comments

Comments
 (0)