Dan Anglin
cc5e3f0044
- Move the build and application information to the internal info package. - Move the user agent and redirect URI string to the internal client package.
78 lines
1.8 KiB
Go
78 lines
1.8 KiB
Go
package utilities
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"codeflow.dananglin.me.uk/apollo/enbas/internal/info"
|
|
)
|
|
|
|
const (
|
|
cacheMediaDir = "media"
|
|
cacheStatusesDir = "statuses"
|
|
)
|
|
|
|
func CalculateConfigDir(configDir string) (string, error) {
|
|
if configDir != "" {
|
|
return configDir, nil
|
|
}
|
|
|
|
configRoot, err := os.UserConfigDir()
|
|
if err != nil {
|
|
return "", fmt.Errorf("unable to get your default config diretory: %w", err)
|
|
}
|
|
|
|
return filepath.Join(configRoot, info.ApplicationName), nil
|
|
}
|
|
|
|
func CalculateMediaCacheDir(cacheRoot, instance string) (string, error) {
|
|
cacheDir, err := calculateCacheDir(cacheRoot, instance)
|
|
if err != nil {
|
|
return "", fmt.Errorf("unable to calculate the cache directory: %w", err)
|
|
}
|
|
|
|
return filepath.Join(cacheDir, cacheMediaDir), nil
|
|
}
|
|
|
|
func CalculateStatusesCacheDir(cacheRoot, instance string) (string, error) {
|
|
cacheDir, err := calculateCacheDir(cacheRoot, instance)
|
|
if err != nil {
|
|
return "", fmt.Errorf("unable to calculate the cache directory: %w", err)
|
|
}
|
|
|
|
return filepath.Join(cacheDir, cacheStatusesDir), nil
|
|
}
|
|
|
|
func calculateCacheDir(cacheRoot, instance string) (string, error) {
|
|
fqdn := GetFQDN(instance)
|
|
|
|
if cacheRoot != "" {
|
|
return filepath.Join(cacheRoot, fqdn), nil
|
|
}
|
|
|
|
cacheRoot, err := os.UserCacheDir()
|
|
if err != nil {
|
|
return "", fmt.Errorf("unable to get your default cache directory: %w", err)
|
|
}
|
|
|
|
return filepath.Join(cacheRoot, info.ApplicationName, fqdn), nil
|
|
}
|
|
|
|
func EnsureDirectory(dir string) error {
|
|
if _, err := os.Stat(dir); err != nil {
|
|
if errors.Is(err, os.ErrNotExist) {
|
|
if err := os.MkdirAll(dir, 0o750); err != nil {
|
|
return fmt.Errorf("unable to create %s: %w", dir, err)
|
|
}
|
|
} else {
|
|
return fmt.Errorf(
|
|
"received an unknown error after getting the directory information: %w",
|
|
err,
|
|
)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|