38 lines
1013 B
Go
38 lines
1013 B
Go
package cli
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
|
|
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
|
"gitea.maximumdirect.net/eric/notarius/internal/core/config"
|
|
)
|
|
|
|
func loadConfigKit(configPath, profile string, overrides []configkit.Override, opts Options) (*config.LoadedConfig, string, error) {
|
|
path, err := discoverConfigPath(configPath, opts)
|
|
if err != nil {
|
|
return nil, "", err
|
|
}
|
|
workingDirectory, err := os.Getwd()
|
|
if err != nil {
|
|
return nil, "", fmt.Errorf("determine invocation directory: %w", err)
|
|
}
|
|
loaded, err := config.Load(path, config.LoadOptions{Profile: profile, Overrides: overrides, InvocationDirectory: workingDirectory})
|
|
if err != nil {
|
|
return nil, "", err
|
|
}
|
|
return loaded, path, nil
|
|
}
|
|
|
|
func writeConfigLoadError(output io.Writer, err error) {
|
|
var loadError *configkit.LoadError
|
|
if errors.As(err, &loadError) {
|
|
if writeErr := configkit.WriteDiagnostics(output, loadError.Diagnostics()); writeErr == nil {
|
|
return
|
|
}
|
|
}
|
|
fmt.Fprintf(output, "notarius: %v\n", err)
|
|
}
|