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  }