github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/token/token.go (about) 1 package token 2 3 import ( 4 "os" 5 6 "github.com/google/uuid" 7 8 "github.com/tilt-dev/wmclient/pkg/dirs" 9 ) 10 11 const tokenFileName = "token" 12 13 type Token string 14 15 func (t Token) String() string { 16 return string(t) 17 } 18 19 func GetOrCreateToken(dir *dirs.TiltDevDir) (Token, error) { 20 token, err := getExistingToken(dir) 21 if os.IsNotExist(err) { 22 u := uuid.New() 23 newtoken := Token(u.String()) 24 err := writeToken(dir, newtoken) 25 if err != nil { 26 return "", err 27 } 28 return newtoken, nil 29 } else if err != nil { 30 return "", err 31 } 32 33 return token, nil 34 } 35 36 func getExistingToken(dir *dirs.TiltDevDir) (Token, error) { 37 token, err := dir.ReadFile(tokenFileName) 38 if err != nil { 39 return "", err 40 } 41 return Token(token), nil 42 } 43 44 func writeToken(dir *dirs.TiltDevDir, t Token) error { 45 return dir.WriteFile(tokenFileName, string(t)) 46 }