61 lines
1.8 KiB
Go
61 lines
1.8 KiB
Go
package extras
|
|
|
|
import (
|
|
"context"
|
|
_ "embed"
|
|
|
|
"github.com/FAU-CDI/wisski-distillery/internal/phpx"
|
|
"github.com/FAU-CDI/wisski-distillery/internal/status"
|
|
"github.com/FAU-CDI/wisski-distillery/internal/wisski/ingredient"
|
|
"github.com/FAU-CDI/wisski-distillery/internal/wisski/ingredient/php"
|
|
"golang.org/x/exp/slices"
|
|
)
|
|
|
|
type Pathbuilder struct {
|
|
ingredient.Base
|
|
Dependencies struct {
|
|
PHP *php.PHP
|
|
}
|
|
}
|
|
|
|
var (
|
|
_ ingredient.WissKIFetcher = (*Pathbuilder)(nil)
|
|
)
|
|
|
|
//go:embed pathbuilder.php
|
|
var pathbuilderPHP string
|
|
|
|
// All returns the ids of all pathbuilders in consistent order.
|
|
//
|
|
// 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")
|
|
slices.Sort(ids)
|
|
return
|
|
}
|
|
|
|
// Get returns a single pathbuilder as xml.
|
|
// If it does not exist, it returns the empty string and nil error.
|
|
//
|
|
// 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)
|
|
return
|
|
}
|
|
|
|
// GetAll returns all pathbuilders serialized as xml
|
|
//
|
|
// 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")
|
|
return
|
|
}
|
|
|
|
func (pathbuilder *Pathbuilder) Fetch(flags ingredient.FetcherFlags, info *status.WissKI) (err error) {
|
|
if flags.Quick {
|
|
return
|
|
}
|
|
|
|
info.Pathbuilders, _ = pathbuilder.GetAll(flags.Context, flags.Server)
|
|
return
|
|
}
|