MCPcopy Create free account
hub / github.com/Facets-cloud/flow / addTask

Function addTask

internal/app/add.go:142–298  ·  view source on GitHub ↗
(args []string)

Source from the content-addressed store, hash-verified

140}
141
142func addTask(args []string) int {
143 if len(args) == 0 || args[0] == "" {
144 fmt.Fprintln(os.Stderr, "error: add task requires a name")
145 return 2
146 }
147 name := args[0]
148 fs := flagSet("add task")
149 slugFlag := fs.String("slug", "", "short user-chosen slug (default: auto-generated from name)")
150 project := fs.String("project", "", "parent project slug (optional)")
151 workDir := fs.String("work-dir", "", "work directory (overrides project default)")
152 priority := fs.String("priority", "medium", "high|medium|low")
153 dueFlag := fs.String("due", "", "due date (YYYY-MM-DD, today, tomorrow, monday, 3d)")
154 assigneeFlag := fs.String("assignee", "", "optional assignee (default: self)")
155 var tags stringSliceFlag
156 fs.Var(&tags, "tag", "attach a tag (repeatable: --tag foo --tag bar)")
157 mkdir := fs.Bool("mkdir", false, "create --work-dir if it does not exist")
158 if err := fs.Parse(args[1:]); err != nil {
159 return 2
160 }
161
162 if !isValidPriority(*priority) {
163 fmt.Fprintf(os.Stderr, "error: priority must be high|medium|low, got %q\n", *priority)
164 return 2
165 }
166
167 dbPath, err := flowDBPath()
168 if err != nil {
169 fmt.Fprintf(os.Stderr, "error: %v\n", err)
170 return 1
171 }
172 db, err := flowdb.OpenDB(dbPath)
173 if err != nil {
174 fmt.Fprintf(os.Stderr, "error: %v\n", err)
175 return 1
176 }
177 defer db.Close()
178
179 var slug string
180 if *slugFlag != "" {
181 slug = *slugFlag
182 } else {
183 baseSlug, err := Slugify(name)
184 if err != nil {
185 fmt.Fprintf(os.Stderr, "error: %v\n", err)
186 return 2
187 }
188 slug, err = uniqueSlug(db, "tasks", baseSlug)
189 if err != nil {
190 fmt.Fprintf(os.Stderr, "error: %v\n", err)
191 return 1
192 }
193 }
194
195 // Resolve project first, since it may supply the default work_dir.
196 var projectSlug any = nil
197 var projectWorkDir string
198 if *project != "" {
199 p, err := flowdb.GetProject(db, *project)

Callers 1

cmdAddFunction · 0.85

Calls 14

OpenDBFunction · 0.92
GetProjectFunction · 0.92
NowISOFunction · 0.92
UpsertWorkdirFunction · 0.92
AddTaskTagFunction · 0.92
flagSetFunction · 0.85
isValidPriorityFunction · 0.85
flowDBPathFunction · 0.85
SlugifyFunction · 0.85
uniqueSlugFunction · 0.85
flowRootFunction · 0.85
resolveWorkDirFunction · 0.85

Tested by

no test coverage detected