1// SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
2//
3// SPDX-License-Identifier: AGPL-3.0-or-later
4
5package lunatask
6
7import (
8 "errors"
9 "fmt"
10 "strings"
11)
12
13// Errors returned by TaskStatus operations.
14var (
15 // ErrInvalidTaskStatus is returned when parsing an unknown task status string.
16 ErrInvalidTaskStatus = errors.New("invalid task status")
17)
18
19// ParseTaskStatus parses a string to a TaskStatus value (case-insensitive).
20// Valid values: "later", "next", "started", "in-progress", "waiting", "completed".
21func ParseTaskStatus(str string) (TaskStatus, error) {
22 switch strings.ToLower(str) {
23 case "later":
24 return StatusLater, nil
25 case "next":
26 return StatusNext, nil
27 case "started", "in-progress":
28 return StatusInProgress, nil
29 case "waiting":
30 return StatusWaiting, nil
31 case "completed":
32 return StatusCompleted, nil
33 default:
34 return "", fmt.Errorf("%w: %q", ErrInvalidTaskStatus, str)
35 }
36}