44 "fmt"
55 "log"
66 "os"
7- "strings"
87
98 "github.com/spf13/cobra"
109)
@@ -31,173 +30,16 @@ func main() {
3130 Exec (Commands .Run , script .Name )
3231 return
3332 }
34- if IsBuiltInCommand (packageManager , args ... ) {
35- if err := PassThrough (args ... ); err != nil {
36- fmt .Fprintln (os .Stderr , err )
37- }
38- return
39- }
40- allArgs := append ([]string {"run" }, args ... )
41- if err := PassThrough (allArgs ... ); err != nil {
42- fmt .Fprintln (os .Stderr , err )
43- }
44- },
45- Args : cobra .ArbitraryArgs ,
46- }
47-
48- addCmd := & cobra.Command {
49- Use : "add <package name>" ,
50- Aliases : []string {"i" , "install" },
51- Short : "Add dependency if package name is given." ,
52- Run : func (cmd * cobra.Command , args []string ) {
53- if len (args ) == 0 {
54- log .Fatalf ("No package name given" )
55- }
56-
57- cmd .Flags ().Parse (args )
58-
59- dev := GetBoolFlag (cmd , "save-dev" , "dev" )
60- peer := GetBoolFlag (cmd , "save-peer" , "peer" )
61- optional := GetBoolFlag (cmd , "save-optional" , "optional" )
62- global := GetBoolFlag (cmd , "global" )
63- exact := GetBoolFlag (cmd , "exact" )
64- frozenLockfile := GetBoolFlag (cmd , "frozen-lockfile" )
65-
66- if frozenLockfile {
67- Exec (Commands .CI )
68- return
69- }
70-
71- var flags []flagAlias
72- if dev {
73- flags = append (flags , Flags .Dev )
74- }
75- if peer {
76- flags = append (flags , Flags .Peer )
77- }
78- if optional {
79- flags = append (flags , Flags .Optional )
80- }
81- if global {
82- flags = append (flags , Flags .Global )
83- }
84- if exact {
85- flags = append (flags , Flags .Exact )
86- }
87- args = filterFlags (args , cmd .Flags ())
88-
89- ExecWithFlag (Commands .Add , flags , args ... )
90-
91- nonTypedPackages := []string {}
92- for _ , arg := range args {
93- if ! strings .HasPrefix (arg , "@types/" ) {
94- if IsTypedPackage (arg ) {
95- continue
96- }
97- ok , _ := CheckPackageExists ("@types/" + arg )
98- if ! ok {
99- continue
100- }
101- nonTypedPackages = append (nonTypedPackages , "@types/" + arg )
102- }
103- }
104- if ! dev && ! peer && ! optional && ! global {
105- for _ , packageName := range nonTypedPackages {
106- ExecWithFlag (Commands .Add , []flagAlias {Flags .Dev }, packageName )
107- }
108- }
109- },
110- DisableFlagParsing : true ,
111- }
11233
113- addCmd .Flags ().BoolP ("save-dev" , "D" , false , "install package as dev dependency" )
114- addCmd .Flags ().Bool ("dev" , false , "install package as dev dependency" )
115- addCmd .Flags ().MarkHidden ("dev" )
116- addCmd .Flags ().BoolP ("save-peer" , "P" , false , "install package as peer dependency" )
117- addCmd .Flags ().Bool ("peer" , false , "install package as peer dependency" )
118- addCmd .Flags ().MarkHidden ("peer" )
119- addCmd .Flags ().BoolP ("save-optional" , "O" , false , "install package as optional dependency" )
120- addCmd .Flags ().Bool ("optional" , false , "install package as optional dependency" )
121- addCmd .Flags ().MarkHidden ("optional" )
122- addCmd .Flags ().BoolP ("global" , "g" , false , "install package globally" )
123- addCmd .Flags ().BoolP ("exact" , "E" , false , "install exact version" )
124- addCmd .Flags ().Bool ("frozen-lockfile" , false , "don't generate a lockfile and fail if an update is needed" )
125- addCmd .FParseErrWhitelist = cobra.FParseErrWhitelist {UnknownFlags : true }
126-
127- installCmd := & cobra.Command {
128- Use : "install [package name]" ,
129- Aliases : []string {"i" },
130- Short : "Add dependency if package name is given. Otherwise, install the package" ,
131- Run : func (cmd * cobra.Command , args []string ) {
132- frozenLockfile , _ := cmd .Flags ().GetBool ("frozen-lockfile" )
34+ translator := NewCommandTranslator (packageManager )
35+ translated := translator .Translate (args )
13336
134- if frozenLockfile {
135- Exec (Commands .CI )
136- return
137- }
138-
139- if len (args ) > 0 {
140- addCmd .Run (cmd , args )
141- } else {
142- Exec (Commands .Install )
143- }
144- },
145- DisableFlagParsing : true ,
146- }
147-
148- installCmd .Flags ().Bool ("frozen-lockfile" , false , "don't generate a lockfile and fail if an update is needed" )
149- installCmd .FParseErrWhitelist = cobra.FParseErrWhitelist {UnknownFlags : true }
150-
151- uninstallCmd := & cobra.Command {
152- Use : "uninstall <package name>" ,
153- Aliases : []string {"rm" , "remove" , "un" },
154- Short : "Uninstall a package" ,
155- Run : func (cmd * cobra.Command , args []string ) {
156- if len (args ) == 0 {
157- log .Fatalf ("No package name given" )
158- }
159-
160- Exec (Commands .Uninstall , args ... )
161- },
162- DisableFlagParsing : true ,
163- }
164- uninstallCmd .FParseErrWhitelist = cobra.FParseErrWhitelist {UnknownFlags : true }
165-
166- ciCmd := & cobra.Command {
167- Use : "ci" ,
168- Short : "CI command" ,
169- Run : func (cmd * cobra.Command , args []string ) {
170- Exec (Commands .CI )
171- },
172- }
173- ciCmd .FParseErrWhitelist = cobra.FParseErrWhitelist {UnknownFlags : true }
174-
175- runCmd := & cobra.Command {
176- Use : "run" ,
177- Short : "Run command" ,
178- Run : func (cmd * cobra.Command , args []string ) {
179- if len (args ) == 0 {
180- script , err := showScriptPrompt ()
181- if err != nil {
182- if err .Error () != "cancelled" {
183- fmt .Fprintln (os .Stderr , err )
184- }
185- return
186- }
187- Exec (Commands .Run , script .Name )
188- } else {
189- Exec (Commands .Run , args ... )
37+ if err := ExecuteTranslatedCommand (packageManager , translated ); err != nil {
38+ fmt .Fprintln (os .Stderr , err )
19039 }
19140 },
192- DisableFlagParsing : true ,
41+ Args : cobra . ArbitraryArgs ,
19342 }
194- runCmd .FParseErrWhitelist = cobra.FParseErrWhitelist {UnknownFlags : true }
195-
196- rootCmd .AddCommand (installCmd )
197- rootCmd .AddCommand (addCmd )
198- rootCmd .AddCommand (uninstallCmd )
199- rootCmd .AddCommand (ciCmd )
200- rootCmd .AddCommand (runCmd )
20143
20244 if err := rootCmd .Execute (); err != nil {
20345 log .Fatal (err )
0 commit comments