This commit cleans up the resources in the 'embed' package, and instead moves them into subpackages of a new 'compose' package. This makes sure that '.env' templates and docker compose contexts are located in the same location.
80 lines
1.8 KiB
Go
80 lines
1.8 KiB
Go
package env
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
|
|
"github.com/FAU-CDI/wisski-distillery/core"
|
|
"github.com/FAU-CDI/wisski-distillery/internal/config"
|
|
"github.com/tkw1536/goprogram/exit"
|
|
)
|
|
|
|
// Distillery represents a running instance for the distillery
|
|
type Distillery struct {
|
|
Config *config.Config
|
|
Upstream Upstream
|
|
}
|
|
|
|
// Upstream are the upstream urls connecting to the various external components.
|
|
type Upstream struct {
|
|
SQL string
|
|
Triplestore string
|
|
}
|
|
|
|
// Context returns a new Context belonging to this distillery
|
|
func (dis Distillery) Context() context.Context {
|
|
return context.Background()
|
|
}
|
|
|
|
var errNoConfigFile = exit.Error{
|
|
ExitCode: exit.ExitGeneralArguments,
|
|
Message: "Configuration File does not exist",
|
|
}
|
|
|
|
var errOpenConfig = exit.Error{
|
|
ExitCode: exit.ExitGeneralArguments,
|
|
Message: "error loading configuration file: %s",
|
|
}
|
|
|
|
// NewDistillery creates a new distillery object from a set of parameters and requirements
|
|
func NewDistillery(params core.Params, flags core.Flags, req core.Requirements) (env *Distillery, err error) {
|
|
env = &Distillery{
|
|
Upstream: Upstream{
|
|
SQL: "127.0.0.1:3306",
|
|
Triplestore: "127.0.0.1:7200",
|
|
},
|
|
}
|
|
|
|
if flags.InternalInDocker {
|
|
env.Upstream.SQL = "sql:3306"
|
|
env.Upstream.Triplestore = "triplestore:7200"
|
|
}
|
|
|
|
// if we don't need to load the config, there is nothing to do
|
|
if !req.NeedsDistillery {
|
|
return
|
|
}
|
|
|
|
// try to find the configuration file
|
|
cfg := flags.ConfigPath // command line flags first
|
|
if cfg == "" {
|
|
cfg = params.ConfigPath // then globally provided files
|
|
}
|
|
if cfg == "" {
|
|
return nil, errNoConfigFile
|
|
}
|
|
|
|
// open the config file!
|
|
f, err := os.Open(params.ConfigPath)
|
|
if err != nil {
|
|
return nil, errOpenConfig.WithMessageF(err)
|
|
}
|
|
defer f.Close()
|
|
|
|
// unmarshal the config
|
|
env.Config = &config.Config{
|
|
ConfigPath: cfg,
|
|
}
|
|
err = env.Config.Unmarshal(f)
|
|
return
|
|
}
|