github.com/jfrog/jfrog-cli-platform-services@v1.2.0/commands/execute_cmd.go (about)

     1  package commands
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"net/http"
     7  
     8  	"github.com/jfrog/jfrog-client-go/utils/log"
     9  
    10  	plugins_common "github.com/jfrog/jfrog-cli-core/v2/plugins/common"
    11  	"github.com/jfrog/jfrog-cli-core/v2/plugins/components"
    12  
    13  	"github.com/jfrog/jfrog-cli-platform-services/model"
    14  )
    15  
    16  func GetExecuteCommand() components.Command {
    17  	return components.Command{
    18  		Name:        "execute",
    19  		Description: "Execute a GENERIC_EVENT worker",
    20  		Aliases:     []string{"exec", "e"},
    21  		Flags: []components.Flag{
    22  			plugins_common.GetServerIdFlag(),
    23  			model.GetTimeoutFlag(),
    24  		},
    25  		Arguments: []components.Argument{
    26  			model.GetWorkerKeyArgument(),
    27  			model.GetJsonPayloadArgument(),
    28  		},
    29  		Action: func(c *components.Context) error {
    30  			var workerKey string
    31  
    32  			if len(c.Arguments) > 1 {
    33  				workerKey = c.Arguments[0]
    34  			} else if len(c.Arguments) > 0 {
    35  				log.Info("No worker name provided, it will be taken from the manifest. Last argument is considered as a json payload.")
    36  			}
    37  
    38  			if workerKey == "" {
    39  				manifest, err := model.ReadManifest()
    40  				if err != nil {
    41  					return err
    42  				}
    43  
    44  				if err = manifest.Validate(); err != nil {
    45  					return err
    46  				}
    47  
    48  				if manifest.Action != "GENERIC_EVENT" {
    49  					return fmt.Errorf("only the GENERIC_EVENT actions are executable. Got %s", manifest.Action)
    50  				}
    51  
    52  				workerKey = manifest.Name
    53  			}
    54  
    55  			server, err := model.GetServerDetails(c)
    56  			if err != nil {
    57  				return err
    58  			}
    59  
    60  			inputReader := &cmdInputReader{c}
    61  
    62  			data, err := inputReader.readData()
    63  			if err != nil {
    64  				return err
    65  			}
    66  
    67  			body, err := json.Marshal(data)
    68  			if err != nil {
    69  				return err
    70  			}
    71  
    72  			return callWorkerApiWithOutput(c, server.GetUrl(), server.GetAccessToken(), http.MethodPost, body, http.StatusOK, "execute", workerKey)
    73  		},
    74  	}
    75  }