@@ -32,41 +32,38 @@ func NewServiceCommand(api *api.API, headers map[string]string, dryRun bool, log
3232 }
3333}
3434
35- func (s * ServiceCommand ) Execute (args []string ) (string , error ) {
35+ func (s * ServiceCommand ) Execute (args []string ) (* Result , error ) {
3636 if len (args ) == 0 || args [0 ] == "--help" {
37- return s .PrintHelp (), nil
37+ return & Result { s .PrintHelp (), 0 } , nil
3838 }
3939 resource := args [0 ]
4040 r , err := s .API .GetResource (resource )
4141 if err != nil {
42- return "" , fmt .Errorf ("%v\n %v" , err , s .PrintHelp ())
42+ return nil , fmt .Errorf ("%v\n %v" , err , s .PrintHelp ())
4343 }
4444 req , output , err := ExecuteResourceCommand (r , args [1 :])
4545 if err != nil {
46- return output , err
46+ return & Result { output , 0 } , err
4747 }
4848 if req == nil {
49- return output , nil
49+ return & Result { output , 0 } , nil
5050 }
5151 url , err := url .Parse (fmt .Sprintf ("%s/%s" , s .API .ServerURL , req .URL .String ()))
5252 if err != nil {
53- return "" , fmt .Errorf ("unable to create url: %v" , err )
53+ return nil , fmt .Errorf ("unable to create url: %v" , err )
5454 }
5555 req .URL = url
56- reqOutput , err := s .doRequest (req )
56+ resp , err := s .doRequest (req )
5757 if err != nil {
58- return "" , fmt .Errorf ("unable to execute request: %v" , err )
58+ return nil , fmt .Errorf ("unable to execute request: %v" , err )
5959 }
60- outputs := []string {}
61- for _ , o := range []string {output , reqOutput } {
62- if o != "" {
63- outputs = append (outputs , o )
64- }
60+ if output != "" {
61+ resp .Output = output + "\n " + resp .Output
6562 }
66- return strings . Join ( outputs , " \n " ) , nil
63+ return resp , nil
6764}
6865
69- func (s * ServiceCommand ) doRequest (r * http.Request ) (string , error ) {
66+ func (s * ServiceCommand ) doRequest (r * http.Request ) (* Result , error ) {
7067 contentType := "application/json"
7168 if r .Method == http .MethodPatch {
7269 contentType = "application/merge-patch+json"
@@ -79,7 +76,7 @@ func (s *ServiceCommand) doRequest(r *http.Request) (string, error) {
7976 if r .Body != nil {
8077 b , err := io .ReadAll (r .Body )
8178 if err != nil {
82- return "" , fmt .Errorf ("unable to read request body: %v" , err )
79+ return nil , fmt .Errorf ("unable to read request body: %v" , err )
8380 }
8481 r .Body = io .NopCloser (bytes .NewBuffer (b ))
8582 body = string (b )
@@ -91,23 +88,23 @@ func (s *ServiceCommand) doRequest(r *http.Request) (string, error) {
9188 }
9289 if s .DryRun {
9390 slog .Debug ("Dry run: not making request" )
94- return "" , nil
91+ return nil , nil
9592 }
9693 resp , err := s .Client .Do (r )
9794 if err != nil {
98- return "" , fmt .Errorf ("unable to execute request: %v" , err )
95+ return nil , fmt .Errorf ("unable to execute request: %v" , err )
9996 }
10097 defer resp .Body .Close ()
10198 respBody , err := io .ReadAll (resp .Body )
10299 if err != nil {
103- return "" , fmt .Errorf ("unable to read response body: %v" , err )
100+ return nil , fmt .Errorf ("unable to read response body: %v" , err )
104101 }
105102 var prettyJSON bytes.Buffer
106103 err = json .Indent (& prettyJSON , respBody , "" , " " )
107104 if err != nil {
108- return "" , fmt .Errorf ("failed to format JSON: %w" , err )
105+ return nil , fmt .Errorf ("failed to format JSON: %w" , err )
109106 }
110- return prettyJSON .String (), nil
107+ return & Result { prettyJSON .String (), resp . StatusCode } , nil
111108}
112109
113110func (s * ServiceCommand ) PrintHelp () string {
0 commit comments