Documentation ¶
Index ¶
- func ParseConfig(configPath string, config *Configuration, ctx *cli.Context) error
- type Configuration
- type GitConfig
- type LogConfig
- type ProjectConfig
- type PullRequestConfig
- type RepositoryLabel
- type RepositoryLabelConverter
- type RepositoryLabelMap
- type RepositoryLabelSetConverter
- type TemplateConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ParseConfig ¶
func ParseConfig(configPath string, config *Configuration, ctx *cli.Context) error
ParseConfig overrides given config defaults from file and with environment variables.
Types ¶
type Configuration ¶
type Configuration struct { Project *ProjectConfig `json:"project" koanf:"project"` Log *LogConfig `json:"log" koanf:"log"` PullRequest *PullRequestConfig `json:"pr" koanf:"pr"` Template *TemplateConfig `json:"template" koanf:"template"` Git *GitConfig `json:"git" koanf:"git"` RepositoryLabels RepositoryLabelMap `json:"repositoryLabels" koanf:"repositoryLabels"` }
Configuration holds a strongly-typed tree of the main configuration
func NewDefaultConfig ¶
func NewDefaultConfig() *Configuration
NewDefaultConfig retrieves the hardcoded configs with sane defaults
type GitConfig ¶
type GitConfig struct { SkipReset bool `json:"skipReset"` SkipCommit bool `json:"skipCommit"` SkipPush bool `json:"skipPush"` ForcePush bool `json:"forcePush"` // Amend will amend the last commit. // This option is not configurable in `greposync.yml`. // Configurable only via environment variables or CLI flag. Amend bool `json:"-" koanf:"amend"` // CommitMessage is the string that is passed to `git commit`. // It can contain newlines, for example to pass a long description. CommitMessage string `json:"commitMessage" koanf:"commitMessage"` CommitBranch string `json:"commitBranch" koanf:"commitBranch"` // DefaultBranch is the name of the default branch in origin. DefaultBranch string `json:"defaultBranch"` // Name is the git repository name without .git extension. Name string `json:"name"` // Namespace is the repository owner without the repository name. // This is often a user or organization name in GitHub.com or GitLab.com. Namespace string `json:"namespace"` }
GitConfig configures a git repository. This structure is used to configuring the sync behaviour It is also passed to templates with filled-in information
type LogConfig ¶
type LogConfig struct { Level int `json:"level" koanf:"level"` ShowDiff bool `json:"showDiff" koanf:"showDiff"` // Shows the full log in real-time rather than keeping it hidden until an error occurred. ShowLog bool `json:"showLog" koanf:"showLog"` }
LogConfig configures the logging options
type ProjectConfig ¶
type ProjectConfig struct { MainConfigFileName string `json:"-"` ConfigDefaultFileName string `json:"-"` // RootDir is the local directory where the Git repositories are cloned into. RootDir string `json:"rootDir" koanf:"rootDir"` // Jobs is the number of parallel jobs to run. // Requires a minimum of 1, supports a maximum of 8. // 1 basically means that jobs are run in sequence. // If this number is 2 or greater, then the logs are buffered and only displayed in case of errors. Jobs int `json:"jobs" koanf:"jobs"` // Include is a regex filter that includes repositories only when they match. // The filter is applied to the whole URL. // This option is not configurable in `greposync.yml`. Include string `json:"-" koanf:"include"` // Exclude is similar to Include, only that matching repository URLs are skipped. // This option is not configurable in `greposync.yml`. Exclude string `json:"-" koanf:"exclude"` SkipBroken bool `json:"-" koanf:"skipBroken"` }
ProjectConfig configures the main config settings
type PullRequestConfig ¶
type PullRequestConfig struct { Create bool `json:"create" koanf:"create"` // TargetBranch is the target remote branch of the pull request. // If left empty, it will target the default branch. TargetBranch string `json:"targetBranch" koanf:"targetBranch"` // Labels is an array of issue labels to apply when creating a pull request. // Labels on existing pull requests are not updated. // It is not validated whether the labels exist, the API may or may not create non-existing labels dynamically. Labels []string `json:"labels" koanf:"labels"` // BodyTemplate is the description used in pull requests. // Supports Go template with the `.Metadata` key. // If this string is a relative path to an existing file in the greposync directory, the file is parsed as a Go template. // If empty, the CommitMessage is used. BodyTemplate string `json:"bodyTemplate" koanf:"bodyTemplate"` // Subject is the Pull Request title. Subject string `json:"subject" koanf:"subject"` }
PullRequestConfig configures the pull request feature
type RepositoryLabel ¶ added in v0.2.0
type RepositoryLabel struct { // Name is the label name. Name string `json:"name" koanf:"name"` // Description is a short description of the label. Description string `json:"description" koanf:"description"` // Color is the hexadecimal color code for the label, without the leading #. Color string `json:"color" koanf:"color"` // Delete will remove this label. Delete bool `json:"delete" koanf:"delete"` }
RepositoryLabel is a struct describing a Label on a Git hosting service like GitHub.
type RepositoryLabelConverter ¶ added in v0.2.0
type RepositoryLabelConverter struct{}
func (RepositoryLabelConverter) ConvertToEntity ¶ added in v0.2.0
func (RepositoryLabelConverter) ConvertToEntity(label RepositoryLabel) (domain.Label, error)
ConvertToEntity converts the given object to another.
type RepositoryLabelMap ¶ added in v0.2.0
type RepositoryLabelMap map[string]RepositoryLabel
func (RepositoryLabelMap) SelectDeletions ¶ added in v0.2.0
func (s RepositoryLabelMap) SelectDeletions() []RepositoryLabel
func (RepositoryLabelMap) SelectModifications ¶ added in v0.2.0
func (s RepositoryLabelMap) SelectModifications() []RepositoryLabel
func (RepositoryLabelMap) Values ¶ added in v0.2.0
func (s RepositoryLabelMap) Values() []RepositoryLabel
type RepositoryLabelSetConverter ¶ added in v0.2.0
type RepositoryLabelSetConverter struct{}
func (RepositoryLabelSetConverter) ConvertToEntity ¶ added in v0.2.0
func (RepositoryLabelSetConverter) ConvertToEntity(labels []RepositoryLabel) (domain.LabelSet, error)
ConvertToEntity converts the given object to another. Returns a non-nil empty list if labels is empty or nil.
type TemplateConfig ¶
type TemplateConfig struct { // RootDir is the path relative to the current workdir where the template files are located. RootDir string `json:"rootDir" koanf:"rootDir"` }
TemplateConfig configures template settings