github.com/saucelabs/saucectl@v0.175.1/internal/cmd/jobs/cmd.go (about) 1 package jobs 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/iam" 10 "github.com/saucelabs/saucectl/internal/insights" 11 "github.com/saucelabs/saucectl/internal/region" 12 "github.com/saucelabs/saucectl/internal/segment" 13 "github.com/spf13/cobra" 14 ) 15 16 var ( 17 jobService insights.Service 18 userService iam.UserService 19 insightsTimeout = 1 * time.Minute 20 iamTimeout = 1 * time.Minute 21 ) 22 23 func Command(preRun func(cmd *cobra.Command, args []string)) *cobra.Command { 24 var regio string 25 26 cmd := &cobra.Command{ 27 Use: "jobs", 28 Short: "Interact with jobs", 29 SilenceUsage: true, 30 TraverseChildren: true, 31 PersistentPreRunE: func(cmd *cobra.Command, args []string) error { 32 if preRun != nil { 33 preRun(cmd, args) 34 } 35 36 reg := region.FromString(regio) 37 if reg == region.None { 38 return errors.New("invalid region") 39 } 40 if reg == region.Staging { 41 segment.DefaultTracker.Enabled = false 42 } 43 44 creds := credentials.Get() 45 url := reg.APIBaseURL() 46 insightsClient := http.NewInsightsService(url, creds, insightsTimeout) 47 iamClient := http.NewUserService(url, creds, iamTimeout) 48 49 jobService = &insightsClient 50 userService = &iamClient 51 52 return nil 53 }, 54 } 55 56 flags := cmd.PersistentFlags() 57 flags.StringVarP(®io, "region", "r", "us-west-1", "The Sauce Labs region. Options: us-west-1, eu-central-1.") 58 59 cmd.AddCommand( 60 GetCommand(), 61 ListCommand(), 62 ) 63 64 return cmd 65 }