settings
API
settings
packageAPI reference for the settings
package.
S
struct
Config
settings/config.go:22-35
type Config struct
Fields
| Name | Type | Description |
|---|---|---|
| ApxPath | string | json:"apxPath" |
| DistroboxPath | string | json:"distroboxPath" |
| StorageDriver | string | json:"storageDriver" |
| UserApxPath | string | |
| ApxStoragePath | string | |
| StacksPath | string | |
| UserStacksPath | string | |
| PkgManagersPath | string | |
| UserPkgManagersPath | string |
F
function
GetApxDefaultConfig
Returns
error
settings/config.go:37-92
func GetApxDefaultConfig() (*Config, error)
{
userConfigDir, err := os.UserConfigDir()
if err != nil {
return nil, err
}
// dev paths
viper.AddConfigPath("config/")
// tests paths
viper.AddConfigPath("../config/")
// user paths
viper.AddConfigPath(filepath.Join(userConfigDir, "apx/"))
// prod paths
viper.AddConfigPath("/etc/apx/")
viper.AddConfigPath("/usr/share/apx/")
// flatpak paths
viper.AddConfigPath("/app/share/apx/")
viper.SetConfigName("apx")
viper.SetConfigType("json")
err = viper.ReadInConfig()
if err != nil {
fmt.Printf("Unable to read config file: \n\t%s\n", err)
os.Exit(1)
}
// if viper.ConfigFileUsed() != "/etc/apx/apx.json" || viper.ConfigFileUsed() != "/usr/share/apx/apx.json" {
// fmt.Printf("Using config file: %s\n\n", viper.ConfigFileUsed())
// }
distroboxPath := viper.GetString("distroboxPath")
err = TestFile(distroboxPath)
if err != nil {
if os.IsNotExist(err) {
path, err := LookPath("distrobox")
if err != nil {
fmt.Printf("Unable to find distrobox in PATH.\n")
} else {
distroboxPath = path
}
}
}
Cnf := NewApxConfig(
viper.GetString("apxPath"),
distroboxPath,
viper.GetString("storageDriver"),
)
return Cnf, nil
}
F
function
NewApxConfig
Parameters
apxPath
string
distroboxPath
string
storageDriver
string
Returns
settings/config.go:94-123
func NewApxConfig(apxPath, distroboxPath, storageDriver string) *Config
{
userDataDir, err := UserDataDir()
if err != nil {
panic(err)
}
Cnf := &Config{
// Common
ApxPath: apxPath,
DistroboxPath: distroboxPath,
StorageDriver: storageDriver,
// Virtual
ApxStoragePath: "",
UserApxPath: "",
StacksPath: "",
UserStacksPath: "",
PkgManagersPath: "",
UserPkgManagersPath: "",
}
Cnf.UserApxPath = filepath.Join(userDataDir, "apx")
Cnf.ApxStoragePath = filepath.Join(Cnf.UserApxPath, "storage")
Cnf.StacksPath = filepath.Join(Cnf.ApxPath, "stacks")
Cnf.UserStacksPath = filepath.Join(Cnf.UserApxPath, "stacks")
Cnf.PkgManagersPath = filepath.Join(Cnf.ApxPath, "package-managers")
Cnf.UserPkgManagersPath = filepath.Join(Cnf.UserApxPath, "package-managers")
return Cnf
}
F
function
UserDataDir
Returns
string
error
settings/config.go:125-136
func UserDataDir() (string, error)
{
dir := os.Getenv("XDG_DATA_HOME")
if dir != "" {
return dir, nil
}
userHome, err := os.UserHomeDir()
if err != nil {
return "", err
}
return filepath.Join(userHome, ".local", "share"), nil
}
F
function
IsFlatpak
Returns
bool
settings/config.go:138-141
func IsFlatpak() bool
{
id := os.Getenv("FLATPAK_ID")
return id != ""
}
F
function
TestFile
Parameters
path
string
Returns
error
settings/config.go:143-153
func TestFile(path string) error
{
if IsFlatpak() {
cmd := exec.Command("flatpak-spawn", "--host", "test", "-f", path)
if err := cmd.Run(); err != nil {
return os.ErrNotExist
}
return nil
}
_, err := os.Stat(path)
return err
}
F
function
LookPath
Parameters
file
string
Returns
string
error
settings/config.go:155-165
func LookPath(file string) (string, error)
{
if IsFlatpak() {
cmd := exec.Command("flatpak-spawn", "--host", "which", file)
output, err := cmd.Output()
if err != nil {
return "", err
}
return strings.TrimSpace(string(output)), nil
}
return exec.LookPath(file)
}