github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/pkg/model/web.go (about) 1 package model 2 3 import ( 4 "flag" 5 "fmt" 6 "net/url" 7 8 "github.com/spf13/pflag" 9 ) 10 11 // Web version of the form vA.B.C, where A, B, and C are integers 12 // Used for fetching web assets 13 type WebVersion string 14 15 // Web version of the form aaaaaaa where a is a hex letter 16 // Used for fetching web assets 17 type WebSHA string 18 19 // Mode for developing Tilt web UX. 20 // 21 // Currently controls whether we use production asset bundles (JS/CSS) 22 // or local hot-reloaded asset bundles. 23 24 type WebMode string 25 26 const ( 27 // By default, we serve the js locally in dev builds and from prod in released 28 // builds. 29 DefaultWebMode WebMode = "default" 30 31 // Local webpack server 32 LocalWebMode WebMode = "local" 33 34 // Generic prod build; uses embedded. report error if embedded not available. 35 ProdWebMode WebMode = "prod" 36 37 // Production build embedded assets 38 EmbeddedWebMode WebMode = "embedded" 39 40 // Precompiled with `make build-js`. This is an experimental mode 41 // we're playing around with to avoid the cost of webpack startup. 42 PrecompiledWebMode WebMode = "precompiled" 43 ) 44 45 func (m *WebMode) String() string { 46 return string(*m) 47 } 48 49 func (m *WebMode) Set(v string) error { 50 switch v { 51 case string(DefaultWebMode): 52 *m = DefaultWebMode 53 case string(PrecompiledWebMode): 54 *m = PrecompiledWebMode 55 case string(LocalWebMode): 56 *m = LocalWebMode 57 case string(ProdWebMode): 58 *m = ProdWebMode 59 case string(EmbeddedWebMode): 60 *m = EmbeddedWebMode 61 default: 62 return UnrecognizedWebModeError(v) 63 } 64 return nil 65 } 66 67 func (m *WebMode) Type() string { 68 return "WebMode" 69 } 70 71 func (m WebMode) IsProd() bool { 72 return m == ProdWebMode || m == EmbeddedWebMode 73 } 74 75 func UnrecognizedWebModeError(v string) error { 76 return fmt.Errorf("Unrecognized web mode: %s. Allowed values: %s", v, []WebMode{ 77 DefaultWebMode, LocalWebMode, ProdWebMode, EmbeddedWebMode, PrecompiledWebMode, 78 }) 79 } 80 81 var emptyWebMode = WebMode("") 82 var _ flag.Value = &emptyWebMode 83 var _ pflag.Value = &emptyWebMode 84 85 const DefaultWebPort = 10350 86 87 type WebHost string 88 type WebPort int 89 type WebDevPort int 90 type WebURL url.URL 91 92 func (u WebURL) String() string { 93 url := (*url.URL)(&u) 94 return url.String() 95 } 96 97 func (u WebURL) Empty() bool { 98 return WebURL{} == u 99 }