Move runtime around

This commit is contained in:
Tom Wiesing 2022-09-14 14:42:21 +02:00
parent ef1243ea39
commit feacd4eeae
No known key found for this signature in database
18 changed files with 39 additions and 35 deletions

View file

@ -7,7 +7,7 @@ import (
"path/filepath" "path/filepath"
wisski_distillery "github.com/FAU-CDI/wisski-distillery" wisski_distillery "github.com/FAU-CDI/wisski-distillery"
cfg "github.com/FAU-CDI/wisski-distillery/internal/config" "github.com/FAU-CDI/wisski-distillery/internal/config"
"github.com/FAU-CDI/wisski-distillery/internal/core" "github.com/FAU-CDI/wisski-distillery/internal/core"
"github.com/FAU-CDI/wisski-distillery/pkg/fsx" "github.com/FAU-CDI/wisski-distillery/pkg/fsx"
"github.com/FAU-CDI/wisski-distillery/pkg/hostname" "github.com/FAU-CDI/wisski-distillery/pkg/hostname"
@ -188,11 +188,11 @@ func (bs bootstrap) Run(context wisski_distillery.Context) error {
} }
defer f.Close() defer f.Close()
var config cfg.Config var cfg config.Config
if err := config.Unmarshal(f); err != nil { if err := cfg.Unmarshal(f); err != nil {
return errBootstrapOpenConfig.WithMessageF(err) return errBootstrapOpenConfig.WithMessageF(err)
} }
context.Println(config) context.Println(cfg)
// Tell the user how to proceed // Tell the user how to proceed
logging.LogMessage(context.IOStream, "Bootstrap is complete") logging.LogMessage(context.IOStream, "Bootstrap is complete")

View file

@ -6,12 +6,12 @@ import (
) )
// Config is the configuration command // Config is the configuration command
var Config wisski_distillery.Command = config{} var Config wisski_distillery.Command = cfg{}
type config struct { type cfg struct {
} }
func (s config) Description() wisski_distillery.Description { func (s cfg) Description() wisski_distillery.Description {
return wisski_distillery.Description{ return wisski_distillery.Description{
Requirements: core.Requirements{ Requirements: core.Requirements{
NeedsDistillery: true, NeedsDistillery: true,
@ -21,7 +21,7 @@ func (s config) Description() wisski_distillery.Description {
} }
} }
func (s config) Run(context wisski_distillery.Context) error { func (s cfg) Run(context wisski_distillery.Context) error {
context.Printf("%#v", context.Environment.Config) context.Printf("%#v", context.Environment.Config)
return nil return nil
} }

View file

@ -5,6 +5,7 @@ import (
wisski_distillery "github.com/FAU-CDI/wisski-distillery" wisski_distillery "github.com/FAU-CDI/wisski-distillery"
"github.com/FAU-CDI/wisski-distillery/internal/component" "github.com/FAU-CDI/wisski-distillery/internal/component"
"github.com/FAU-CDI/wisski-distillery/internal/config"
"github.com/FAU-CDI/wisski-distillery/internal/core" "github.com/FAU-CDI/wisski-distillery/internal/core"
"github.com/FAU-CDI/wisski-distillery/pkg/execx" "github.com/FAU-CDI/wisski-distillery/pkg/execx"
"github.com/FAU-CDI/wisski-distillery/pkg/logging" "github.com/FAU-CDI/wisski-distillery/pkg/logging"
@ -142,7 +143,7 @@ func (si systemupdate) Run(context wisski_distillery.Context) error {
} }
if err := logging.LogOperation(func() error { if err := logging.LogOperation(func() error {
return unpack.InstallDir(dis.RuntimeDir(), "runtime", core.Runtime, func(dst, src string) { return unpack.InstallDir(dis.Config.RuntimeDir(), "runtime", config.Runtime, func(dst, src string) {
context.Printf("[copy] %s\n", dst) context.Printf("[copy] %s\n", dst)
}) })
}, context.IOStream, "Unpacking Runtime Components"); err != nil { }, context.IOStream, "Unpacking Runtime Components"); err != nil {

View file

@ -26,11 +26,6 @@ type Component interface {
// By convention it is /var/www/deploy/internal/core/${Name()} // By convention it is /var/www/deploy/internal/core/${Name()}
Path() string Path() string
// Stack can be used to gain access to the "docker compose" stack.
//
// This should internally call
Stack() Installable
// Context returns a new InstallationContext to be used during installation from the command line. // Context returns a new InstallationContext to be used during installation from the command line.
// Typically this should just pass through the parent, but might perform other tasks. // Typically this should just pass through the parent, but might perform other tasks.
Context(parent InstallationContext) InstallationContext Context(parent InstallationContext) InstallationContext
@ -40,6 +35,16 @@ type Component interface {
Base() *ComponentBase Base() *ComponentBase
} }
// ComponentWithStack implements a component with a Stack method.
type ComponentWithStack interface {
Component
// Stack can be used to gain access to the "docker compose" stack.
//
// This should internally call
Stack() Installable
}
// ComponentBase implements base functionality for a component // ComponentBase implements base functionality for a component
type ComponentBase struct { type ComponentBase struct {
Dir string // Dir is the directory this component lives in Dir string // Dir is the directory this component lives in

View file

@ -0,0 +1,15 @@
package config
import (
"embed"
"path/filepath"
)
// Runtime contains runtime resources to be installed into any instance
//go:embed all:runtime
var Runtime embed.FS
// RuntimeDir returns the path to the runtime directory
func (cfg Config) RuntimeDir() string {
return filepath.Join(cfg.DeployRoot, "runtime")
}

View file

@ -1,9 +0,0 @@
package core
import (
"embed"
)
// Runtime contains runtime resources to be installed into any instance
//go:embed all:runtime
var Runtime embed.FS

View file

@ -72,9 +72,9 @@ func makeComponent[C component.Component](dis *Distillery, field *C, init func(C
return *field return *field
} }
// Components returns all components of the distillery // Components returns all components that have a stack function
func (dis *Distillery) Components() []component.Component { func (dis *Distillery) Components() []component.ComponentWithStack {
return []component.Component{ return []component.ComponentWithStack{
dis.Web(), dis.Web(),
dis.Self(), dis.Self(),
dis.Resolver(), dis.Resolver(),

View file

@ -242,7 +242,7 @@ func (instance Instance) Stack() component.Installable {
"LETSENCRYPT_HOST": instance.dis.Config.IfHttps(instance.Domain()), "LETSENCRYPT_HOST": instance.dis.Config.IfHttps(instance.Domain()),
"LETSENCRYPT_EMAIL": instance.dis.Config.IfHttps(instance.dis.Config.CertbotEmail), "LETSENCRYPT_EMAIL": instance.dis.Config.IfHttps(instance.dis.Config.CertbotEmail),
"RUNTIME_DIR": instance.dis.RuntimeDir(), "RUNTIME_DIR": instance.dis.Config.RuntimeDir(),
"GLOBAL_AUTHORIZED_KEYS_FILE": instance.dis.Config.GlobalAuthorizedKeysFile, "GLOBAL_AUTHORIZED_KEYS_FILE": instance.dis.Config.GlobalAuthorizedKeysFile,
}, },

View file

@ -1,8 +0,0 @@
package wisski
import "path/filepath"
// RuntimeDir returns the path to the runtime directory
func (dis *Distillery) RuntimeDir() string {
return filepath.Join(dis.Config.DeployRoot, "runtime")
}