settings
API
settings
packageAPI reference for the settings
package.
Imports
(5)
S
struct
Config
settings/config.go:21-34
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:36-61
func GetApxDefaultConfig() (*Config, error)
{
config, err := conf.NewBuilder[Config]("apx").
WithType("json").
WithOptional(true).
Build()
if err != nil {
return nil, err
}
distroboxPath := config.DistroboxPath
err = TestFile(distroboxPath)
if err != nil {
if os.IsNotExist(err) {
path, _ := LookPath("distrobox")
distroboxPath = path
}
}
Cnf := NewApxConfig(
config.ApxPath,
distroboxPath,
config.StorageDriver,
)
return Cnf, nil
}
F
function
NewApxConfig
Parameters
apxPath
string
distroboxPath
string
storageDriver
string
Returns
settings/config.go:63-92
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:94-105
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:107-110
func IsFlatpak() bool
{
id := os.Getenv("FLATPAK_ID")
return id != ""
}
F
function
TestFile
Parameters
path
string
Returns
error
settings/config.go:112-122
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:124-134
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)
}