github.com/adevinta/maiao@v0.0.0-20240318133227-b6f9656b5e07/pkg/credentials/env.go (about)

     1  package credentials
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  	"os"
     7  )
     8  
     9  // EnvToken resolves github authentication using the GITHUB_TOKEN environment variable if present
    10  type EnvToken struct {
    11  	UsernameKey     string
    12  	PasswordKey     string
    13  	DefaultUserName string
    14  }
    15  
    16  func (e *EnvToken) CredentialForHost(host string) (*Credentials, error) {
    17  	if e.PasswordKey == "" {
    18  		return nil, errors.New("no environment variable to ")
    19  	}
    20  	username := "x-token"
    21  	if e.DefaultUserName != "" {
    22  		username = e.DefaultUserName
    23  	}
    24  	if e.UsernameKey != "" {
    25  		v, ok := os.LookupEnv(e.UsernameKey)
    26  		if ok {
    27  			username = v
    28  		}
    29  	}
    30  	val, ok := os.LookupEnv(e.PasswordKey)
    31  	if ok && val != "" {
    32  		return &Credentials{
    33  			Username: username,
    34  			Password: val,
    35  		}, nil
    36  	}
    37  	return nil, fmt.Errorf("no token found in environment variable %s", e.PasswordKey)
    38  }