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  }