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)
}

View file

@ -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])
}

View file

@ -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 {

View file

@ -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,

View file

@ -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, &region, blocksPHP, "get_footer_region")
err = blocks.dependencies.PHP.ExecScript(ctx, server, &region, blocksPHP, "get_footer_region")
return
}

View file

@ -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
}

View file

@ -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) {

View file

@ -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

View file

@ -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
}

View file

@ -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
}

View file

@ -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",
)

View file

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

View file

@ -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
}

View file

@ -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

View file

@ -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
}