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 }