@@ -6,18 +6,25 @@ import (
66 "fmt"
77 "log"
88 "os"
9+ "strings"
910
1011 "github.com/cristalhq/acmd"
1112)
1213
1314const version = "v0.0.0"
1415
16+ var (
17+ flagMod string
18+ asJSON bool
19+ )
20+
1521func main () {
1622 if len (os .Args ) < 2 {
1723 panic ("not enough arguments, expected sub-command name" )
1824 }
1925
2026 log .SetFlags (0 )
27+ flag .StringVar (& flagMod , "mod" , "" , `-mod compiler flag(readonly|vendor)` )
2128 flag .BoolVar (& asJSON , "json" , false , `return result as JSON` )
2229 flag .Parse ()
2330
@@ -56,6 +63,11 @@ var cmds = []acmd.Command{
5663 },
5764}
5865
66+ type subCommandRunner interface {
67+ Init ()
68+ Run (pkg string ) error
69+ }
70+
5971func run (cmd subCommandRunner ) error {
6072 cmd .Init ()
6173 for _ , pkg := range flag .Args ()[1 :] {
@@ -66,9 +78,31 @@ func run(cmd subCommandRunner) error {
6678 return nil
6779}
6880
69- var asJSON bool
81+ type goArgFunc func () [] string
7082
71- type subCommandRunner interface {
72- Init ()
73- Run (pkg string ) error
83+ func goArgs (pkg string , argFuncs ... goArgFunc ) (args []string ) {
84+ for _ , f := range argFuncs {
85+ args = append (args , f ()... )
86+ }
87+ args = append (args , goArgsMod ()... )
88+ args = append (args , pkg )
89+
90+ return
91+ }
92+
93+ func goArgsBuild () []string {
94+ return []string {"build" }
95+ }
96+
97+ func goArgsGcFlags (flags ... string ) goArgFunc {
98+ return func () []string {
99+ return []string {"-gcflags" , strings .Join (flags , " " )}
100+ }
101+ }
102+
103+ func goArgsMod () (args []string ) {
104+ if flagMod != "" {
105+ args = append (args , "-mod" , flagMod )
106+ }
107+ return args
74108}
0 commit comments