mirror of
https://github.com/dokku/dokku.git
synced 2025-12-29 00:25:08 +01:00
87 lines
2.4 KiB
Go
87 lines
2.4 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/dokku/dokku/plugins/common"
|
|
)
|
|
|
|
//Get retreives a value from a config. If appName is empty the global config is used.
|
|
func Get(appName string, key string) (value string, ok bool) {
|
|
env, err := loadAppOrGlobalEnv(appName)
|
|
if err != nil {
|
|
return "", false
|
|
}
|
|
return env.Get(key)
|
|
}
|
|
|
|
//GetWithDefault gets a value from a config. If appName is empty the global config is used. If the appName or key do not exist defaultValue is returned.
|
|
func GetWithDefault(appName string, key string, defaultValue string) (value string) {
|
|
value, ok := Get(appName, key)
|
|
if !ok {
|
|
return defaultValue
|
|
}
|
|
return value
|
|
}
|
|
|
|
//SetMany variables in the environment. If appName is empty the global config is used. If restart is true the app is restarted.
|
|
func SetMany(appName string, entries map[string]string, restart bool) (err error) {
|
|
global := appName == ""
|
|
env, err := loadAppOrGlobalEnv(appName)
|
|
if err != nil {
|
|
return
|
|
}
|
|
keys := make([]string, 0, len(entries))
|
|
for k, v := range entries {
|
|
env.Set(k, v)
|
|
keys = append(keys, k)
|
|
}
|
|
if len(entries) != 0 {
|
|
common.LogInfo1("Setting config vars")
|
|
fmt.Println(prettyPrintEnvEntries(" ", entries))
|
|
env.Write()
|
|
args := append([]string{appName, "set"}, keys...)
|
|
common.PlugnTrigger("post-config-update", args...)
|
|
}
|
|
if !global && restart && env.GetBoolDefault("DOKKU_APP_RESTORE", true) {
|
|
triggerRestart(appName)
|
|
}
|
|
return
|
|
}
|
|
|
|
//UnsetMany a value in a config. If appName is empty the global config is used. If restart is true the app is restarted.
|
|
func UnsetMany(appName string, keys []string, restart bool) (err error) {
|
|
global := appName == ""
|
|
env, err := loadAppOrGlobalEnv(appName)
|
|
if err != nil {
|
|
return
|
|
}
|
|
var changed = false
|
|
for _, k := range keys {
|
|
common.LogInfo1(fmt.Sprintf("Unsetting %s", k))
|
|
env.Unset(k)
|
|
changed = true
|
|
}
|
|
if changed {
|
|
env.Write()
|
|
args := append([]string{appName, "unset"}, keys...)
|
|
common.PlugnTrigger("post-config-update", args...)
|
|
}
|
|
if !global && restart && env.GetBoolDefault("DOKKU_APP_RESTORE", true) {
|
|
triggerRestart(appName)
|
|
}
|
|
return
|
|
}
|
|
|
|
func triggerRestart(appName string) {
|
|
common.LogInfo1(fmt.Sprintf("Restarting app %s", appName))
|
|
common.PlugnTrigger("app-restart", appName)
|
|
}
|
|
|
|
func loadAppOrGlobalEnv(appName string) (env *Env, err error) {
|
|
if appName == "" || appName == "--global" {
|
|
return LoadGlobalEnv()
|
|
}
|
|
return LoadAppEnv(appName)
|
|
}
|