rebuild: Add explicit flag for updating

This commit is contained in:
Tom 2023-07-15 15:36:17 +02:00
parent df386e9f65
commit 63c5db734d

View file

@ -18,6 +18,7 @@ var Rebuild wisski_distillery.Command = rebuild{}
type rebuild struct { type rebuild struct {
Parallel int `short:"a" long:"parallel" description:"run on (at most) this many instances in parallel. 0 for no limit." default:"1"` Parallel int `short:"a" long:"parallel" description:"run on (at most) this many instances in parallel. 0 for no limit." default:"1"`
System bool `short:"s" long:"system-update" description:"Update the system configuration according to other flags"`
PHPVersion string `short:"p" long:"php" description:"update to specific php version to use for instance. Should be one of '8.0', '8.1'."` PHPVersion string `short:"p" long:"php" description:"update to specific php version to use for instance. Should be one of '8.0', '8.1'."`
OPCacheDevelopment bool `short:"o" long:"opcache-devel" description:"Include opcache development configuration"` OPCacheDevelopment bool `short:"o" long:"opcache-devel" description:"Include opcache development configuration"`
ContentSecurityPolicy string `short:"c" long:"content-security-policy" description:"Setup ContentSecurityPolicy"` ContentSecurityPolicy string `short:"c" long:"content-security-policy" description:"Setup ContentSecurityPolicy"`
@ -27,6 +28,21 @@ type rebuild struct {
} `positional-args:"true"` } `positional-args:"true"`
} }
var errRebuildNoSystem = exit.Error{
Message: "flags for system reconfiguration have been set, but `--system' was not provided",
ExitCode: exit.ExitCommandArguments,
}
func (rb rebuild) AfterParse() error {
if rb.System {
return nil
}
if rb.PHPVersion != "" || rb.OPCacheDevelopment || rb.ContentSecurityPolicy != "" {
return errRebuildNoSystem
}
return nil
}
func (rebuild) Description() wisski_distillery.Description { func (rebuild) Description() wisski_distillery.Description {
return wisski_distillery.Description{ return wisski_distillery.Description{
Requirements: cli.Requirements{ Requirements: cli.Requirements{
@ -55,11 +71,16 @@ func (rb rebuild) Run(context wisski_distillery.Context) (err error) {
// and do the actual rebuild // and do the actual rebuild
return status.WriterGroup(context.Stderr, rb.Parallel, func(instance *wisski.WissKI, writer io.Writer) error { return status.WriterGroup(context.Stderr, rb.Parallel, func(instance *wisski.WissKI, writer io.Writer) error {
return instance.SystemManager().Apply(context.Context, writer, models.System{ sys := instance.System
if rb.System {
sys = models.System{
PHP: rb.PHPVersion, PHP: rb.PHPVersion,
OpCacheDevelopment: rb.OPCacheDevelopment, OpCacheDevelopment: rb.OPCacheDevelopment,
ContentSecurityPolicy: rb.ContentSecurityPolicy, ContentSecurityPolicy: rb.ContentSecurityPolicy,
}, true) }
}
return instance.SystemManager().Apply(context.Context, writer, sys, true)
}, wissKIs, status.SmartMessage(func(item *wisski.WissKI) string { }, wissKIs, status.SmartMessage(func(item *wisski.WissKI) string {
return fmt.Sprintf("rebuild %q", item.Slug) return fmt.Sprintf("rebuild %q", item.Slug)
})) }))