github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/cli/disable.go (about)

     1  package cli
     2  
     3  import (
     4  	"context"
     5  	"strconv"
     6  	"time"
     7  
     8  	"github.com/pkg/errors"
     9  	"github.com/spf13/cobra"
    10  
    11  	"github.com/tilt-dev/tilt/internal/analytics"
    12  	engineanalytics "github.com/tilt-dev/tilt/internal/engine/analytics"
    13  	"github.com/tilt-dev/tilt/pkg/model"
    14  )
    15  
    16  type disableCmd struct {
    17  	all    bool
    18  	labels []string
    19  }
    20  
    21  func newDisableCmd() *disableCmd {
    22  	return &disableCmd{}
    23  }
    24  
    25  func (c *disableCmd) name() model.TiltSubcommand { return "disable" }
    26  
    27  func (c *disableCmd) register() *cobra.Command {
    28  	cmd := &cobra.Command{
    29  		Use:                   "disable {-all | <resource>...}",
    30  		DisableFlagsInUseLine: true,
    31  		Short:                 "Disables resources",
    32  		Long: `Disables the specified resources in Tilt.
    33  
    34  # disables the resources named 'frontend' and 'backend'
    35  tilt disable frontend backend
    36  
    37  # disables all resources
    38  tilt disable --all`,
    39  	}
    40  
    41  	cmd.Flags().StringSliceVarP(&c.labels, "labels", "l", c.labels, "Disable all resources with the specified labels")
    42  	cmd.Flags().BoolVar(&c.all, "all", false, "Disable all resources")
    43  
    44  	addConnectServerFlags(cmd)
    45  
    46  	return cmd
    47  }
    48  
    49  func (c *disableCmd) run(ctx context.Context, args []string) error {
    50  	ctrlclient, err := newClient(ctx)
    51  	if err != nil {
    52  		return err
    53  	}
    54  
    55  	if c.all {
    56  		if len(args) > 0 {
    57  			return errors.New("cannot use --all with resource names")
    58  		}
    59  	} else if len(args) == 0 && len(c.labels) == 0 {
    60  		return errors.New("must specify at least one resource")
    61  	}
    62  
    63  	a := analytics.Get(ctx)
    64  	cmdTags := engineanalytics.CmdTags(map[string]string{})
    65  	cmdTags["all"] = strconv.FormatBool(c.all)
    66  	a.Incr("cmd.disable", cmdTags.AsMap())
    67  	defer a.Flush(time.Second)
    68  
    69  	names := make(map[string]bool)
    70  	for _, name := range args {
    71  		names[name] = true
    72  	}
    73  
    74  	err = changeEnabledResources(ctx, ctrlclient, args, enableOptions{enable: false, all: c.all, only: false, labels: c.labels})
    75  	if err != nil {
    76  		return err
    77  	}
    78  
    79  	return nil
    80  }