package config import ( "errors" "fmt" "os" "path/filepath" "runtime" "git.netflux.io/rob/octoplex/internal/domain" ) func createAppConfigDir(configDir string) (string, error) { path := filepath.Join(configDir, domain.AppName) if err := os.MkdirAll(path, 0744); err != nil { return "", fmt.Errorf("mkdir all: %w", err) } return path, nil } func createAppStateDir() (string, error) { userHomeDir, err := os.UserHomeDir() if err != nil { return "", err } var dir string switch runtime.GOOS { case "darwin": dir = filepath.Join(userHomeDir, "/Library", "Caches", domain.AppName) case "windows": // TODO: Windows support return "", errors.New("not implemented") default: // Unix-like dir = filepath.Join(userHomeDir, ".state", domain.AppName) } if err := os.MkdirAll(dir, 0744); err != nil { return "", fmt.Errorf("mkdir all: %w", err) } return dir, nil }