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(®io, "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 }