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