MCPcopy Create free account
hub / github.com/driangle/taskmd / applyTerminalDateLogic

Function applyTerminalDateLogic

apps/cli/internal/cli/set.go:189–208  ·  view source on GitHub ↗

applyTerminalDateLogic auto-sets or clears completed_at/cancelled_at based on status transitions.

(task *model.Task, req *taskfile.UpdateRequest)

Source from the content-addressed store, hash-verified

187
188// applyTerminalDateLogic auto-sets or clears completed_at/cancelled_at based on status transitions.
189func applyTerminalDateLogic(task *model.Task, req *taskfile.UpdateRequest) {
190 if req.Status == nil {
191 return
192 }
193 today := time.Now().Format("2006-01-02")
194 newStatus := model.Status(*req.Status)
195 wasTerminal := task.Status.IsResolved()
196
197 switch {
198 case newStatus == model.StatusCompleted:
199 req.Completed = &today
200 req.RemoveFields = append(req.RemoveFields, "cancelled_at")
201 case newStatus == model.StatusCancelled:
202 req.CancelledAt = &today
203 req.RemoveFields = append(req.RemoveFields, "completed_at")
204 case wasTerminal:
205 // Reopening: task was completed/cancelled, now moving to a non-terminal status.
206 req.RemoveFields = append(req.RemoveFields, "completed_at", "cancelled_at")
207 }
208}
209
210func buildSetRequest(cmd *cobra.Command) (taskfile.UpdateRequest, error) {
211 if err := resolveDoneFlag(cmd); err != nil {

Callers 1

runSetFunction · 0.85

Calls 1

IsResolvedMethod · 0.80

Tested by

no test coverage detected