MCPcopy Create free account
hub / github.com/github/gh-aw / ParseGitHubToolsets

Function ParseGitHubToolsets

pkg/workflow/github_toolsets.go:28–101  ·  view source on GitHub ↗

ParseGitHubToolsets parses the toolsets string and expands "default" and "all" into their constituent toolsets. It handles comma-separated lists and deduplicates.

(toolsetsStr string)

Source from the content-addressed store, hash-verified

26// ParseGitHubToolsets parses the toolsets string and expands "default" and "all"
27// into their constituent toolsets. It handles comma-separated lists and deduplicates.
28func ParseGitHubToolsets(toolsetsStr string) []string {
29 toolsetsLog.Printf("Parsing GitHub toolsets: %q", toolsetsStr)
30
31 if toolsetsStr == "" {
32 toolsetsLog.Printf("Empty toolsets string, using defaults: %v", DefaultGitHubToolsets)
33 return DefaultGitHubToolsets
34 }
35
36 toolsets := strings.Split(toolsetsStr, ",")
37 var expanded []string
38 seenToolsets := make(map[string]struct {
39 })
40
41 for _, toolset := range toolsets {
42 toolset = strings.TrimSpace(toolset)
43 if toolset == "" {
44 continue
45 }
46
47 switch toolset {
48 case "default":
49 // Add default toolsets
50 toolsetsLog.Printf("Expanding 'default' to %d toolsets", len(DefaultGitHubToolsets))
51 for _, dt := range DefaultGitHubToolsets {
52 if !setutil.Contains(seenToolsets, dt) {
53 expanded = append(expanded, dt)
54 seenToolsets[dt] = struct {
55 }{}
56 }
57 }
58 case "action-friendly":
59 // Add action-friendly toolsets (excludes "users" which GitHub Actions tokens don't support)
60 toolsetsLog.Printf("Expanding 'action-friendly' to %d toolsets", len(ActionFriendlyGitHubToolsets))
61 for _, dt := range ActionFriendlyGitHubToolsets {
62 if !setutil.Contains(seenToolsets, dt) {
63 expanded = append(expanded, dt)
64 seenToolsets[dt] = struct {
65 }{}
66 }
67 }
68 case "all":
69 // Add all toolsets from the toolset permissions map, excluding those that
70 // require GitHub App-only permissions (see GitHubToolsetsExcludedFromAll).
71 toolsetsLog.Printf("Expanding 'all' to toolsets from permissions map (excluding %v)", GitHubToolsetsExcludedFromAll)
72 excludedMap := make(map[string]struct {
73 }, len(GitHubToolsetsExcludedFromAll))
74 for _, ex := range GitHubToolsetsExcludedFromAll {
75 excludedMap[ex] = struct {
76 }{}
77 }
78 toolsetPermissionsMap := getToolsetPermissionsMap()
79 for t := range toolsetPermissionsMap {
80 if setutil.Contains(excludedMap, t) {
81 continue
82 }
83 if !setutil.Contains(seenToolsets, t) {
84 expanded = append(expanded, t)
85 seenToolsets[t] = struct {

Calls 2

ContainsFunction · 0.92
PrintfMethod · 0.45