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

Function addProject

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

Source from the content-addressed store, hash-verified

45}
46
47func addProject(args []string) int {
48 if len(args) == 0 || args[0] == "" {
49 fmt.Fprintln(os.Stderr, "error: add project requires a name")
50 return 2
51 }
52 name := args[0]
53 fs := flagSet("add project")
54 slugFlag := fs.String("slug", "", "short user-chosen slug (default: auto-generated from name)")
55 workDir := fs.String("work-dir", "", "absolute path to the project's work directory (required)")
56 priority := fs.String("priority", "medium", "high|medium|low")
57 mkdir := fs.Bool("mkdir", false, "create --work-dir if it does not exist")
58 if err := fs.Parse(args[1:]); err != nil {
59 return 2
60 }
61
62 if !isValidPriority(*priority) {
63 fmt.Fprintf(os.Stderr, "error: priority must be high|medium|low, got %q\n", *priority)
64 return 2
65 }
66 if *workDir == "" {
67 fmt.Fprintln(os.Stderr, "error: --work-dir is required for projects")
68 return 2
69 }
70 abs, err := resolveWorkDir(*workDir, *mkdir)
71 if err != nil {
72 fmt.Fprintf(os.Stderr, "error: %v\n", err)
73 return 1
74 }
75
76 dbPath, err := flowDBPath()
77 if err != nil {
78 fmt.Fprintf(os.Stderr, "error: %v\n", err)
79 return 1
80 }
81 db, err := flowdb.OpenDB(dbPath)
82 if err != nil {
83 fmt.Fprintf(os.Stderr, "error: %v\n", err)
84 return 1
85 }
86 defer db.Close()
87
88 var slug string
89 if *slugFlag != "" {
90 slug = *slugFlag
91 } else {
92 baseSlug, err := Slugify(name)
93 if err != nil {
94 fmt.Fprintf(os.Stderr, "error: %v\n", err)
95 return 2
96 }
97 slug, err = uniqueSlug(db, "projects", baseSlug)
98 if err != nil {
99 fmt.Fprintf(os.Stderr, "error: %v\n", err)
100 return 1
101 }
102 }
103
104 now := flowdb.NowISO()

Callers 1

cmdAddFunction · 0.85

Calls 11

OpenDBFunction · 0.92
NowISOFunction · 0.92
UpsertWorkdirFunction · 0.92
flagSetFunction · 0.85
isValidPriorityFunction · 0.85
resolveWorkDirFunction · 0.85
flowDBPathFunction · 0.85
SlugifyFunction · 0.85
uniqueSlugFunction · 0.85
flowRootFunction · 0.85
StringMethod · 0.80

Tested by

no test coverage detected