github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/cli/flags.go (about) 1 package cli 2 3 import ( 4 "os" 5 "strconv" 6 7 "github.com/pkg/errors" 8 "github.com/spf13/cobra" 9 10 "github.com/tilt-dev/tilt/internal/k8s" 11 "github.com/tilt-dev/tilt/internal/tiltfile" 12 "github.com/tilt-dev/tilt/pkg/model" 13 ) 14 15 var defaultWebHost = "localhost" 16 var defaultWebPort = model.DefaultWebPort 17 var defaultNamespace = "" 18 var webHostFlag = "" 19 var webPortFlag = 0 20 var snapshotViewPortFlag = 0 21 var namespaceOverride = "" 22 23 func readEnvDefaults() error { 24 envPort := os.Getenv("TILT_PORT") 25 if envPort != "" { 26 port, err := strconv.Atoi(envPort) 27 if err != nil { 28 return errors.Wrap(err, "parsing env TILT_PORT") 29 } 30 defaultWebPort = port 31 } 32 33 envHost := os.Getenv("TILT_HOST") 34 if envHost != "" { 35 defaultWebHost = envHost 36 } 37 return nil 38 } 39 40 // Common flags used across multiple commands. 41 42 // s: address of the field to populate 43 func addTiltfileFlag(cmd *cobra.Command, s *string) { 44 cmd.Flags().StringVarP(s, "file", "f", tiltfile.FileName, "Path to Tiltfile") 45 } 46 47 func addKubeContextFlag(cmd *cobra.Command) { 48 cmd.Flags().StringVar(&kubeContextOverride, "context", "", "Kubernetes context override. Equivalent to kubectl --context") 49 } 50 51 // For commands that talk to the web server. 52 func addConnectServerFlags(cmd *cobra.Command) { 53 cmd.Flags().IntVar(&webPortFlag, "port", defaultWebPort, "Port for the Tilt HTTP server. Only necessary if you started Tilt with --port. Overrides TILT_PORT env variable.") 54 cmd.Flags().StringVar(&webHostFlag, "host", defaultWebHost, "Host for the Tilt HTTP server. Only necessary if you started Tilt with --host. Overrides TILT_HOST env variable.") 55 } 56 57 // For commands that start a web server. 58 func addStartServerFlags(cmd *cobra.Command) { 59 cmd.Flags().IntVar(&webPortFlag, "port", defaultWebPort, "Port for the Tilt HTTP server. Set to 0 to disable. Overrides TILT_PORT env variable.") 60 cmd.Flags().StringVar(&webHostFlag, "host", defaultWebHost, "Host for the Tilt HTTP server and default host for any port-forwards. Set to 0.0.0.0 to listen on all interfaces. Overrides TILT_HOST env variable.") 61 } 62 63 // For commands that start a random snapshot view web server. 64 func addStartSnapshotViewServerFlags(cmd *cobra.Command) { 65 cmd.Flags().IntVar(&snapshotViewPortFlag, "port", 0, "Port for the HTTP server. Defaults to a random port.") 66 cmd.Flags().StringVar(&webHostFlag, "host", defaultWebHost, "Host for the HTTP server and default host for any port-forwards. Set to 0.0.0.0 to listen on all interfaces. Overrides TILT_HOST env variable.") 67 } 68 69 func addDevServerFlags(cmd *cobra.Command) { 70 cmd.Flags().IntVar(&webDevPort, "webdev-port", DefaultWebDevPort, "Port for the Tilt Dev Webpack server. Only applies when using --web-mode=local") 71 cmd.Flags().Var(&webModeFlag, "web-mode", "Values: local, prod. Controls whether to use prod assets or a local dev server. (If flag not specified: if Tilt was built from source, it will use a local asset server; otherwise, prod assets.)") 72 } 73 74 func addNamespaceFlag(cmd *cobra.Command) { 75 cmd.Flags().StringVar(&namespaceOverride, "namespace", defaultNamespace, "Default namespace for Kubernetes resources (overrides default namespace from active context in kubeconfig)") 76 } 77 78 var kubeContextOverride string 79 80 func ProvideKubeContextOverride() k8s.KubeContextOverride { 81 return k8s.KubeContextOverride(kubeContextOverride) 82 } 83 84 func ProvideNamespaceOverride() k8s.NamespaceOverride { 85 return k8s.NamespaceOverride(namespaceOverride) 86 }