1
0
mirror of https://github.com/quay/quay.git synced 2026-01-27 18:42:52 +03:00
Files
quay/config-tool/pkg/lib/fieldgroups/gitlabbuildtrigger/gitlabbuildtrigger.go
2023-07-28 16:34:05 +02:00

78 lines
3.2 KiB
Go

package gitlabbuildtrigger
import (
"errors"
"github.com/creasty/defaults"
)
// GitLabBuildTriggerFieldGroup represents the GitLabBuildTriggerFieldGroup config fields
type GitLabBuildTriggerFieldGroup struct {
FeatureBuildSupport bool `default:"false" validate:"" json:"FEATURE_BUILD_SUPPORT" yaml:"FEATURE_BUILD_SUPPORT"`
FeatureGitlabBuild bool `default:"false" validate:"" json:"FEATURE_GITLAB_BUILD" yaml:"FEATURE_GITLAB_BUILD"`
GitlabTriggerConfig *GitlabTriggerConfigStruct `default:"" validate:"" json:"GITLAB_TRIGGER_CONFIG,omitempty" yaml:"GITLAB_TRIGGER_CONFIG,omitempty"`
}
// GitlabTriggerConfigStruct represents the GitlabTriggerConfigStruct config fields
type GitlabTriggerConfigStruct struct {
GitlabEndpoint string `default:"https://gitlab.com/" validate:"" json:"GITLAB_ENDPOINT,omitempty" yaml:"GITLAB_ENDPOINT,omitempty"`
ClientId string `default:"" validate:"" json:"CLIENT_ID,omitempty" yaml:"CLIENT_ID,omitempty"`
ClientSecret string `default:"" validate:"" json:"CLIENT_SECRET,omitempty" yaml:"CLIENT_SECRET,omitempty"`
}
// NewGitLabBuildTriggerFieldGroup creates a new GitLabBuildTriggerFieldGroup
func NewGitLabBuildTriggerFieldGroup(fullConfig map[string]interface{}) (*GitLabBuildTriggerFieldGroup, error) {
newGitLabBuildTriggerFieldGroup := &GitLabBuildTriggerFieldGroup{}
defaults.Set(newGitLabBuildTriggerFieldGroup)
if value, ok := fullConfig["FEATURE_BUILD_SUPPORT"]; ok {
newGitLabBuildTriggerFieldGroup.FeatureBuildSupport, ok = value.(bool)
if !ok {
return newGitLabBuildTriggerFieldGroup, errors.New("FEATURE_BUILD_SUPPORT must be of type bool")
}
}
if value, ok := fullConfig["FEATURE_GITLAB_BUILD"]; ok {
newGitLabBuildTriggerFieldGroup.FeatureGitlabBuild, ok = value.(bool)
if !ok {
return newGitLabBuildTriggerFieldGroup, errors.New("FEATURE_GITLAB_BUILD must be of type bool")
}
}
if value, ok := fullConfig["GITLAB_TRIGGER_CONFIG"]; ok {
var err error
value := value.(map[string]interface{})
newGitLabBuildTriggerFieldGroup.GitlabTriggerConfig, err = NewGitlabTriggerConfigStruct(value)
if err != nil {
return newGitLabBuildTriggerFieldGroup, err
}
}
return newGitLabBuildTriggerFieldGroup, nil
}
// NewGitlabTriggerConfigStruct creates a new GitlabTriggerConfigStruct
func NewGitlabTriggerConfigStruct(fullConfig map[string]interface{}) (*GitlabTriggerConfigStruct, error) {
newGitlabTriggerConfigStruct := &GitlabTriggerConfigStruct{}
defaults.Set(newGitlabTriggerConfigStruct)
if value, ok := fullConfig["GITLAB_ENDPOINT"]; ok {
newGitlabTriggerConfigStruct.GitlabEndpoint, ok = value.(string)
if !ok {
return newGitlabTriggerConfigStruct, errors.New("GITLAB_ENDPOINT must be of type string")
}
}
if value, ok := fullConfig["CLIENT_ID"]; ok {
newGitlabTriggerConfigStruct.ClientId, ok = value.(string)
if !ok {
return newGitlabTriggerConfigStruct, errors.New("CLIENT_ID must be of type string")
}
}
if value, ok := fullConfig["CLIENT_SECRET"]; ok {
newGitlabTriggerConfigStruct.ClientSecret, ok = value.(string)
if !ok {
return newGitlabTriggerConfigStruct, errors.New("CLIENT_SECRET must be of type string")
}
}
return newGitlabTriggerConfigStruct, nil
}