Add 'environment' package
This commit adds a new environment package that manages all calls to the underlying operating system.
This commit is contained in:
parent
822c70cd69
commit
f19619ef9f
60 changed files with 539 additions and 308 deletions
|
|
@ -1,10 +1,10 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/FAU-CDI/wisski-distillery/internal/core"
|
||||
"github.com/FAU-CDI/wisski-distillery/pkg/environment"
|
||||
"github.com/FAU-CDI/wisski-distillery/pkg/fsx"
|
||||
)
|
||||
|
||||
|
|
@ -14,19 +14,19 @@ func (cfg Config) ExecutablePath() string {
|
|||
}
|
||||
|
||||
// UsingDistilleryExecutable checks if the current process is using the distillery executable
|
||||
func (cfg Config) UsingDistilleryExecutable() bool {
|
||||
exe, err := os.Executable()
|
||||
func (cfg Config) UsingDistilleryExecutable(env environment.Environment) bool {
|
||||
exe, err := env.Executable()
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return fsx.SameFile(exe, cfg.ExecutablePath())
|
||||
return fsx.SameFile(env, exe, cfg.ExecutablePath())
|
||||
}
|
||||
|
||||
// CurrentExecutable returns the path to the current executable being used.
|
||||
// When it does not exist, falls back to the default executable.
|
||||
func (cfg Config) CurrentExecutable() string {
|
||||
exe, err := os.Executable()
|
||||
if err != nil || !fsx.IsFile(exe) {
|
||||
func (cfg Config) CurrentExecutable(env environment.Environment) string {
|
||||
exe, err := env.Executable()
|
||||
if err != nil || !fsx.IsFile(env, exe) {
|
||||
return cfg.ExecutablePath()
|
||||
}
|
||||
return exe
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import (
|
|||
"io"
|
||||
"reflect"
|
||||
|
||||
"github.com/FAU-CDI/wisski-distillery/pkg/environment"
|
||||
"github.com/FAU-CDI/wisski-distillery/pkg/envreader"
|
||||
"github.com/FAU-CDI/wisski-distillery/pkg/stringparser"
|
||||
)
|
||||
|
|
@ -16,7 +17,7 @@ import (
|
|||
// When a key is missing, it is set to the default value.
|
||||
//
|
||||
// See also [stringparser.Parse].
|
||||
func (config *Config) Unmarshal(src io.Reader) error {
|
||||
func (config *Config) Unmarshal(env environment.Environment, src io.Reader) error {
|
||||
// read all the values!
|
||||
values, err := envreader.ReadAll(src)
|
||||
if err != nil {
|
||||
|
|
@ -32,26 +33,26 @@ func (config *Config) Unmarshal(src io.Reader) error {
|
|||
tField := tConfig.Field(i)
|
||||
vField := vConfig.FieldByName(tField.Name)
|
||||
|
||||
env := tField.Tag.Get("env")
|
||||
dflt := tField.Tag.Get("default")
|
||||
parser := tField.Tag.Get("parser")
|
||||
tEnv := tField.Tag.Get("env")
|
||||
tDefault := tField.Tag.Get("default")
|
||||
tParser := tField.Tag.Get("parser")
|
||||
|
||||
// skip it if it isn't loaded!
|
||||
if env == "" {
|
||||
if tEnv == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
// read the value with a default
|
||||
value, ok := values[env]
|
||||
value, ok := values[tEnv]
|
||||
if !ok || value == "" {
|
||||
if dflt == "" {
|
||||
if tDefault == "" {
|
||||
continue
|
||||
}
|
||||
value = dflt
|
||||
value = tDefault
|
||||
}
|
||||
|
||||
// parse the value!
|
||||
if err := stringparser.Parse(parser, value, vField); err != nil {
|
||||
if err := stringparser.Parse(env, tParser, value, vField); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import (
|
|||
"reflect"
|
||||
|
||||
"github.com/FAU-CDI/wisski-distillery/internal/core"
|
||||
"github.com/FAU-CDI/wisski-distillery/pkg/environment"
|
||||
"github.com/FAU-CDI/wisski-distillery/pkg/hostname"
|
||||
"github.com/FAU-CDI/wisski-distillery/pkg/password"
|
||||
"github.com/FAU-CDI/wisski-distillery/pkg/unpack"
|
||||
|
|
@ -29,13 +30,13 @@ type Template struct {
|
|||
}
|
||||
|
||||
// SetDefaults sets defaults on the template
|
||||
func (tpl *Template) SetDefaults() (err error) {
|
||||
func (tpl *Template) SetDefaults(env environment.Environment) (err error) {
|
||||
if tpl.DeployRoot == "" {
|
||||
tpl.DeployRoot = core.BaseDirectoryDefault
|
||||
}
|
||||
|
||||
if tpl.DefaultDomain == "" {
|
||||
tpl.DefaultDomain = hostname.FQDN()
|
||||
tpl.DefaultDomain = hostname.FQDN(env)
|
||||
}
|
||||
|
||||
if tpl.SelfOverridesFile == "" {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue