332 lines
7.7 KiB
Go
332 lines
7.7 KiB
Go
package internal
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
|
|
"coopcloud.tech/abra/pkg/log"
|
|
"github.com/urfave/cli/v3"
|
|
)
|
|
|
|
// Secrets stores the variable from SecretsFlag
|
|
var Secrets bool
|
|
|
|
// SecretsFlag turns on/off automatically generating secrets
|
|
var SecretsFlag = &cli.BoolFlag{
|
|
Name: "secrets",
|
|
Aliases: []string{"S"},
|
|
Usage: "Automatically generate secrets",
|
|
Destination: &Secrets,
|
|
}
|
|
|
|
// Pass stores the variable from PassFlag
|
|
var Pass bool
|
|
|
|
// PassFlag turns on/off storing generated secrets in pass
|
|
var PassFlag = &cli.BoolFlag{
|
|
Name: "pass",
|
|
Aliases: []string{"p"},
|
|
Usage: "Store the generated secrets in a local pass store",
|
|
Destination: &Pass,
|
|
}
|
|
|
|
// PassRemove stores the variable for PassRemoveFlag
|
|
var PassRemove bool
|
|
|
|
// PassRemoveFlag turns on/off removing generated secrets from pass
|
|
var PassRemoveFlag = &cli.BoolFlag{
|
|
Name: "pass",
|
|
Aliases: []string{"p"},
|
|
Usage: "Remove generated secrets from a local pass store",
|
|
Destination: &PassRemove,
|
|
}
|
|
|
|
var File bool
|
|
var FileFlag = &cli.BoolFlag{
|
|
Name: "file",
|
|
Aliases: []string{"f"},
|
|
Usage: "Treat input as a file",
|
|
Destination: &File,
|
|
}
|
|
|
|
var Trim bool
|
|
var TrimFlag = &cli.BoolFlag{
|
|
Name: "trim",
|
|
Aliases: []string{"t"},
|
|
Usage: "Trim input",
|
|
Destination: &Trim,
|
|
}
|
|
|
|
// Force force functionality without asking.
|
|
var Force bool
|
|
|
|
// ForceFlag turns on/off force functionality.
|
|
var ForceFlag = &cli.BoolFlag{
|
|
Name: "force",
|
|
Aliases: []string{"f"},
|
|
Usage: "Perform action without further prompt. Use with care!",
|
|
Destination: &Force,
|
|
}
|
|
|
|
// Chaos engages chaos mode.
|
|
var Chaos bool
|
|
|
|
// ChaosFlag turns on/off chaos functionality.
|
|
var ChaosFlag = &cli.BoolFlag{
|
|
Name: "chaos",
|
|
Aliases: []string{"C"},
|
|
Usage: "Ignore uncommitted recipes changes. Use with care!",
|
|
Destination: &Chaos,
|
|
}
|
|
|
|
// Disable tty to run commands from script
|
|
var Tty bool
|
|
|
|
// TtyFlag turns on/off tty mode.
|
|
var TtyFlag = &cli.BoolFlag{
|
|
Name: "tty",
|
|
Aliases: []string{"T"},
|
|
Usage: "Disables TTY mode to run this command from a script.",
|
|
Destination: &Tty,
|
|
}
|
|
|
|
var NoInput bool
|
|
var NoInputFlag = &cli.BoolFlag{
|
|
Name: "no-input",
|
|
Aliases: []string{"n"},
|
|
Usage: "Toggle non-interactive mode",
|
|
Destination: &NoInput,
|
|
}
|
|
|
|
// Debug stores the variable from DebugFlag.
|
|
var Debug bool
|
|
|
|
// DebugFlag turns on/off verbose logging down to the DEBUG level.
|
|
var DebugFlag = &cli.BoolFlag{
|
|
Name: "debug",
|
|
Aliases: []string{"d"},
|
|
Destination: &Debug,
|
|
Usage: "Show DEBUG messages",
|
|
}
|
|
|
|
// Offline stores the variable from OfflineFlag.
|
|
var Offline bool
|
|
|
|
// DebugFlag turns on/off offline mode.
|
|
var OfflineFlag = &cli.BoolFlag{
|
|
Name: "offline",
|
|
Aliases: []string{"o"},
|
|
Destination: &Offline,
|
|
Usage: "Prefer offline & filesystem access",
|
|
}
|
|
|
|
// ReleaseNotes stores the variable from ReleaseNotesFlag.
|
|
var ReleaseNotes bool
|
|
|
|
// ReleaseNotesFlag turns on/off printing only release notes when upgrading.
|
|
var ReleaseNotesFlag = &cli.BoolFlag{
|
|
Name: "releasenotes",
|
|
Aliases: []string{"r"},
|
|
Destination: &ReleaseNotes,
|
|
Usage: "Only show release notes",
|
|
}
|
|
|
|
// MachineReadable stores the variable from MachineReadableFlag
|
|
var MachineReadable bool
|
|
|
|
// MachineReadableFlag turns on/off machine readable output where supported
|
|
var MachineReadableFlag = &cli.BoolFlag{
|
|
Name: "machine",
|
|
Aliases: []string{"m"},
|
|
Destination: &MachineReadable,
|
|
Usage: "Machine-readable output",
|
|
}
|
|
|
|
// RC signifies the latest release candidate
|
|
var RC bool
|
|
|
|
// RCFlag chooses the latest release candidate for install
|
|
var RCFlag = &cli.BoolFlag{
|
|
Name: "rc",
|
|
Aliases: []string{"r"},
|
|
Destination: &RC,
|
|
Usage: "Install the latest release candidate",
|
|
}
|
|
|
|
var Major bool
|
|
var MajorFlag = &cli.BoolFlag{
|
|
Name: "major",
|
|
Aliases: []string{"x"},
|
|
Usage: "Increase the major part of the version",
|
|
Destination: &Major,
|
|
}
|
|
|
|
var Minor bool
|
|
var MinorFlag = &cli.BoolFlag{
|
|
Name: "minor",
|
|
Aliases: []string{"y"},
|
|
Usage: "Increase the minor part of the version",
|
|
Destination: &Minor,
|
|
}
|
|
|
|
var Patch bool
|
|
var PatchFlag = &cli.BoolFlag{
|
|
Name: "patch",
|
|
Aliases: []string{"z"},
|
|
Usage: "Increase the patch part of the version",
|
|
Destination: &Patch,
|
|
}
|
|
|
|
var Dry bool
|
|
var DryFlag = &cli.BoolFlag{
|
|
Name: "dry-run",
|
|
Aliases: []string{"r"},
|
|
Usage: "Only reports changes that would be made",
|
|
Destination: &Dry,
|
|
}
|
|
|
|
var Publish bool
|
|
var PublishFlag = &cli.BoolFlag{
|
|
Name: "publish",
|
|
Aliases: []string{"p"},
|
|
Usage: "Publish changes to git.coopcloud.tech",
|
|
Destination: &Publish,
|
|
}
|
|
|
|
var Domain string
|
|
var DomainFlag = &cli.StringFlag{
|
|
Name: "domain",
|
|
Aliases: []string{"D"},
|
|
Value: "",
|
|
Usage: "Choose a domain name",
|
|
Destination: &Domain,
|
|
}
|
|
|
|
var NewAppServer string
|
|
var NewAppServerFlag = &cli.StringFlag{
|
|
Name: "server",
|
|
Aliases: []string{"s"},
|
|
Value: "",
|
|
Usage: "Show apps of a specific server",
|
|
Destination: &NewAppServer,
|
|
}
|
|
|
|
var NoDomainChecks bool
|
|
var NoDomainChecksFlag = &cli.BoolFlag{
|
|
Name: "no-domain-checks",
|
|
Aliases: []string{"D"},
|
|
Usage: "Disable public DNS checks",
|
|
Destination: &NoDomainChecks,
|
|
}
|
|
|
|
var StdErrOnly bool
|
|
var StdErrOnlyFlag = &cli.BoolFlag{
|
|
Name: "stderr",
|
|
Aliases: []string{"s"},
|
|
Usage: "Only tail stderr",
|
|
Destination: &StdErrOnly,
|
|
}
|
|
|
|
var SinceLogs string
|
|
var SinceLogsFlag = &cli.StringFlag{
|
|
Name: "since",
|
|
Aliases: []string{"S"},
|
|
Value: "",
|
|
Usage: "tail logs since YYYY-MM-DDTHH:MM:SSZ",
|
|
Destination: &SinceLogs,
|
|
}
|
|
|
|
var DontWaitConverge bool
|
|
var DontWaitConvergeFlag = &cli.BoolFlag{
|
|
Name: "no-converge-checks",
|
|
Aliases: []string{"c"},
|
|
Usage: "Don't wait for converge logic checks",
|
|
Destination: &DontWaitConverge,
|
|
}
|
|
|
|
var Watch bool
|
|
var WatchFlag = &cli.BoolFlag{
|
|
Name: "watch",
|
|
Aliases: []string{"w"},
|
|
Usage: "Watch status by polling repeatedly",
|
|
Destination: &Watch,
|
|
}
|
|
|
|
var OnlyErrors bool
|
|
var OnlyErrorFlag = &cli.BoolFlag{
|
|
Name: "errors",
|
|
Aliases: []string{"e"},
|
|
Usage: "Only show errors",
|
|
Destination: &OnlyErrors,
|
|
}
|
|
|
|
var SkipUpdates bool
|
|
var SkipUpdatesFlag = &cli.BoolFlag{
|
|
Name: "skip-updates",
|
|
Aliases: []string{"s"},
|
|
Usage: "Skip updating recipe repositories",
|
|
Destination: &SkipUpdates,
|
|
}
|
|
|
|
var AllTags bool
|
|
var AllTagsFlag = &cli.BoolFlag{
|
|
Name: "all-tags",
|
|
Aliases: []string{"a"},
|
|
Usage: "List all tags, not just upgrades",
|
|
Destination: &AllTags,
|
|
}
|
|
|
|
var LocalCmd bool
|
|
var LocalCmdFlag = &cli.BoolFlag{
|
|
Name: "local",
|
|
Aliases: []string{"l"},
|
|
Usage: "Run command locally",
|
|
Destination: &LocalCmd,
|
|
}
|
|
|
|
var RemoteUser string
|
|
var RemoteUserFlag = &cli.StringFlag{
|
|
Name: "user",
|
|
Aliases: []string{"u"},
|
|
Value: "",
|
|
Usage: "User to run command within a service context",
|
|
Destination: &RemoteUser,
|
|
}
|
|
|
|
var GitName string
|
|
var GitNameFlag = &cli.StringFlag{
|
|
Name: "git-name",
|
|
Aliases: []string{"gn"},
|
|
Value: "",
|
|
Usage: "Git (user) name to do commits with",
|
|
Destination: &GitName,
|
|
}
|
|
|
|
var GitEmail string
|
|
var GitEmailFlag = &cli.StringFlag{
|
|
Name: "git-email",
|
|
Aliases: []string{"ge"},
|
|
Value: "",
|
|
Usage: "Git email name to do commits with",
|
|
Destination: &GitEmail,
|
|
}
|
|
|
|
var AllServices bool
|
|
var AllServicesFlag = &cli.BoolFlag{
|
|
Name: "all-services",
|
|
Aliases: []string{"a"},
|
|
Usage: "Restart all services",
|
|
Destination: &AllServices,
|
|
}
|
|
|
|
// SubCommandBefore wires up pre-action machinery (e.g. --debug handling).
|
|
func SubCommandBefore(ctx context.Context, cmd *cli.Command) error {
|
|
if Debug {
|
|
log.SetLevel(log.DebugLevel)
|
|
log.SetOutput(os.Stderr)
|
|
log.SetReportCaller(true)
|
|
}
|
|
|
|
return nil
|
|
}
|