status.go

 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}