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  }