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 }