Base webui and backend additions
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
DefaultConfigDir = "/etc/ClusterCanvas"
|
||||
ConfigDirEnvVar = "CLUSTERCANVAS_CONFIG_DIR"
|
||||
ConfigKeyEnvVar = "CLUSTERCANVAS_CONFIG_KEY"
|
||||
|
||||
SettingsFileName = "settings.json"
|
||||
SecretsFileName = "secrets.enc"
|
||||
)
|
||||
|
||||
// ResolveDir returns the config directory using precedence:
|
||||
// 1. flagValue (-configdir), if non-empty
|
||||
// 2. CLUSTERCANVAS_CONFIG_DIR, if set
|
||||
// 3. /etc/ClusterCanvas
|
||||
//
|
||||
// Leading ~/ is expanded to the user home directory.
|
||||
func ResolveDir(flagValue string) (string, error) {
|
||||
candidate := strings.TrimSpace(flagValue)
|
||||
if candidate == "" {
|
||||
candidate = strings.TrimSpace(os.Getenv(ConfigDirEnvVar))
|
||||
}
|
||||
if candidate == "" {
|
||||
candidate = DefaultConfigDir
|
||||
}
|
||||
|
||||
expanded, err := expandHome(candidate)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return filepath.Clean(expanded), nil
|
||||
}
|
||||
|
||||
func expandHome(path string) (string, error) {
|
||||
if path == "~" {
|
||||
homeDirectory, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("expand home directory: %w", err)
|
||||
}
|
||||
return homeDirectory, nil
|
||||
}
|
||||
if strings.HasPrefix(path, "~/") {
|
||||
homeDirectory, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("expand home directory: %w", err)
|
||||
}
|
||||
return filepath.Join(homeDirectory, path[2:]), nil
|
||||
}
|
||||
return path, nil
|
||||
}
|
||||
|
||||
func ensureConfigDir(dir string) error {
|
||||
if err := os.MkdirAll(dir, 0o750); err != nil {
|
||||
return fmt.Errorf("create config dir %q: %w", dir, err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user