Pulse/internal/api/auth_env_path.go

53 lines
1.3 KiB
Go

package api
import (
"fmt"
"os"
"path/filepath"
"github.com/rcourtman/pulse-go-rewrite/internal/config"
)
func resolveAuthEnvPath(configPath string) string {
return filepath.Join(config.ResolveRuntimeDataDir(configPath), ".env")
}
func resolveAuthEnvWritePaths(configPath string, dataPath string) []string {
paths := []string{resolveAuthEnvPath(configPath)}
dataEnvPath := resolveAuthEnvPath(dataPath)
if dataEnvPath != paths[0] {
paths = append(paths, dataEnvPath)
}
return paths
}
func writeAuthEnvFile(configPath string, dataPath string, content []byte) (string, error) {
paths := resolveAuthEnvWritePaths(configPath, dataPath)
var lastErr error
for _, envPath := range paths {
if err := os.MkdirAll(filepath.Dir(envPath), 0755); err != nil {
lastErr = err
continue
}
if err := os.WriteFile(envPath, content, 0600); err != nil {
lastErr = err
continue
}
return envPath, nil
}
if lastErr == nil {
lastErr = fmt.Errorf("no auth env write path available")
}
return "", lastErr
}
func removeAuthEnvFiles(configPath string, dataPath string) error {
paths := resolveAuthEnvWritePaths(configPath, dataPath)
var lastErr error
for _, envPath := range paths {
if err := os.Remove(envPath); err != nil && !os.IsNotExist(err) {
lastErr = err
}
}
return lastErr
}