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(&regio, "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  }