config

package
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 17, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package config implements parsing of ghe-reposec configurations.

Index

Constants

View Source
const (
	// GHEAPIPath is the default GitHub Enterprise API path.
	GHEAPIPath = "/api/v3/"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	LogLevel       string `env:"LOG_LEVEL" envDefault:"info"`
	LogOutput      string `env:"LOG_OUTPUT" envDefault:"stdout"`
	LogFormat      string `env:"LOG_OUTPUT_FORMAT" envDefault:"text"`
	TargetOrg      string `env:"TARGET_ORG"`
	OutputFilePath string `env:"OUTPUT_FILE" envDefault:"/tmp/reposec.csv"`
	OutputFormat   string `env:"OUTPUT_FORMAT" envDefault:"csv"`

	GHECfg     GHEConfig
	LavaCfg    LavaConfig
	MetricsCfg MetricsConfig
}

Config represents the ghe-reposec configuration.

func Load

func Load() (*Config, error)

Load parses the configuration from the environment.

func (*Config) NewLogger

func (c *Config) NewLogger() slog.Logger

NewLogger creates a new logger based on the configuration.

func (Config) Redacted

func (c Config) Redacted() Config

Redacted returns a secret redacted version of the configuration.

type GHEConfig

type GHEConfig struct {
	Token       string `env:"GHE_TOKEN,required"`
	BaseURL     string `env:"GHE_BASE_URL,required"`
	Concurrency int    `env:"GHE_CONCURRENCY" envDefault:"15"`

	RepositorySizeLimit int  `env:"GHE_REPOSITORY_SIZE_LIMIT" envDefault:"3145728"` // 3GB
	IncludeArchived     bool `env:"GHE_INCLUDE_ARCHIVED" envDefault:"false"`
	IncludeEmpty        bool `env:"GHE_INCLUDE_EMPTY" envDefault:"false"`
	IncludeForks        bool `env:"GHE_INCLUDE_FORKS" envDefault:"false"`
	IncludeTemplates    bool `env:"GHE_INCLUDE_TEMPLATES" envDefault:"false"`
	IncludeDisabled     bool `env:"GHE_INCLUDE_DISABLED" envDefault:"false"`
	MinLastActivityDays int  `env:"GHE_MIN_LAST_ACTIVITY_DAYS" envDefault:"0"`
}

GHEConfig represents the GitHub Enterprise configuration.

type LavaConfig

type LavaConfig struct {
	Token       string `env:"GHE_TOKEN,required"`
	BaseURL     string `env:"GHE_BASE_URL,required"`
	Concurrency int    `env:"LAVA_CONCURRENCY" envDefault:"10"`
	BinaryPath  string `env:"LAVA_BINARY_PATH" envDefault:"/usr/bin/lava"`
	// TODO: Build, publish and set a "production ready docker image" once the
	// check PR has been merged.
	CheckImage  string `env:"LAVA_CHECK_IMAGE" envDefault:"vulcansec/vulcan-repository-sctrl:edge"`
	ResultsPath string `env:"LAVA_RESULTS_PATH"`
}

LavaConfig represents the Lava configuration.

type MetricsConfig added in v0.1.2

type MetricsConfig struct {
	Enabled   bool     `env:"METRICS_ENABLED" envDefault:"false"`
	Address   string   `env:"METRICS_ADDRESS" envDefault:"localhost:8125"`
	Namespace string   `env:"METRICS_NAMESPACE" envDefault:"ghereposec"`
	Tags      []string `env:"METRICS_TAGS" envSeparator:"," envDefault:"ghereposec:metrics"`
}

MetricsConfig represents the metrics configuration.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL