Support system-wide containers config folder on windows

Add %PROGRAMDATA%/containers to the list of possible
config folders.

Fixes https://github.com/containers/podman/issues/22411

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
This commit is contained in:
Mario Loriedo 2024-04-29 14:49:29 +02:00
parent a412b08d4e
commit 8921ad98b6
4 changed files with 30 additions and 10 deletions

View File

@ -21,9 +21,6 @@ import (
)
const (
// _configPath is the path to the containers/containers.conf
// inside a given config directory.
_configPath = "containers/containers.conf"
// UserOverrideContainersConfig holds the containers config path overridden by the rootless user
UserOverrideContainersConfig = ".config/" + _configPath
// Token prefix for looking for helper binary under $BINDIR

View File

@ -9,6 +9,10 @@ import (
"github.com/containers/storage/pkg/unshare"
)
// _configPath is the path to the containers/containers.conf
// inside a given config directory.
const _configPath = "containers/containers.conf"
// userConfigPath returns the path to the users local config that is
// not shared with other users. It uses $XDG_CONFIG_HOME/containers...
// if set or $HOME/.config/containers... if not.
@ -23,3 +27,9 @@ func userConfigPath() (string, error) {
return filepath.Join(home, UserOverrideContainersConfig), nil
}
// overrideContainersConfigPath returns the default config path overridden
// by the root user
func overrideContainersConfigPath() (string, error) {
return OverrideContainersConfig, nil
}

View File

@ -3,11 +3,12 @@ package config
import "os"
const (
// OverrideContainersConfig holds the default config path overridden by the root user
OverrideContainersConfig = "/etc/" + _configPath
// _configPath is the path to the containers/containers.conf
// inside a given config directory.
_configPath = "containers\\containers.conf"
// DefaultContainersConfig holds the default containers config path
DefaultContainersConfig = "/usr/share/" + _configPath
DefaultContainersConfig = ""
// DefaultSignaturePolicyPath is the default value for the
// policy.json file.
@ -20,7 +21,13 @@ const (
// userConfigPath returns the path to the users local config that is
// not shared with other users. It uses $APPDATA/containers...
func userConfigPath() (string, error) {
return os.Getenv("APPDATA") + "\\containers\\containers.conf", nil
return os.Getenv("APPDATA") + _configPath, nil
}
// overrideContainersConfigPath returns the path to the system wide
// containers config folder. It users $PROGRAMDATA/containers...
func overrideContainersConfigPath() (string, error) {
return os.Getenv("ProgramData") + _configPath, nil
}
var defaultHelperBinariesDir = []string{

View File

@ -158,16 +158,22 @@ func systemConfigs() (configs []string, finalErr error) {
}
return append(configs, path), nil
}
configs = append(configs, DefaultContainersConfig)
configs = append(configs, OverrideContainersConfig)
var err error
configs, err = addConfigs(OverrideContainersConfig+".d", configs)
path, err := overrideContainersConfigPath()
if err != nil {
return nil, err
}
configs = append(configs, path)
configs, err = addConfigs(path+".d", configs)
if err != nil {
return nil, err
}
path, err := userConfigPath()
path, err = userConfigPath()
if err != nil {
return nil, err
}