@@ -20,68 +20,56 @@ func NewBasicExecHandler() types.ExecHandler {
2020type execHandler struct {}
2121
2222func (e * execHandler ) ExecHandler (ctx context.Context , args []string ) error {
23- if len (args ) > 0 {
23+ if len (args ) == 0 {
2424 // handle some special commands that are not found locally
2525 hc := interp .HandlerCtx (ctx )
2626 _ , err := lookPathDir (hc .Dir , hc .Env , args [0 ])
2727 if err != nil {
28- err = e .fallbackCommands (ctx , args [0 ], args [1 :])
29- if err != nil {
30- return err
28+ logger := log .GetFileLogger ("shell" )
29+ hc := interp .HandlerCtx (ctx )
30+ switch args [0 ] {
31+ case "is_equal" :
32+ return enginecommands .IsEqual (& hc , args [1 :])
33+ case "is_command" :
34+ return enginecommands .IsCommand (args [1 :])
35+ case "sleep" :
36+ return handleError (hc , enginecommands .Sleep (args [1 :]))
37+ case "cat" :
38+ return handleError (hc , enginecommands .Cat (& hc , args [1 :]))
39+ case "kubectl" :
40+ path , err := downloader .NewDownloader (commands .NewKubectlCommand (), logger ).EnsureCommand (ctx )
41+ if err != nil {
42+ _ , _ = fmt .Fprintln (hc .Stderr , err )
43+ return interp .NewExitStatus (127 )
44+ }
45+ args [0 ] = path
46+ case "helm" :
47+ path , err := downloader .NewDownloader (commands .NewHelmV3Command (), logger ).EnsureCommand (ctx )
48+ if err != nil {
49+ _ , _ = fmt .Fprintln (hc .Stderr , err )
50+ return interp .NewExitStatus (127 )
51+ }
52+ args [0 ] = path
53+ case "devspace" :
54+ bin , err := os .Executable ()
55+ if err != nil {
56+ _ , _ = fmt .Fprintln (hc .Stderr , err )
57+ return interp .NewExitStatus (1 )
58+ }
59+ args [0 ] = bin
3160 }
3261 }
3362 }
3463
3564 return interp .DefaultExecHandler (2 * time .Second )(ctx , args )
3665}
3766
38- func (e * execHandler ) executePipelineCommand (ctx context.Context , command string ) (bool , error ) {
39- hc := interp .HandlerCtx (ctx )
40- _ , _ = fmt .Fprintln (hc .Stderr , fmt .Errorf ("%s: cannot execute the command because it can only be executed within a pipeline step" , command ))
41- return true , interp .NewExitStatus (1 )
42- }
43-
44- func (e * execHandler ) fallbackCommands (ctx context.Context , command string , args []string ) error {
45- logger := log .GetFileLogger ("shell" )
46- hc := interp .HandlerCtx (ctx )
47-
48- switch command {
49- case "is_equal" :
50- return enginecommands .IsEqual (& hc , args )
51- case "is_command" :
52- return enginecommands .IsCommand (args )
53- case "sleep" :
54- return handleError (hc , enginecommands .Sleep (args ))
55- case "cat" :
56- return handleError (hc , enginecommands .Cat (& hc , args ))
57- case "kubectl" :
58- path , err := downloader .NewDownloader (commands .NewKubectlCommand (), logger ).EnsureCommand (ctx )
59- if err != nil {
60- _ , _ = fmt .Fprintln (hc .Stderr , err )
61- return interp .NewExitStatus (127 )
62- }
63- command = path
64- case "helm" :
65- path , err := downloader .NewDownloader (commands .NewHelmV3Command (), logger ).EnsureCommand (ctx )
66- if err != nil {
67- _ , _ = fmt .Fprintln (hc .Stderr , err )
68- return interp .NewExitStatus (127 )
69- }
70- command = path
71- case "devspace" :
72- bin , err := os .Executable ()
73- if err != nil {
74- _ , _ = fmt .Fprintln (hc .Stderr , err )
75- return interp .NewExitStatus (1 )
76- }
77- command = bin
78- }
79- return nil
80- }
81-
8267func handleError (hc interp.HandlerContext , err error ) error {
8368 if err != nil {
8469 _ , _ = fmt .Fprintln (hc .Stderr , err )
70+ if _ , ok := interp .IsExitStatus (err ); ok {
71+ return err
72+ }
8573 return interp .NewExitStatus (1 )
8674 }
8775 return interp .NewExitStatus (0 )
0 commit comments