summaryrefslogtreecommitdiff
path: root/internal/askcli/task_selector.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/askcli/task_selector.go')
-rw-r--r--internal/askcli/task_selector.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/internal/askcli/task_selector.go b/internal/askcli/task_selector.go
index ccae234..220aa7c 100644
--- a/internal/askcli/task_selector.go
+++ b/internal/askcli/task_selector.go
@@ -117,3 +117,38 @@ func looksLikeTaskAlias(selector string) bool {
_, ok := decodeTaskAliasID(selector)
return ok && !strings.Contains(selector, "-")
}
+
+func displayResolvedTaskID(resolved resolvedTaskSelector) string {
+ return displayTaskAlias(resolved.UUID, map[string]string{resolved.UUID: resolved.Alias})
+}
+
+func displayTaskAlias(uuid string, aliases map[string]string) string {
+ if alias := strings.TrimSpace(aliases[uuid]); alias != "" {
+ return alias
+ }
+ return uuid
+}
+
+// NormalizeUUID strips any leading "uuid:" prefix so callers can accept
+// both "uuid:<value>" and bare UUID strings interchangeably. The returned
+// value is always a plain UUID ready to be prefixed again when building
+// taskwarrior filter arguments.
+func NormalizeUUID(s string) string {
+ return strings.TrimPrefix(s, "uuid:")
+}
+
+func IsNumericID(s string) bool {
+ if s == "" {
+ return false
+ }
+ for _, c := range s {
+ if c < '0' || c > '9' {
+ return false
+ }
+ }
+ return true
+}
+
+func RejectNumericID() string {
+ return "error: use a task alias ID or UUID, not a numeric Taskwarrior task ID\n"
+}