Update to new goprogram version

This commit is contained in:
Tom Wiesing 2023-11-01 22:01:24 +01:00
parent 7bd9570bc0
commit 873fdcd5c2
No known key found for this signature in database
106 changed files with 478 additions and 825 deletions

View file

@ -9,7 +9,7 @@ import (
// Barrel provides access to the underlying Barrel
type Barrel struct {
ingredient.Base
Dependencies struct {
dependencies struct {
Locker *locker.Locker
MStore *mstore.MStore
}

View file

@ -17,10 +17,10 @@ import (
//
// It also logs the current time into the metadata belonging to this instance.
func (barrel *Barrel) Build(ctx context.Context, progress io.Writer, start bool) error {
if !barrel.Dependencies.Locker.TryLock(ctx) {
if !barrel.dependencies.Locker.TryLock(ctx) {
return locker.Locked
}
defer barrel.Dependencies.Locker.Unlock(ctx)
defer barrel.dependencies.Locker.Unlock(ctx)
stack := barrel.Stack()
@ -48,7 +48,7 @@ func (barrel *Barrel) Build(ctx context.Context, progress io.Writer, start bool)
var lastRebuild = mstore.For[int64]("lastRebuild")
func (barrel Barrel) LastRebuild(ctx context.Context) (t time.Time, err error) {
epoch, err := lastRebuild.Get(ctx, barrel.Dependencies.MStore)
epoch, err := lastRebuild.Get(ctx, barrel.dependencies.MStore)
if err == meta.ErrMetadatumNotSet {
return t, nil
}
@ -61,17 +61,17 @@ func (barrel Barrel) LastRebuild(ctx context.Context) (t time.Time, err error) {
}
func (barrel *Barrel) setLastRebuild(ctx context.Context) error {
return lastRebuild.Set(ctx, barrel.Dependencies.MStore, time.Now().Unix())
return lastRebuild.Set(ctx, barrel.dependencies.MStore, time.Now().Unix())
}
type LastRebuildFetcher struct {
ingredient.Base
Dependencies struct {
dependencies struct {
Barrel *Barrel
}
}
func (lbr *LastRebuildFetcher) Fetch(ctx context.Context, flags ingredient.FetcherFlags, info *status.WissKI) (err error) {
info.LastRebuild, _ = lbr.Dependencies.Barrel.LastRebuild(ctx)
info.LastRebuild, _ = lbr.dependencies.Barrel.LastRebuild(ctx)
return
}

View file

@ -15,7 +15,7 @@ import (
// Drush implements commands related to drush
type Composer struct {
ingredient.Base
Dependencies struct {
dependencies struct {
Barrel *barrel.Barrel
MStore *mstore.MStore
Drush *drush.Drush
@ -35,7 +35,7 @@ func (composer *Composer) ExecWissKI(ctx context.Context, progress io.Writer, co
}
func (composer *Composer) exec(ctx context.Context, progress io.Writer, command ...string) error {
if err := composer.Dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), append([]string{"composer", "--no-interaction"}, command...)...); err != nil {
if err := composer.dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), append([]string{"composer", "--no-interaction"}, command...)...); err != nil {
return err
}
return nil
@ -44,7 +44,7 @@ func (composer *Composer) exec(ctx context.Context, progress io.Writer, command
// FixPermissions fixes the permissions of the sites directory.
// This needs to be run after every installation of a composer module.
func (composer *Composer) FixPermission(ctx context.Context, progress io.Writer) error {
composer.Dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), "chmod", "-R", "u+w", barrel.SitesDirectory)
composer.dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), "chmod", "-R", "u+w", barrel.SitesDirectory)
return nil
}

View file

@ -36,7 +36,7 @@ func (composer *Composer) Update(ctx context.Context, progress io.Writer) (err e
logging.LogMessage(progress, "Installing database updates")
{
err := composer.Dependencies.Drush.Exec(ctx, progress, "-y", "updatedb")
err := composer.dependencies.Drush.Exec(ctx, progress, "-y", "updatedb")
if err != nil {
return err
}
@ -56,7 +56,7 @@ func (composer *Composer) Update(ctx context.Context, progress io.Writer) (err e
const lastUpdate = mstore.For[int64]("lastUpdate")
func (drush *Composer) LastUpdate(ctx context.Context) (t time.Time, err error) {
epoch, err := lastUpdate.Get(ctx, drush.Dependencies.MStore)
epoch, err := lastUpdate.Get(ctx, drush.dependencies.MStore)
if err == meta.ErrMetadatumNotSet {
return t, nil
}
@ -69,12 +69,12 @@ func (drush *Composer) LastUpdate(ctx context.Context) (t time.Time, err error)
}
func (drush *Composer) setLastUpdate(ctx context.Context) error {
return lastUpdate.Set(ctx, drush.Dependencies.MStore, time.Now().Unix())
return lastUpdate.Set(ctx, drush.dependencies.MStore, time.Now().Unix())
}
type LastUpdateFetcher struct {
ingredient.Base
Dependencies struct {
dependencies struct {
Composer *Composer
}
}
@ -84,6 +84,6 @@ var (
)
func (lbr *LastUpdateFetcher) Fetch(flags ingredient.FetcherFlags, info *status.WissKI) (err error) {
info.LastUpdate, err = lbr.Dependencies.Composer.LastUpdate(flags.Context)
info.LastUpdate, err = lbr.dependencies.Composer.LastUpdate(flags.Context)
return
}

View file

@ -32,7 +32,7 @@ func (drush *Drush) Cron(ctx context.Context, progress io.Writer) error {
func (drush *Drush) LastCron(ctx context.Context, server *phpx.Server) (t time.Time, err error) {
var timestamp int64
err = drush.Dependencies.PHP.EvalCode(ctx, server, &timestamp, `return \Drupal::state()->get('system.cron_last');`)
err = drush.dependencies.PHP.EvalCode(ctx, server, &timestamp, `return \Drupal::state()->get('system.cron_last');`)
if err != nil {
return
}
@ -41,7 +41,7 @@ func (drush *Drush) LastCron(ctx context.Context, server *phpx.Server) (t time.T
type LastCronFetcher struct {
ingredient.Base
Dependencies struct {
dependencies struct {
Drush *Drush
}
}
@ -55,6 +55,6 @@ func (lbr *LastCronFetcher) Fetch(flags ingredient.FetcherFlags, info *status.Wi
return
}
info.LastRebuild, _ = lbr.Dependencies.Drush.LastCron(flags.Context, flags.Server)
info.LastRebuild, _ = lbr.dependencies.Drush.LastCron(flags.Context, flags.Server)
return
}

View file

@ -13,7 +13,7 @@ import (
// Drush implements commands related to drush
type Drush struct {
ingredient.Base
Dependencies struct {
dependencies struct {
Barrel *barrel.Barrel
PHP *php.PHP
}
@ -26,5 +26,5 @@ func (drush *Drush) Enable(ctx context.Context, progress io.Writer, modules ...s
func (drush *Drush) Exec(ctx context.Context, progress io.Writer, command ...string) error {
script := append([]string{"drush"}, command...)
return drush.Dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), script...)
return drush.dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), script...)
}

View file

@ -59,7 +59,7 @@ func (manager *Manager) installModules(ctx context.Context, progress io.Writer,
return logging.LogOperation(func() error {
for _, spec := range modules {
logging.LogMessage(progress, fmt.Sprintf("Installing %q", spec))
err := manager.Dependencies.Composer.Install(ctx, progress, spec)
err := manager.dependencies.Composer.Install(ctx, progress, spec)
if err != nil {
return err
}
@ -67,7 +67,7 @@ func (manager *Manager) installModules(ctx context.Context, progress io.Writer,
if enable {
name := composer.ModuleName(spec)
logging.LogMessage(progress, fmt.Sprintf("Enabling %q (from spec %q)", name, spec))
err := manager.Dependencies.Drush.Enable(ctx, progress, name)
err := manager.dependencies.Drush.Enable(ctx, progress, name)
if err != nil {
return err
}
@ -90,7 +90,7 @@ func (manager *Manager) applyDrupal(ctx context.Context, progress io.Writer, dru
{"chmod", "666", "web/sites/default/*settings.php"},
{"chmod", "666", "web/sites/default/*services.php"},
} {
err := manager.Dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), script...)
err := manager.dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), script...)
if err != nil {
return err
}
@ -105,7 +105,7 @@ func (manager *Manager) applyDrupal(ctx context.Context, progress io.Writer, dru
{"chmod", "644", "web/sites/default/*settings.php"},
{"chmod", "644", "web/sites/default/*services.php"},
} {
manager.Dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), script...)
manager.dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), script...)
}
}
}()
@ -121,21 +121,21 @@ func (manager *Manager) applyDrupal(ctx context.Context, progress io.Writer, dru
}
args = append(args, "--update-with-dependencies", "--no-update")
if err := manager.Dependencies.Composer.Install(ctx, progress, args...); err != nil {
if err := manager.dependencies.Composer.Install(ctx, progress, args...); err != nil {
return err
}
}
logging.LogMessage(progress, "Running composer update")
{
if err := manager.Dependencies.Composer.Exec(ctx, progress, "update"); err != nil {
if err := manager.dependencies.Composer.Exec(ctx, progress, "update"); err != nil {
return err
}
}
logging.LogMessage(progress, "Performing database updates (if any)")
{
if err := manager.Dependencies.Drush.Exec(ctx, progress, "updatedb", "--yes"); err != nil {
if err := manager.dependencies.Drush.Exec(ctx, progress, "updatedb", "--yes"); err != nil {
return err
}
}
@ -156,7 +156,7 @@ func (manager *Manager) applyWissKI(ctx context.Context, progress io.Writer, wis
spec += ":" + wisski
}
err := manager.Dependencies.Composer.Install(ctx, progress, spec)
err := manager.dependencies.Composer.Install(ctx, progress, spec)
if err != nil {
return err
}
@ -165,27 +165,27 @@ func (manager *Manager) applyWissKI(ctx context.Context, progress io.Writer, wis
// install dependencies in the WissKI directory
logging.LogMessage(progress, "Installing WissKI Dependencies")
{
if err := manager.Dependencies.Composer.ExecWissKI(ctx, progress, "install"); err != nil {
if err := manager.dependencies.Composer.ExecWissKI(ctx, progress, "install"); err != nil {
return err
}
}
logging.LogMessage(progress, "Enable Wisski modules")
{
if err := manager.Dependencies.Drush.Enable(ctx, progress,
if err := manager.dependencies.Drush.Enable(ctx, progress,
"wisski_core", "wisski_linkblock", "wisski_pathbuilder", "wisski_adapter_sparql11_pb", "wisski_salz",
); err != nil {
return err
}
if err := manager.Dependencies.Composer.FixPermission(ctx, progress); err != nil {
if err := manager.dependencies.Composer.FixPermission(ctx, progress); err != nil {
return err
}
}
logging.LogMessage(progress, "Performing database updates (if any)")
{
if err := manager.Dependencies.Drush.Exec(ctx, progress, "updatedb", "--yes"); err != nil {
if err := manager.dependencies.Drush.Exec(ctx, progress, "updatedb", "--yes"); err != nil {
return err
}
}

View file

@ -13,7 +13,7 @@ import (
// Manager manages a profile applied to specific WissKI instances.
type Manager struct {
ingredient.Base
Dependencies struct {
dependencies struct {
Barrel *barrel.Barrel
Bookkeeping *bookkeeping.Bookkeeping

View file

@ -23,14 +23,14 @@ import (
// Provision applies defaults to flags, to ensure some values are set
func (manager *Manager) Provision(ctx context.Context, progress io.Writer, system models.System, flags Profile) error {
// Force building and applying the system!
if err := manager.Dependencies.SystemManager.Apply(ctx, progress, system, false); err != nil {
if err := manager.dependencies.SystemManager.Apply(ctx, progress, system, false); err != nil {
return err
}
// Create the composer directory!
logging.LogMessage(progress, "Creating required directories")
{
code, err := manager.Dependencies.Barrel.Stack().Run(ctx, stream.FromNil(), component.RunFlags{Detach: true, AutoRemove: true}, "barrel", "sudo", "-u", "www-data", "mkdir", "-p", barrel.ComposerDirectory)
code, err := manager.dependencies.Barrel.Stack().Run(ctx, stream.FromNil(), component.RunFlags{Detach: true, AutoRemove: true}, "barrel", "sudo", "-u", "www-data", "mkdir", "-p", barrel.ComposerDirectory)
if code != 0 {
err = barrel.ExitError(code)
}
@ -40,7 +40,7 @@ func (manager *Manager) Provision(ctx context.Context, progress io.Writer, syste
}
// start the container, and have it do nothing!
code, err := manager.Dependencies.Barrel.Stack().Run(ctx, stream.FromNil(), component.RunFlags{Detach: true, AutoRemove: true}, "barrel", "tail", "-f", "/dev/null")
code, err := manager.dependencies.Barrel.Stack().Run(ctx, stream.FromNil(), component.RunFlags{Detach: true, AutoRemove: true}, "barrel", "tail", "-f", "/dev/null")
if code != 0 {
err = barrel.ExitError(code)
}
@ -54,7 +54,7 @@ func (manager *Manager) Provision(ctx context.Context, progress io.Writer, syste
defer cancel()
// stop the container (even if the context was cancelled)
manager.Dependencies.Barrel.Stack().DownAll(anyways, progress)
manager.dependencies.Barrel.Stack().DownAll(anyways, progress)
}()
// Apply the defaults to the flags
@ -80,7 +80,7 @@ func (provision *Manager) bootstrap(ctx context.Context, progress io.Writer, fla
if flags.Drupal != "" {
drupal += ":" + flags.Drupal
}
err := provision.Dependencies.Composer.Exec(ctx, progress, "create-project", drupal, ".")
err := provision.dependencies.Composer.Exec(ctx, progress, "create-project", drupal, ".")
if err != nil {
return err
}
@ -89,7 +89,7 @@ func (provision *Manager) bootstrap(ctx context.Context, progress io.Writer, fla
logging.LogMessage(progress, "Configuring Composer")
{
// needed for composer > 2.2
err := provision.Dependencies.Composer.Exec(ctx, progress, "config", "allow-plugins", "true")
err := provision.dependencies.Composer.Exec(ctx, progress, "config", "allow-plugins", "true")
if err != nil {
return err
}
@ -98,7 +98,7 @@ func (provision *Manager) bootstrap(ctx context.Context, progress io.Writer, fla
logging.LogMessage(progress, "Installing drush")
{
for _, v := range drushVariants {
err := provision.Dependencies.Composer.TryInstall(ctx, progress, v)
err := provision.dependencies.Composer.TryInstall(ctx, progress, v)
if err == composer.ErrNotInstalled {
continue
}
@ -115,7 +115,7 @@ func (provision *Manager) bootstrap(ctx context.Context, progress io.Writer, fla
// Here we need to use the username, password and database creds we made above.
logging.LogMessage(progress, "Running Drupal installation scripts")
{
if err := provision.Dependencies.Drush.Exec(
if err := provision.dependencies.Drush.Exec(
ctx, progress,
"site-install",
"standard", "--yes", "--site-name="+provision.Domain(),
@ -125,7 +125,7 @@ func (provision *Manager) bootstrap(ctx context.Context, progress io.Writer, fla
return err
}
if err := provision.Dependencies.Composer.FixPermission(ctx, progress); err != nil {
if err := provision.dependencies.Composer.FixPermission(ctx, progress); err != nil {
return err
}
}
@ -133,7 +133,7 @@ func (provision *Manager) bootstrap(ctx context.Context, progress io.Writer, fla
// Create directory for ontologies
logging.LogMessage(progress, fmt.Sprintf("Creating %q", barrel.OntologyDirectory))
{
if err := provision.Dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), "mkdir", "-p", barrel.OntologyDirectory); err != nil {
if err := provision.dependencies.Barrel.ShellScript(ctx, stream.NonInteractive(progress), "mkdir", "-p", barrel.OntologyDirectory); err != nil {
return err
}
}
@ -158,7 +158,7 @@ func (provision *Manager) bootstrap(ctx context.Context, progress io.Writer, fla
// create the default adapter
logging.LogMessage(progress, "Creating default adapter")
{
if err := provision.Dependencies.Adapters.CreateDistilleryAdapter(ctx, nil, extras.DistilleryAdapter{
if err := provision.dependencies.Adapters.CreateDistilleryAdapter(ctx, nil, extras.DistilleryAdapter{
Label: "Default WissKI Distillery Adapter",
MachineName: "default",
Description: "Default Adapter for " + provision.Domain(),
@ -173,14 +173,14 @@ func (provision *Manager) bootstrap(ctx context.Context, progress io.Writer, fla
logging.LogMessage(progress, "Updating TRUSTED_HOST_PATTERNS in settings.php")
{
if err := provision.Dependencies.Settings.SetTrustedDomain(ctx, nil, provision.Domain()); err != nil {
if err := provision.dependencies.Settings.SetTrustedDomain(ctx, nil, provision.Domain()); err != nil {
return err
}
}
logging.LogMessage(progress, "Running initial cron")
{
if err := provision.Dependencies.Drush.Exec(ctx, progress, "core-cron"); err != nil {
if err := provision.dependencies.Drush.Exec(ctx, progress, "core-cron"); err != nil {
return err
}
}

View file

@ -18,7 +18,7 @@ func (barrel *Barrel) Running(ctx context.Context) (bool, error) {
type RunningFetcher struct {
ingredient.Base
Dependencies struct {
dependencies struct {
Barrel *Barrel
}
}
@ -28,6 +28,6 @@ var (
)
func (rf *RunningFetcher) Fetch(flags ingredient.FetcherFlags, info *status.WissKI) (err error) {
info.Running, err = rf.Dependencies.Barrel.Running(flags.Context)
info.Running, err = rf.dependencies.Barrel.Running(flags.Context)
return
}

View file

@ -12,7 +12,7 @@ import (
type SSH struct {
ingredient.Base
Dependencies struct {
dependencies struct {
Barrel *barrel.Barrel
}
}

View file

@ -14,7 +14,7 @@ import (
// SystemManager applies a specific system configuration
type SystemManager struct {
ingredient.Base
Dependencies struct {
dependencies struct {
Barrel *barrel.Barrel
Bookkeeping *bookkeeping.Bookkeeping
Settings *extras.Settings
@ -28,12 +28,12 @@ func (smanager *SystemManager) Apply(ctx context.Context, progress io.Writer, sy
smanager.Instance.System = system
// save in bookkeeping
if err := smanager.Dependencies.Bookkeeping.Save(ctx); err != nil {
if err := smanager.dependencies.Bookkeeping.Save(ctx); err != nil {
return err
}
// TODO: Apply Content-Security-Policy!
// and rebuild
return smanager.Dependencies.Barrel.Build(ctx, progress, start)
return smanager.dependencies.Barrel.Build(ctx, progress, start)
}