45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package app
|
|
|
|
import "gitea.maximumdirect.net/eric/distributor/internal/config"
|
|
|
|
type runtimeSetup struct {
|
|
ConfigPath string
|
|
Config config.Config
|
|
Environment config.Environment
|
|
Warnings []OutputWarning
|
|
}
|
|
|
|
func loadRuntimeSetup(configPath string) (runtimeSetup, error) {
|
|
resolvedPath := runtimeConfigPath(configPath)
|
|
cfg, err := config.LoadFile(resolvedPath)
|
|
if err != nil {
|
|
return runtimeSetup{}, err
|
|
}
|
|
return runtimeSetupFromConfig(resolvedPath, cfg)
|
|
}
|
|
|
|
func runtimeSetupFromConfig(configPath string, cfg config.Config) (runtimeSetup, error) {
|
|
secretLoad, err := config.LoadSecretEnvironment(cfg.Secrets.Directory, nil)
|
|
if err != nil {
|
|
return runtimeSetup{}, err
|
|
}
|
|
return runtimeSetup{
|
|
ConfigPath: configPath,
|
|
Config: cfg,
|
|
Environment: secretLoad.Environment,
|
|
Warnings: secretConflictWarnings(secretLoad.Conflicts),
|
|
}, nil
|
|
}
|
|
|
|
func runtimeConfigPath(configPath string) string {
|
|
if configPath == "" {
|
|
return config.DefaultConfigPath
|
|
}
|
|
return configPath
|
|
}
|
|
|
|
func (setup runtimeSetup) withPipelines(pipelines []config.Pipeline) runtimeSetup {
|
|
setup.Config.Pipelines = pipelines
|
|
return setup
|
|
}
|