45 lines
895 B
Go
45 lines
895 B
Go
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
|
|
}
|