github.com/saucelabs/saucectl@v0.175.1/internal/cmd/imagerunner/cmd.go (about)

     1  package imagerunner
     2  
     3  import (
     4  	"errors"
     5  	"time"
     6  
     7  	"github.com/saucelabs/saucectl/internal/credentials"
     8  	"github.com/saucelabs/saucectl/internal/http"
     9  	"github.com/saucelabs/saucectl/internal/region"
    10  	"github.com/saucelabs/saucectl/internal/segment"
    11  	"github.com/spf13/cobra"
    12  )
    13  
    14  var (
    15  	imagerunnerClient http.ImageRunner
    16  )
    17  
    18  func Command(preRun func(cmd *cobra.Command, args []string)) *cobra.Command {
    19  	var regio string
    20  
    21  	cmd := &cobra.Command{
    22  		Use:          "imagerunner",
    23  		Short:        "Commands for interacting with imagerunner runs",
    24  		SilenceUsage: true,
    25  		PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
    26  			if preRun != nil {
    27  				preRun(cmd, args)
    28  			}
    29  			reg := region.FromString(regio)
    30  			if reg == region.None {
    31  				return errors.New("invalid region")
    32  			}
    33  			if reg == region.Staging {
    34  				segment.DefaultTracker.Enabled = false
    35  			}
    36  
    37  			creds := credentials.Get()
    38  			url := region.FromString(regio).APIBaseURL()
    39  
    40  			asyncEventManager, err := http.NewAsyncEventMgr()
    41  			if err != nil {
    42  				return err
    43  			}
    44  
    45  			imagerunnerClient = http.NewImageRunner(url, creds, 15*time.Minute, asyncEventManager)
    46  
    47  			return nil
    48  		},
    49  	}
    50  
    51  	flags := cmd.PersistentFlags()
    52  	flags.StringVarP(&regio, "region", "r", "us-west-1", "The Sauce Labs region. Options: us-west-1, eu-central-1.")
    53  
    54  	cmd.AddCommand(
    55  		LogsCommand(),
    56  		ArtifactsCommand(),
    57  		StopCommand(),
    58  		ListCommand(),
    59  	)
    60  	return cmd
    61  }