github.com/chenbh/concourse/v6@v6.4.2/skymarshal/skycmd/github_flags.go (about) 1 package skycmd 2 3 import ( 4 "encoding/json" 5 "errors" 6 7 "github.com/concourse/dex/connector/github" 8 "github.com/concourse/flag" 9 multierror "github.com/hashicorp/go-multierror" 10 ) 11 12 func init() { 13 RegisterConnector(&Connector{ 14 id: "github", 15 config: &GithubFlags{}, 16 teamConfig: &GithubTeamFlags{}, 17 }) 18 } 19 20 type GithubFlags struct { 21 ClientID string `long:"client-id" description:"(Required) Client id"` 22 ClientSecret string `long:"client-secret" description:"(Required) Client secret"` 23 Host string `long:"host" description:"Hostname of GitHub Enterprise deployment (No scheme, No trailing slash)"` 24 CACert flag.File `long:"ca-cert" description:"CA certificate of GitHub Enterprise deployment"` 25 } 26 27 func (flag *GithubFlags) Name() string { 28 return "GitHub" 29 } 30 31 func (flag *GithubFlags) Validate() error { 32 var errs *multierror.Error 33 34 if flag.ClientID == "" { 35 errs = multierror.Append(errs, errors.New("Missing client-id")) 36 } 37 38 if flag.ClientSecret == "" { 39 errs = multierror.Append(errs, errors.New("Missing client-secret")) 40 } 41 42 return errs.ErrorOrNil() 43 } 44 45 func (flag *GithubFlags) Serialize(redirectURI string) ([]byte, error) { 46 if err := flag.Validate(); err != nil { 47 return nil, err 48 } 49 50 return json.Marshal(github.Config{ 51 ClientID: flag.ClientID, 52 ClientSecret: flag.ClientSecret, 53 RedirectURI: redirectURI, 54 HostName: flag.Host, 55 RootCA: flag.CACert.Path(), 56 TeamNameField: "both", 57 LoadAllGroups: true, 58 }) 59 } 60 61 type GithubTeamFlags struct { 62 Users []string `long:"user" description:"A whitelisted GitHub user" value-name:"USERNAME"` 63 Orgs []string `long:"org" description:"A whitelisted GitHub org" value-name:"ORG_NAME"` 64 Teams []string `long:"team" description:"A whitelisted GitHub team" value-name:"ORG_NAME:TEAM_NAME"` 65 } 66 67 func (flag *GithubTeamFlags) GetUsers() []string { 68 return flag.Users 69 } 70 71 func (flag *GithubTeamFlags) GetGroups() []string { 72 return append(flag.Orgs, flag.Teams...) 73 }