mirror of
https://github.com/safing/portbase
synced 2025-09-01 18:19:57 +00:00
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
)
|
|
|
|
const (
|
|
releaseLevelKey = "core/release_level"
|
|
)
|
|
|
|
var (
|
|
releaseLevel = ReleaseLevelStable
|
|
releaseLevelLock sync.Mutex
|
|
)
|
|
|
|
func init() {
|
|
registerReleaseLevelOption()
|
|
}
|
|
|
|
func registerReleaseLevelOption() {
|
|
err := Register(&Option{
|
|
Name: "Release Selection",
|
|
Key: releaseLevelKey,
|
|
Description: "Select maturity level of features that should be available",
|
|
|
|
OptType: OptTypeString,
|
|
ExpertiseLevel: ExpertiseLevelExpert,
|
|
ReleaseLevel: ReleaseLevelStable,
|
|
|
|
RequiresRestart: false,
|
|
DefaultValue: ReleaseLevelStable,
|
|
|
|
ExternalOptType: "string list",
|
|
ValidationRegex: fmt.Sprintf("^(%s|%s|%s)$", ReleaseLevelStable, ReleaseLevelBeta, ReleaseLevelExperimental),
|
|
})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func updateReleaseLevel() {
|
|
new := findStringValue(releaseLevelKey, "")
|
|
releaseLevelLock.Lock()
|
|
if new == "" {
|
|
releaseLevel = ReleaseLevelStable
|
|
} else {
|
|
releaseLevel = new
|
|
}
|
|
releaseLevelLock.Unlock()
|
|
}
|
|
|
|
func getReleaseLevel() string {
|
|
releaseLevelLock.Lock()
|
|
defer releaseLevelLock.Unlock()
|
|
return releaseLevel
|
|
}
|