Set default data, state, config paths via env vars

Resolves https://github.com/unmojang/drasl/issues/119.

May be useful for some containerized deployments.
This commit is contained in:
Evan Goode 2024-12-28 22:24:28 -05:00
parent f562e8b058
commit 32840a628e
4 changed files with 22 additions and 3 deletions

View File

@ -12,3 +12,15 @@ const LICENSE_URL = "https://www.gnu.org/licenses/gpl-3.0.en.html"
const DEFAULT_DATA_DIRECTORY = "/usr/share/drasl"
const DEFAULT_STATE_DIRECTORY = "/var/lib/drasl"
const DEFAULT_CONFIG_DIRECTORY = "/etc/drasl"
func GetDefaultDataDirectory() string {
return Getenv("DRASL_DEFAULT_DATA_DIRECTORY", DEFAULT_DATA_DIRECTORY)
}
func GetDefaultStateDirectory() string {
return Getenv("DRASL_DEFAULT_STATE_DIRECTORY", DEFAULT_STATE_DIRECTORY)
}
func GetDefaultConfigDirectory() string {
return Getenv("DRASL_DEFAULT_CONFIG_DIRECTORY", DEFAULT_CONFIG_DIRECTORY)
}

View File

@ -65,7 +65,7 @@ var Constants = &ConstantsType{
MaxPlayerCountUnlimited: -1,
MaxUsernameLength: 16,
MaxPlayerNameLength: 16,
ConfigDirectory: DEFAULT_CONFIG_DIRECTORY,
ConfigDirectory: GetDefaultConfigDirectory(),
Version: VERSION,
License: LICENSE,
LicenseURL: LICENSE_URL,

View File

@ -116,7 +116,7 @@ func DefaultConfig() Config {
ApplicationOwner: "Anonymous",
BaseURL: "",
BodyLimit: defaultBodyLimitConfig,
DataDirectory: DEFAULT_DATA_DIRECTORY,
DataDirectory: GetDefaultDataDirectory(),
DefaultAdmins: []string{},
DefaultPreferredLanguage: "en",
DefaultMaxPlayerCount: 1,
@ -147,7 +147,7 @@ func DefaultConfig() Config {
},
SignPublicKeys: true,
SkinSizeLimit: 128,
StateDirectory: DEFAULT_STATE_DIRECTORY,
StateDirectory: GetDefaultStateDirectory(),
TestMode: false,
TokenExpireSec: 0,
TokenStaleSec: 0,

View File

@ -163,3 +163,10 @@ func CopyPath(sourcePath string, destinationPath string) (int64, error) {
}
return bytesWritten, nil
}
func Getenv(key string, fallback string) string {
if value := os.Getenv(key); value != "" {
return value
}
return fallback
}