Update to new goprogram version
This commit is contained in:
parent
7bd9570bc0
commit
873fdcd5c2
106 changed files with 478 additions and 825 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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, ×tamp, `return \Drupal::state()->get('system.cron_last');`)
|
||||
err = drush.dependencies.PHP.EvalCode(ctx, server, ×tamp, `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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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...)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import (
|
|||
|
||||
type SSH struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
Barrel *barrel.Barrel
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,19 +10,16 @@ import (
|
|||
"github.com/FAU-CDI/wisski-distillery/internal/wisski/ingredient"
|
||||
"github.com/FAU-CDI/wisski-distillery/internal/wisski/ingredient/php"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/tkw1536/pkglib/lifetime"
|
||||
"github.com/tkw1536/pkglib/sema"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
type Info struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
PHP *php.PHP
|
||||
Fetchers []ingredient.WissKIFetcher
|
||||
}
|
||||
|
||||
Analytics *lifetime.Analytics
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
@ -45,7 +42,7 @@ func (wisski *Info) Information(ctx context.Context, quick bool) (info status.Wi
|
|||
Limit: 5,
|
||||
New: func() *phpx.Server {
|
||||
atomic.AddUint64(&serversUsed, 1)
|
||||
return wisski.Dependencies.PHP.NewServer()
|
||||
return wisski.dependencies.PHP.NewServer()
|
||||
},
|
||||
Discard: func(s *phpx.Server) {
|
||||
s.Close()
|
||||
|
|
@ -55,7 +52,7 @@ func (wisski *Info) Information(ctx context.Context, quick bool) (info status.Wi
|
|||
|
||||
// setup a dictionary to record data about how long each operation took.
|
||||
// we use a slice as opposed to a map to avoid having to mutex!
|
||||
fetcherTimes := make([]time.Duration, len(wisski.Dependencies.Fetchers))
|
||||
fetcherTimes := make([]time.Duration, len(wisski.dependencies.Fetchers))
|
||||
recordTime := func(i int) func() {
|
||||
start := time.Now()
|
||||
return func() {
|
||||
|
|
@ -66,7 +63,7 @@ func (wisski *Info) Information(ctx context.Context, quick bool) (info status.Wi
|
|||
start := time.Now()
|
||||
{
|
||||
var group errgroup.Group
|
||||
for i, fetcher := range wisski.Dependencies.Fetchers {
|
||||
for i, fetcher := range wisski.dependencies.Fetchers {
|
||||
fetcher, flags, i := fetcher, flags, i
|
||||
group.Go(func() error {
|
||||
// quick: don't need to create servers
|
||||
|
|
@ -93,7 +90,7 @@ func (wisski *Info) Information(ctx context.Context, quick bool) (info status.Wi
|
|||
|
||||
// get a map of how long each fetcher took
|
||||
times := zerolog.Dict()
|
||||
for i, fetcher := range wisski.Dependencies.Fetchers {
|
||||
for i, fetcher := range wisski.dependencies.Fetchers {
|
||||
tookSum += fetcherTimes[i]
|
||||
times = times.Dur(fetcher.Name(), fetcherTimes[i])
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,11 +36,10 @@ func (cb *Base) getBase() *Base {
|
|||
|
||||
// Init initializes a new Ingredient.
|
||||
// Init is only intended to be used within a lifetime.Lifetime[Ingredient,*Liquid].
|
||||
func Init(ingredient Ingredient, liquid *liquid.Liquid) Ingredient {
|
||||
func Init(ingredient Ingredient, liquid *liquid.Liquid) {
|
||||
base := ingredient.getBase() // pointer to a struct
|
||||
base.Liquid = liquid
|
||||
base.name = strings.ToLower(reflect.TypeOf(ingredient).Elem().Name())
|
||||
return ingredient
|
||||
}
|
||||
|
||||
func (cb Base) Name() string {
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import (
|
|||
// Prefixes implements reading and writing prefix
|
||||
type Adapters struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
PHP *php.PHP
|
||||
}
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ type DistilleryAdapter struct {
|
|||
}
|
||||
|
||||
func (wisski *Adapters) CreateDistilleryAdapter(ctx context.Context, server *phpx.Server, adapter DistilleryAdapter) error {
|
||||
return wisski.Dependencies.PHP.ExecScript(
|
||||
return wisski.dependencies.PHP.ExecScript(
|
||||
ctx, server, nil, adaptersPHP,
|
||||
"create_distillery_adapter",
|
||||
adapter.Label, adapter.MachineName, adapter.Description, adapter.InstanceDomain, adapter.GraphDBRepository, adapter.GraphDBUsername, adapter.GraphDBPassword,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import (
|
|||
|
||||
type Blocks struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
PHP *php.PHP
|
||||
}
|
||||
}
|
||||
|
|
@ -31,11 +31,11 @@ type Block struct {
|
|||
|
||||
// Create creates a new block with the given title and html content
|
||||
func (blocks *Blocks) Create(ctx context.Context, server *phpx.Server, block Block) (err error) {
|
||||
err = blocks.Dependencies.PHP.ExecScript(ctx, server, nil, blocksPHP, "create_basic_block", block.Info, block.Content, block.Region, block.BlockID)
|
||||
err = blocks.dependencies.PHP.ExecScript(ctx, server, nil, blocksPHP, "create_basic_block", block.Info, block.Content, block.Region, block.BlockID)
|
||||
return err
|
||||
}
|
||||
|
||||
func (blocks *Blocks) GetFooterRegion(ctx context.Context, server *phpx.Server) (region string, err error) {
|
||||
err = blocks.Dependencies.PHP.ExecScript(ctx, server, ®ion, blocksPHP, "get_footer_region")
|
||||
err = blocks.dependencies.PHP.ExecScript(ctx, server, ®ion, blocksPHP, "get_footer_region")
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import (
|
|||
|
||||
type Pathbuilder struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
PHP *php.PHP
|
||||
}
|
||||
}
|
||||
|
|
@ -29,7 +29,7 @@ var pathbuilderPHP string
|
|||
//
|
||||
// server is the server to fetch the pathbuilders from, any may be nil.
|
||||
func (pathbuilder *Pathbuilder) All(ctx context.Context, server *phpx.Server) (ids []string, err error) {
|
||||
err = pathbuilder.Dependencies.PHP.ExecScript(ctx, server, &ids, pathbuilderPHP, "all_list")
|
||||
err = pathbuilder.dependencies.PHP.ExecScript(ctx, server, &ids, pathbuilderPHP, "all_list")
|
||||
slices.Sort(ids)
|
||||
return
|
||||
}
|
||||
|
|
@ -39,7 +39,7 @@ func (pathbuilder *Pathbuilder) All(ctx context.Context, server *phpx.Server) (i
|
|||
//
|
||||
// server is the server to fetch the pathbuilders from, any may be nil.
|
||||
func (pathbuilder *Pathbuilder) Get(ctx context.Context, server *phpx.Server, id string) (xml string, err error) {
|
||||
err = pathbuilder.Dependencies.PHP.ExecScript(ctx, server, &xml, pathbuilderPHP, "one_xml", id)
|
||||
err = pathbuilder.dependencies.PHP.ExecScript(ctx, server, &xml, pathbuilderPHP, "one_xml", id)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ func (pathbuilder *Pathbuilder) Get(ctx context.Context, server *phpx.Server, id
|
|||
//
|
||||
// server is the server to fetch the pathbuilders from, any may be nil.
|
||||
func (pathbuilder *Pathbuilder) GetAll(ctx context.Context, server *phpx.Server) (pathbuilders map[string]string, err error) {
|
||||
err = pathbuilder.Dependencies.PHP.ExecScript(ctx, server, &pathbuilders, pathbuilderPHP, "all_xml")
|
||||
err = pathbuilder.dependencies.PHP.ExecScript(ctx, server, &pathbuilders, pathbuilderPHP, "all_xml")
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import (
|
|||
// Prefixes implements reading and writing prefix
|
||||
type Prefixes struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
PHP *php.PHP
|
||||
MStore *mstore.MStore
|
||||
}
|
||||
|
|
@ -63,7 +63,7 @@ func (prefixes *Prefixes) All(ctx context.Context, server *phpx.Server) ([]strin
|
|||
|
||||
func (wisski *Prefixes) database(ctx context.Context, server *phpx.Server) (prefixes []string, err error) {
|
||||
// get all the ugly prefixes
|
||||
err = wisski.Dependencies.PHP.ExecScript(ctx, server, &prefixes, listURIPrefixesPHP, "list_prefixes")
|
||||
err = wisski.dependencies.PHP.ExecScript(ctx, server, &prefixes, listURIPrefixesPHP, "list_prefixes")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -164,7 +164,7 @@ var prefix = mstore.For[string]("prefix")
|
|||
|
||||
// Prefixes returns the cached prefixes from the given instance
|
||||
func (wisski *Prefixes) AllCached(ctx context.Context) (results []string, err error) {
|
||||
return prefix.GetAll(ctx, wisski.Dependencies.MStore)
|
||||
return prefix.GetAll(ctx, wisski.dependencies.MStore)
|
||||
}
|
||||
|
||||
// Update updates the cached prefixes of this instance
|
||||
|
|
@ -173,7 +173,7 @@ func (wisski *Prefixes) Update(ctx context.Context) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return prefix.SetAll(ctx, wisski.Dependencies.MStore, prefixes...)
|
||||
return prefix.SetAll(ctx, wisski.dependencies.MStore, prefixes...)
|
||||
}
|
||||
|
||||
func (prefixes *Prefixes) Fetch(flags ingredient.FetcherFlags, info *status.WissKI) (err error) {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package extras
|
|||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"github.com/FAU-CDI/wisski-distillery/internal/phpx"
|
||||
"github.com/FAU-CDI/wisski-distillery/internal/status"
|
||||
|
|
@ -14,7 +15,7 @@ import (
|
|||
|
||||
type Requirements struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
PHP *php.PHP
|
||||
}
|
||||
}
|
||||
|
|
@ -28,28 +29,28 @@ var requirementsPHP string
|
|||
|
||||
// Create creates a new block with the given title and html content
|
||||
func (requirements *Requirements) Get(ctx context.Context, server *phpx.Server) (data []status.Requirement, err error) {
|
||||
err = requirements.Dependencies.PHP.ExecScript(ctx, server, &data, requirementsPHP, "get_requirements", requirements.URL().String())
|
||||
err = requirements.dependencies.PHP.ExecScript(ctx, server, &data, requirementsPHP, "get_requirements", requirements.URL().String())
|
||||
if err == nil {
|
||||
// sort first by weight, then by id!
|
||||
slices.SortFunc(data, func(a, b status.Requirement) bool {
|
||||
slices.SortFunc(data, func(a, b status.Requirement) int {
|
||||
// compare first by weight
|
||||
if a.Weight < b.Weight {
|
||||
return true
|
||||
return -1
|
||||
}
|
||||
if a.Weight > b.Weight {
|
||||
return false
|
||||
return 1
|
||||
}
|
||||
|
||||
// then by severity
|
||||
if a.Severity < b.Severity {
|
||||
return true
|
||||
return -1
|
||||
}
|
||||
if a.Severity > b.Severity {
|
||||
return false
|
||||
return 1
|
||||
}
|
||||
|
||||
// and finally by id
|
||||
return a.ID < b.ID
|
||||
return strings.Compare(a.ID, b.ID)
|
||||
})
|
||||
}
|
||||
return
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import (
|
|||
|
||||
type Settings struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
PHP *php.PHP
|
||||
}
|
||||
}
|
||||
|
|
@ -21,7 +21,7 @@ type Settings struct {
|
|||
var settingsPHP string
|
||||
|
||||
func (settings *Settings) Get(ctx context.Context, server *phpx.Server, key string) (value any, err error) {
|
||||
err = settings.Dependencies.PHP.ExecScript(ctx, server, &value, settingsPHP, "get_setting", key)
|
||||
err = settings.dependencies.PHP.ExecScript(ctx, server, &value, settingsPHP, "get_setting", key)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ var errFailedToSetSetting = errors.New("failed to update setting")
|
|||
|
||||
func (settings *Settings) Set(ctx context.Context, server *phpx.Server, key string, value any) error {
|
||||
var ok bool
|
||||
err := settings.Dependencies.PHP.ExecScript(ctx, server, &ok, settingsPHP, "set_setting", key, value)
|
||||
err := settings.dependencies.PHP.ExecScript(ctx, server, &ok, settingsPHP, "set_setting", key, value)
|
||||
if err == nil && !ok {
|
||||
err = errFailedToSetSetting
|
||||
}
|
||||
|
|
@ -41,7 +41,7 @@ var errFailedToSetTrustedDomain = errors.New("failed to set trusted domain")
|
|||
func (settings *Settings) SetTrustedDomain(ctx context.Context, server *phpx.Server, domain string) error {
|
||||
var ok bool
|
||||
|
||||
err := settings.Dependencies.PHP.ExecScript(ctx, server, &ok, settingsPHP, "set_trusted_domain", domain)
|
||||
err := settings.dependencies.PHP.ExecScript(ctx, server, &ok, settingsPHP, "set_trusted_domain", domain)
|
||||
if err == nil && !ok {
|
||||
err = errFailedToSetTrustedDomain
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import (
|
|||
|
||||
type Stats struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
PHP *php.PHP
|
||||
}
|
||||
}
|
||||
|
|
@ -26,7 +26,7 @@ var statsPHP string
|
|||
|
||||
// Get fetches all statistics from the server
|
||||
func (stats *Stats) Get(ctx context.Context, server *phpx.Server) (data status.Statistics, err error) {
|
||||
err = stats.Dependencies.PHP.ExecScript(ctx, server, &data, statsPHP, "export_statistics")
|
||||
err = stats.dependencies.PHP.ExecScript(ctx, server, &data, statsPHP, "export_statistics")
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import (
|
|||
// Prefixes implements reading and writing prefix
|
||||
type Theme struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
PHP *php.PHP
|
||||
}
|
||||
}
|
||||
|
|
@ -24,7 +24,7 @@ var themePHP string
|
|||
|
||||
// Get returns the currently active theme
|
||||
func (t *Theme) Get(ctx context.Context, server *phpx.Server) (theme string, err error) {
|
||||
err = t.Dependencies.PHP.ExecScript(
|
||||
err = t.dependencies.PHP.ExecScript(
|
||||
ctx, server, &theme, themePHP,
|
||||
"get_active_theme",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import (
|
|||
|
||||
type PHP struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
Barrel *barrel.Barrel
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,6 @@ func (php *PHP) NewServer() *phpx.Server {
|
|||
}
|
||||
|
||||
func (php *PHP) spawn(ctx context.Context, str stream.IOStream, code string) error {
|
||||
php.Dependencies.Barrel.ShellScript(ctx, str, "drush", "php:eval", code)
|
||||
php.dependencies.Barrel.ShellScript(ctx, str, "drush", "php:eval", code)
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,10 +14,10 @@ import (
|
|||
var errGetValidator = errors.New("`GetPasswordValidator': unknown error")
|
||||
|
||||
func (u *Users) GetPasswordValidator(ctx context.Context, username string) (pv PasswordValidator, err error) {
|
||||
server := u.Dependencies.PHP.NewServer()
|
||||
server := u.dependencies.PHP.NewServer()
|
||||
|
||||
var hash string
|
||||
err = u.Dependencies.PHP.ExecScript(ctx, server, &hash, usersPHP, "get_password_hash", username)
|
||||
err = u.dependencies.PHP.ExecScript(ctx, server, &hash, usersPHP, "get_password_hash", username)
|
||||
if err != nil {
|
||||
server.Close()
|
||||
return pv, err
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import (
|
|||
|
||||
type Users struct {
|
||||
ingredient.Base
|
||||
Dependencies struct {
|
||||
dependencies struct {
|
||||
PHP *php.PHP
|
||||
}
|
||||
}
|
||||
|
|
@ -28,7 +28,7 @@ var usersPHP string
|
|||
|
||||
// All returns all known usernames
|
||||
func (u *Users) All(ctx context.Context, server *phpx.Server) (users []status.DrupalUser, err error) {
|
||||
err = u.Dependencies.PHP.ExecScript(ctx, server, &users, usersPHP, "list_users")
|
||||
err = u.dependencies.PHP.ExecScript(ctx, server, &users, usersPHP, "list_users")
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -54,7 +54,7 @@ func (u *Users) LoginWithOpt(ctx context.Context, server *phpx.Server, username
|
|||
|
||||
// generate a (relative) link
|
||||
var path string
|
||||
err = u.Dependencies.PHP.ExecScript(ctx, server, &path, usersPHP, "get_login_link", username, opts.Destination, opts.CreateIfMissing, opts.GrantAdminRole)
|
||||
err = u.dependencies.PHP.ExecScript(ctx, server, &path, usersPHP, "get_login_link", username, opts.Destination, opts.CreateIfMissing, opts.GrantAdminRole)
|
||||
|
||||
// if something went wrong, return
|
||||
if err != nil {
|
||||
|
|
@ -80,7 +80,7 @@ var errSetPassword = errors.New("`SetPassword': unknown error")
|
|||
// SetPassword sets the password for a given user
|
||||
func (u *Users) SetPassword(ctx context.Context, server *phpx.Server, username, password string) error {
|
||||
var ok bool
|
||||
err := u.Dependencies.PHP.ExecScript(ctx, server, &ok, usersPHP, "set_user_password", username, password)
|
||||
err := u.dependencies.PHP.ExecScript(ctx, server, &ok, usersPHP, "set_user_password", username, password)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,66 +1 @@
|
|||
package wisski
|
||||
|
||||
import (
|
||||
"github.com/FAU-CDI/wisski-distillery/internal/wisski/ingredient"
|
||||
"github.com/FAU-CDI/wisski-distillery/internal/wisski/liquid"
|
||||
"github.com/tkw1536/pkglib/collection"
|
||||
"github.com/tkw1536/pkglib/lifetime"
|
||||
)
|
||||
|
||||
//
|
||||
// ==== init ====
|
||||
//
|
||||
|
||||
func (wisski *WissKI) init() {
|
||||
wisski.lifetimeInit.Do(func() {
|
||||
wisski.lifetime.Init = ingredient.Init
|
||||
lifetime.RegisterGroup[ingredient.WissKIFetcher](&wisski.lifetime)
|
||||
})
|
||||
}
|
||||
|
||||
//
|
||||
// ==== registration ====
|
||||
//
|
||||
|
||||
// manual initializes a component from the provided distillery.
|
||||
func manual[I ingredient.Ingredient](init func(ingredient I)) initFunc {
|
||||
return func(context ctx) ingredient.Ingredient {
|
||||
return lifetime.Make(context, init)
|
||||
}
|
||||
}
|
||||
|
||||
// use is like r, but does not provided additional initialization
|
||||
func auto[I ingredient.Ingredient](context ctx) ingredient.Ingredient {
|
||||
return lifetime.Make[ingredient.Ingredient, I](context, nil)
|
||||
}
|
||||
|
||||
// register returns all components of the distillery
|
||||
func (wisski *WissKI) register(context ctx) []ingredient.Ingredient {
|
||||
return collection.MapSlice(
|
||||
wisski.allIngredients(),
|
||||
func(f initFunc) ingredient.Ingredient {
|
||||
return f(context)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
// ctx is a context for component initialization
|
||||
type ctx = *lifetime.InjectorContext[ingredient.Ingredient]
|
||||
|
||||
//
|
||||
// ==== export ====
|
||||
//
|
||||
|
||||
// export is a convenience function to export a single component
|
||||
func export[I ingredient.Ingredient](wisski *WissKI) I {
|
||||
wisski.init()
|
||||
return lifetime.ExportComponent[ingredient.Ingredient, *liquid.Liquid, I](&wisski.lifetime, &wisski.Liquid, wisski.register)
|
||||
}
|
||||
|
||||
//lint:ignore U1000 for future use
|
||||
func exportAll[I ingredient.Ingredient](wisski *WissKI) []I {
|
||||
wisski.init()
|
||||
return lifetime.ExportComponents[ingredient.Ingredient, *liquid.Liquid, I](&wisski.lifetime, &wisski.Liquid, wisski.register)
|
||||
}
|
||||
|
||||
type initFunc = func(context ctx) ingredient.Ingredient
|
||||
|
|
|
|||
|
|
@ -32,6 +32,28 @@ type WissKI struct {
|
|||
lifetime lifetime.Lifetime[ingredient.Ingredient, *liquid.Liquid]
|
||||
}
|
||||
|
||||
//
|
||||
// INIT & EXPORT
|
||||
//
|
||||
|
||||
func (wisski *WissKI) init() {
|
||||
wisski.lifetimeInit.Do(func() {
|
||||
wisski.lifetime.Init = ingredient.Init
|
||||
wisski.lifetime.Register = wisski.allIngredients
|
||||
})
|
||||
}
|
||||
|
||||
func export[I ingredient.Ingredient](wisski *WissKI) I {
|
||||
wisski.init()
|
||||
return lifetime.Export[I](&wisski.lifetime, &wisski.Liquid)
|
||||
}
|
||||
|
||||
//lint:ignore U1000 for future use
|
||||
func exportAll[I ingredient.Ingredient](wisski *WissKI) []I {
|
||||
wisski.init()
|
||||
return lifetime.ExportSlice[I](&wisski.lifetime, &wisski.Liquid)
|
||||
}
|
||||
|
||||
//
|
||||
// PUBLIC INGREDIENT GETTERS
|
||||
//
|
||||
|
|
@ -105,47 +127,43 @@ func (wisski *WissKI) Blocks() *extras.Blocks {
|
|||
// THESE SHOULD NEVER BE CALLED DIRECTLY
|
||||
//
|
||||
|
||||
func (wisski *WissKI) allIngredients() []initFunc {
|
||||
return []initFunc{
|
||||
// core bits
|
||||
auto[*locker.Locker],
|
||||
manual(func(m *mstore.MStore) {
|
||||
m.Storage = wisski.Malt.Meta.Storage(wisski.Slug)
|
||||
}),
|
||||
func (wisski *WissKI) allIngredients(context *lifetime.RegisterContext[ingredient.Ingredient, *liquid.Liquid]) {
|
||||
// core bits
|
||||
lifetime.Place[*locker.Locker](context)
|
||||
lifetime.Register(context, func(m *mstore.MStore, _ *liquid.Liquid) {
|
||||
m.Storage = wisski.Malt.Meta.Storage(wisski.Slug)
|
||||
})
|
||||
|
||||
// php
|
||||
auto[*php.PHP],
|
||||
auto[*extras.Prefixes],
|
||||
auto[*extras.Settings],
|
||||
auto[*extras.Pathbuilder],
|
||||
auto[*extras.Stats],
|
||||
auto[*extras.Blocks],
|
||||
auto[*extras.Requirements],
|
||||
auto[*extras.Adapters],
|
||||
auto[*extras.Theme],
|
||||
auto[*users.Users],
|
||||
auto[*users.UserPolicy],
|
||||
// php
|
||||
lifetime.Place[*php.PHP](context)
|
||||
lifetime.Place[*extras.Prefixes](context)
|
||||
lifetime.Place[*extras.Settings](context)
|
||||
lifetime.Place[*extras.Pathbuilder](context)
|
||||
lifetime.Place[*extras.Stats](context)
|
||||
lifetime.Place[*extras.Blocks](context)
|
||||
lifetime.Place[*extras.Requirements](context)
|
||||
lifetime.Place[*extras.Adapters](context)
|
||||
lifetime.Place[*extras.Theme](context)
|
||||
lifetime.Place[*users.Users](context)
|
||||
lifetime.Place[*users.UserPolicy](context)
|
||||
|
||||
// info
|
||||
manual(func(info *info.Info) {
|
||||
info.Analytics = &wisski.lifetime.Analytics
|
||||
}),
|
||||
auto[*barrel.LastRebuildFetcher],
|
||||
auto[*barrel.RunningFetcher],
|
||||
auto[*composer.LastUpdateFetcher],
|
||||
auto[*drush.LastCronFetcher],
|
||||
auto[*info.SnapshotsFetcher],
|
||||
// info
|
||||
lifetime.Place[*info.Info](context)
|
||||
lifetime.Place[*barrel.LastRebuildFetcher](context)
|
||||
lifetime.Place[*barrel.RunningFetcher](context)
|
||||
lifetime.Place[*composer.LastUpdateFetcher](context)
|
||||
lifetime.Place[*drush.LastCronFetcher](context)
|
||||
lifetime.Place[*info.SnapshotsFetcher](context)
|
||||
|
||||
// stacks
|
||||
auto[*barrel.Barrel],
|
||||
auto[*bookkeeping.Bookkeeping],
|
||||
auto[*manager.Manager],
|
||||
auto[*system.SystemManager],
|
||||
auto[*composer.Composer],
|
||||
auto[*drush.Drush],
|
||||
// stacks
|
||||
lifetime.Place[*barrel.Barrel](context)
|
||||
lifetime.Place[*bookkeeping.Bookkeeping](context)
|
||||
lifetime.Place[*manager.Manager](context)
|
||||
lifetime.Place[*system.SystemManager](context)
|
||||
lifetime.Place[*composer.Composer](context)
|
||||
lifetime.Place[*drush.Drush](context)
|
||||
|
||||
auto[*reserve.Reserve],
|
||||
lifetime.Place[*reserve.Reserve](context)
|
||||
|
||||
auto[*ssh.SSH],
|
||||
}
|
||||
lifetime.Place[*ssh.SSH](context)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue