|
1 | 1 | // Build tasks for the GitHub CLI project. |
2 | 2 | // |
3 | | -// Usage: go run script/build.go [<task>] |
| 3 | +// Usage: go run script/build.go [<tasks>...] [<env>...] |
4 | 4 | // |
5 | 5 | // Known tasks are: |
6 | 6 | // |
@@ -65,32 +65,52 @@ var tasks = map[string]func(string) error{ |
65 | 65 | var self string |
66 | 66 |
|
67 | 67 | func main() { |
68 | | - task := "bin/gh" |
69 | | - if runtime.GOOS == "windows" { |
70 | | - task = "bin\\gh.exe" |
| 68 | + args := os.Args[:1] |
| 69 | + for _, arg := range os.Args[1:] { |
| 70 | + if idx := strings.IndexRune(arg, '='); idx >= 0 { |
| 71 | + os.Setenv(arg[:idx], arg[idx+1:]) |
| 72 | + } else { |
| 73 | + args = append(args, arg) |
| 74 | + } |
71 | 75 | } |
72 | 76 |
|
73 | | - if len(os.Args) > 1 { |
74 | | - task = os.Args[1] |
| 77 | + if len(args) < 2 { |
| 78 | + if isWindowsTarget() { |
| 79 | + args = append(args, filepath.Join("bin", "gh.exe")) |
| 80 | + } else { |
| 81 | + args = append(args, "bin/gh") |
| 82 | + } |
75 | 83 | } |
76 | 84 |
|
77 | | - self = filepath.Base(os.Args[0]) |
| 85 | + self = filepath.Base(args[0]) |
78 | 86 | if self == "build" { |
79 | 87 | self = "build.go" |
80 | 88 | } |
81 | 89 |
|
82 | | - t := tasks[normalizeTask(task)] |
83 | | - if t == nil { |
84 | | - fmt.Fprintf(os.Stderr, "Don't know how to build task `%s`.\n", task) |
85 | | - os.Exit(1) |
| 90 | + for _, task := range args[1:] { |
| 91 | + t := tasks[normalizeTask(task)] |
| 92 | + if t == nil { |
| 93 | + fmt.Fprintf(os.Stderr, "Don't know how to build task `%s`.\n", task) |
| 94 | + os.Exit(1) |
| 95 | + } |
| 96 | + |
| 97 | + err := t(task) |
| 98 | + if err != nil { |
| 99 | + fmt.Fprintln(os.Stderr, err) |
| 100 | + fmt.Fprintf(os.Stderr, "%s: building task `%s` failed.\n", self, task) |
| 101 | + os.Exit(1) |
| 102 | + } |
86 | 103 | } |
| 104 | +} |
87 | 105 |
|
88 | | - err := t(task) |
89 | | - if err != nil { |
90 | | - fmt.Fprintln(os.Stderr, err) |
91 | | - fmt.Fprintf(os.Stderr, "%s: building task `%s` failed.\n", self, task) |
92 | | - os.Exit(1) |
| 106 | +func isWindowsTarget() bool { |
| 107 | + if os.Getenv("GOOS") == "windows" { |
| 108 | + return true |
| 109 | + } |
| 110 | + if runtime.GOOS == "windows" { |
| 111 | + return true |
93 | 112 | } |
| 113 | + return false |
94 | 114 | } |
95 | 115 |
|
96 | 116 | func version() string { |
|
0 commit comments