Documentation
¶
Index ¶
- Constants
- Variables
- func NormalizeActionName(uses string) string
- func SaveConfig(cfg *Config, filename string) error
- func ShouldUpdate(currentVersion, newVersion, constraint string) bool
- type ActionConfig
- type Config
- func (c *Config) GetActionConfig(actionName string) ActionConfig
- func (c *Config) GetFormatSettings() *FormatSettings
- func (c *Config) GetIssuesExitCode() int
- func (c *Config) GetStyleSettings() *StyleSettings
- func (c *Config) GetTimeout() time.Duration
- func (c *Config) GetVersionFormat() string
- func (c *Config) IsLinterEnabled(linterName string) bool
- func (c *Config) SetActionConfig(actionName string, cfg ActionConfig)
- func (c *Config) Validate() error
- type FormatSettings
- type LinterConfig
- type LinterSettings
- type RunConfig
- type StyleSettings
- type UpgradeConfig
Constants ¶
const ( // DefaultTimeout is the default timeout for operations. DefaultTimeout = 5 * time.Minute // DefaultIssuesExitCode is the default exit code when lint issues are found. DefaultIssuesExitCode = 1 )
const ( LinterVersions = "versions" LinterPermissions = "permissions" LinterFormat = "format" LinterSecrets = "secrets" LinterInjection = "injection" LinterStyle = "style" )
Linter name constants.
const DefaultConfigFileName = ".github-ci.yaml"
DefaultConfigFileName is the default name of the configuration file.
Variables ¶
var DefaultActionConfig = ActionConfig{Constraint: defaultVersionConstraint}
DefaultActionConfig is the default configuration for newly discovered actions.
Functions ¶
func NormalizeActionName ¶
NormalizeActionName extracts the action name from a uses string.
func SaveConfig ¶
SaveConfig saves the configuration to the specified file.
func ShouldUpdate ¶
ShouldUpdate determines if a version update should be applied. Constraints:
- "": any newer version
- "^X.0.0": same major version (X.y.z)
- "~X.Y.0": same major.minor version (X.Y.z)
Types ¶
type ActionConfig ¶
type ActionConfig struct {
Constraint string `yaml:"constraint"`
}
ActionConfig specifies the version constraint for a GitHub Action.
type Config ¶
type Config struct {
Run *RunConfig `yaml:"run,omitempty"`
Linters *LinterConfig `yaml:"linters,omitempty"`
Upgrade *UpgradeConfig `yaml:"upgrade,omitempty"`
}
Config represents the GitHub CI configuration file structure.
func LoadConfig ¶
LoadConfig loads configuration from the specified file. Returns defaults if file doesn't exist.
func NewDefaultConfig ¶
func NewDefaultConfig() *Config
NewDefaultConfig creates a new Config with default values.
func NewFullDefaultConfig ¶
func NewFullDefaultConfig() *Config
NewFullDefaultConfig creates a new Config with all settings explicitly set to defaults. This is useful for generating a complete configuration file with all options visible.
func (*Config) GetActionConfig ¶
func (c *Config) GetActionConfig(actionName string) ActionConfig
GetActionConfig returns the action config, or default if not found.
func (*Config) GetFormatSettings ¶
func (c *Config) GetFormatSettings() *FormatSettings
GetFormatSettings returns the format linter settings from config.
func (*Config) GetIssuesExitCode ¶
GetIssuesExitCode returns the configured exit code for when issues are found. Returns DefaultIssuesExitCode (1) if not configured or invalid. Exit codes must be in range 1-255; values outside this range return the default.
func (*Config) GetStyleSettings ¶
func (c *Config) GetStyleSettings() *StyleSettings
GetStyleSettings returns the style linter settings from config.
func (*Config) GetTimeout ¶
GetTimeout returns the configured timeout duration. Returns DefaultTimeout if not configured or invalid.
func (*Config) GetVersionFormat ¶
GetVersionFormat returns the version format for upgrades: "tag", "hash", or "major". Defaults to "tag" if not specified.
func (*Config) IsLinterEnabled ¶
IsLinterEnabled checks if a linter is enabled based on configuration.
func (*Config) SetActionConfig ¶
func (c *Config) SetActionConfig(actionName string, cfg ActionConfig)
SetActionConfig sets the configuration for an action.
type FormatSettings ¶
type FormatSettings struct {
// IndentWidth is the number of spaces per indentation level (default: 2)
IndentWidth int `yaml:"indent-width"`
// MaxLineLength is the maximum allowed line length (default: 120)
MaxLineLength int `yaml:"max-line-length"`
}
FormatSettings contains settings for the format linter.
func DefaultFormatSettings ¶
func DefaultFormatSettings() *FormatSettings
DefaultFormatSettings returns the default format linter settings.
func (*FormatSettings) Validate ¶
func (f *FormatSettings) Validate() error
Validate checks FormatSettings for invalid values.
type LinterConfig ¶
type LinterConfig struct {
Default string `yaml:"default"` // "all" or "none"
Enable []string `yaml:"enable"` // Linters to enable
Disable []string `yaml:"disable"` // Linters to disable
Settings *LinterSettings `yaml:"settings,omitempty"` // Per-linter settings
}
LinterConfig specifies which linters to enable and their behavior. Disabled linters take precedence over enabled linters.
func DefaultLinterConfig ¶
func DefaultLinterConfig() *LinterConfig
DefaultLinterConfig returns a minimal LinterConfig with default values.
func FullDefaultLinterConfig ¶
func FullDefaultLinterConfig() *LinterConfig
FullDefaultLinterConfig returns a LinterConfig with all settings explicitly set.
func (*LinterConfig) Validate ¶
func (l *LinterConfig) Validate() error
Validate checks LinterConfig for invalid values.
type LinterSettings ¶
type LinterSettings struct {
Format *FormatSettings `yaml:"format,omitempty"`
Style *StyleSettings `yaml:"style,omitempty"`
}
LinterSettings contains per-linter configuration.
func (*LinterSettings) Validate ¶
func (s *LinterSettings) Validate() error
Validate checks LinterSettings for invalid values.
type RunConfig ¶
type RunConfig struct {
Timeout string `yaml:"timeout"` // Duration string (e.g., "2m", "30s")
IssuesExitCode int `yaml:"issues-exit-code"` // Exit code when issues are found (default: 1)
}
RunConfig specifies general runtime settings.
type StyleSettings ¶
type StyleSettings struct {
// MinNameLength is the minimum allowed characters for names (default: 3)
MinNameLength int `yaml:"min-name-length"`
// MaxNameLength is the maximum allowed characters for names (default: 50)
MaxNameLength int `yaml:"max-name-length"`
// NamingConvention enforces naming style (default: "" - no enforcement):
// - "title": Every word must start with uppercase (e.g., "Build And Test", "Setup Go")
// - "sentence": Name must start with uppercase (e.g., "Build and test", "Upload to Codecov")
// - "": No naming convention enforced
NamingConvention string `yaml:"naming-convention"`
// CheckoutFirst warns if actions/checkout is not the first step
CheckoutFirst bool `yaml:"checkout-first"`
// RequireStepNames requires all steps to have explicit names
RequireStepNames bool `yaml:"require-step-names"`
// MaxRunLines is the maximum allowed lines in a run script (0 = disabled)
MaxRunLines int `yaml:"max-run-lines"`
}
StyleSettings contains settings for the style linter.
func DefaultStyleSettings ¶
func DefaultStyleSettings() *StyleSettings
DefaultStyleSettings returns the default style linter settings.
func (*StyleSettings) Validate ¶
func (s *StyleSettings) Validate() error
Validate checks StyleSettings for invalid values.
type UpgradeConfig ¶
type UpgradeConfig struct {
Actions map[string]ActionConfig `yaml:"actions"`
Format string `yaml:"format"` // "tag", "hash", or "major"
}
UpgradeConfig specifies settings for the upgrade command.
func DefaultUpgradeConfig ¶
func DefaultUpgradeConfig() *UpgradeConfig
DefaultUpgradeConfig returns an UpgradeConfig with default values.
func (*UpgradeConfig) EnsureDefaults ¶
func (u *UpgradeConfig) EnsureDefaults()
EnsureDefaults sets default values for any uninitialized fields.
func (*UpgradeConfig) Validate ¶
func (u *UpgradeConfig) Validate() error
Validate checks UpgradeConfig for invalid values.