github.com/chenbh/concourse/v6@v6.4.2/skymarshal/skycmd/gitlab_flags.go (about)

     1  package skycmd
     2  
     3  import (
     4  	"encoding/json"
     5  	"errors"
     6  
     7  	"github.com/concourse/dex/connector/gitlab"
     8  	multierror "github.com/hashicorp/go-multierror"
     9  )
    10  
    11  func init() {
    12  	RegisterConnector(&Connector{
    13  		id:         "gitlab",
    14  		config:     &GitlabFlags{},
    15  		teamConfig: &GitlabTeamFlags{},
    16  	})
    17  }
    18  
    19  type GitlabFlags struct {
    20  	ClientID     string `long:"client-id" description:"(Required) Client id"`
    21  	ClientSecret string `long:"client-secret" description:"(Required) Client secret"`
    22  	Host         string `long:"host" description:"Hostname of Gitlab Enterprise deployment (Include scheme, No trailing slash)"`
    23  }
    24  
    25  func (flag *GitlabFlags) Name() string {
    26  	return "GitLab"
    27  }
    28  
    29  func (flag *GitlabFlags) Validate() error {
    30  	var errs *multierror.Error
    31  
    32  	if flag.ClientID == "" {
    33  		errs = multierror.Append(errs, errors.New("Missing client-id"))
    34  	}
    35  
    36  	if flag.ClientSecret == "" {
    37  		errs = multierror.Append(errs, errors.New("Missing client-secret"))
    38  	}
    39  
    40  	return errs.ErrorOrNil()
    41  }
    42  
    43  func (flag *GitlabFlags) Serialize(redirectURI string) ([]byte, error) {
    44  	if err := flag.Validate(); err != nil {
    45  		return nil, err
    46  	}
    47  
    48  	return json.Marshal(gitlab.Config{
    49  		ClientID:     flag.ClientID,
    50  		ClientSecret: flag.ClientSecret,
    51  		RedirectURI:  redirectURI,
    52  		BaseURL:      flag.Host,
    53  	})
    54  }
    55  
    56  type GitlabTeamFlags struct {
    57  	Users  []string `long:"user" description:"A whitelisted GitLab user" value-name:"USERNAME"`
    58  	Groups []string `long:"group" description:"A whitelisted GitLab group" value-name:"GROUP_NAME"`
    59  }
    60  
    61  func (flag *GitlabTeamFlags) GetUsers() []string {
    62  	return flag.Users
    63  }
    64  
    65  func (flag *GitlabTeamFlags) GetGroups() []string {
    66  	return flag.Groups
    67  }