-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
96 lines (82 loc) · 3.09 KB
/
Copy pathmain.go
File metadata and controls
96 lines (82 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package main
import (
"fmt"
"os"
"strings"
"github.com/PRTIMES/jooto-cli/api"
"github.com/PRTIMES/jooto-cli/cmd"
"github.com/PRTIMES/jooto-cli/config"
)
type ActionMap map[string]func([]string)
func main() {
args := os.Args[1:]
// Extract global --profile flag
var profileFlag string
filtered := make([]string, 0, len(args))
for _, arg := range args {
if strings.HasPrefix(arg, "--profile=") {
profileFlag = strings.TrimPrefix(arg, "--profile=")
} else {
filtered = append(filtered, arg)
}
}
args = filtered
if len(args) == 0 {
cmd.PrintHelp()
return
}
// Commands that do NOT need an API key
switch args[0] {
case "version", "--version", "-v":
cmd.PrintVersion()
return
case "help", "--help", "-h":
cmd.HandleHelp(args[1:])
return
case "profile":
cmd.HandleProfile(args[1:])
return
}
// Resolve API key for all remaining commands
apiKey := config.ResolveApiKey(profileFlag)
api.SetApiKey(apiKey)
// System commands that need API key
switch args[0] {
case "rate-limit":
cmd.HandleRateLimit(args[1:])
return
}
objects := map[string]ActionMap{
"org": {"get": cmd.HandleOrganization},
"user": {"list": cmd.HandleUsers, "get": cmd.HandleUser},
"board": {"list": cmd.HandleBoards, "create": cmd.HandleBoardCreate, "update": cmd.HandleBoardUpdate, "delete": cmd.HandleBoardDelete},
"member": {"list": cmd.HandleMembers},
"list": {"list": cmd.HandleLists, "create": cmd.HandleListCreate, "update": cmd.HandleListUpdate, "delete": cmd.HandleListDelete, "reorder": cmd.HandleListOrder},
"task": {"list": cmd.HandleTasks, "get": cmd.HandleTask, "create": cmd.HandleTaskCreate, "update": cmd.HandleTaskUpdate, "delete": cmd.HandleTaskDelete, "search": cmd.HandleTaskSearch, "move": cmd.HandleTaskMove, "archive": cmd.HandleTaskArchive},
"comment": {"list": cmd.HandleComments, "get": cmd.HandleComment, "create": cmd.HandleCommentCreate, "update": cmd.HandleCommentUpdate},
"label": {"list": cmd.HandleLabels, "get": cmd.HandleLabel, "create": cmd.HandleLabelCreate, "update": cmd.HandleLabelUpdate, "delete": cmd.HandleLabelDelete},
"checklist": {"list": cmd.HandleChecklists, "get": cmd.HandleChecklist, "create": cmd.HandleChecklistCreate, "update": cmd.HandleChecklistUpdate, "delete": cmd.HandleChecklistDelete},
"item": {"list": cmd.HandleItems, "get": cmd.HandleItem, "create": cmd.HandleItemCreate, "update": cmd.HandleItemUpdate, "delete": cmd.HandleItemDelete},
}
actions, ok := objects[args[0]]
if !ok {
fmt.Fprintf(os.Stderr, "Error: unknown object \"%s\"\n", args[0])
fmt.Fprintln(os.Stderr, "Available objects:", strings.Join(cmd.ValidObjectNames(), ", "))
fmt.Fprintln(os.Stderr)
cmd.PrintHelp()
os.Exit(1)
}
// No action specified or "help" → show object help
if len(args) < 2 || args[1] == "help" || args[1] == "--help" || args[1] == "-h" {
cmd.PrintObjectHelp(args[0])
return
}
handler, ok := actions[args[1]]
if !ok {
fmt.Fprintf(os.Stderr, "Error: \"%s\" has no action \"%s\".\n", args[0], args[1])
fmt.Fprintln(os.Stderr)
cmd.PrintObjectHelp(args[0])
os.Exit(1)
}
handler(args[2:])
}