From 8900bd70a4da9a574b9bcdc0de0094dd8ac7bb1a Mon Sep 17 00:00:00 2001 From: Andrew Woodlee Date: Fri, 28 Feb 2025 17:39:08 -0600 Subject: [PATCH] changed PackageOperation to enums --- backy.code-workspace | 1 + cmd/cron.go | 6 ++- getCommandHelp | 118 ++++++++++++++++++++++--------------------- pkg/backy/backy.go | 2 +- pkg/backy/config.go | 9 ++-- pkg/backy/ssh.go | 2 +- pkg/backy/types.go | 18 ++++++- pkg/backy/utils.go | 8 +-- 8 files changed, 94 insertions(+), 70 deletions(-) diff --git a/backy.code-workspace b/backy.code-workspace index 8f55606..b4668e1 100644 --- a/backy.code-workspace +++ b/backy.code-workspace @@ -7,6 +7,7 @@ ], "settings": { "cSpell.words": [ + "Autorestic", "Cmds", "CMDSTDOUT", "knadh", diff --git a/cmd/cron.go b/cmd/cron.go index 7d28a73..462c856 100644 --- a/cmd/cron.go +++ b/cmd/cron.go @@ -18,7 +18,11 @@ var ( func cron(cmd *cobra.Command, args []string) { parseS3Config() - opts := backy.NewOpts(cfgFile, backy.EnableCron(), backy.SetLogFile(logFile), backy.SetCmdStdOut(cmdStdOut)) + opts := backy.NewOpts(cfgFile, + backy.EnableCron(), + backy.SetLogFile(logFile), + backy.SetCmdStdOut(cmdStdOut)) + opts.InitConfig() opts.ReadConfig() diff --git a/getCommandHelp b/getCommandHelp index a4111f1..f82142b 100755 --- a/getCommandHelp +++ b/getCommandHelp @@ -1,79 +1,83 @@ #!/bin/bash CLI_PAGE="docs/content/cli/_index.md" + +BACKYCOMMAND="go run backy.go" + +{ echo "--- -title: "CLI" +title: CLI weight: 4 --- This page lists documentation for the CLI. -" > _index.md +" -BACKYCOMMAND="go run backy.go" - -echo "## Backy " >> _index.md -echo " " >> _index.md -echo "\`\`\`" >> _index.md -eval "${BACKYCOMMAND} -h >> _index.md" -echo "\`\`\`" >> _index.md -echo " " >> _index.md +echo "## Backy " +echo " " +echo "\`\`\`" +eval "${BACKYCOMMAND} -h" +echo "\`\`\`" +echo " " -echo "# Subcommands" >> _index.md -echo "" >> _index.md -echo "## backup" >> _index.md -echo "" >> _index.md -echo "\`\`\`" >> _index.md -eval "${BACKYCOMMAND} backup -h >> _index.md" -echo "\`\`\`" >> _index.md -echo "" >> _index.md +echo "# Subcommands" +echo "" -echo "## cron" >> _index.md -echo "" >> _index.md -echo "\`\`\`" >> _index.md -eval "${BACKYCOMMAND} cron -h >> _index.md" -echo "\`\`\`" >> _index.md -echo "" >> _index.md +echo "## backup" +echo "" +echo "\`\`\`" +eval "${BACKYCOMMAND} backup -h" +echo "\`\`\`" +echo "" -echo "## exec" >> _index.md -echo "" >> _index.md -echo "\`\`\`" >> _index.md -eval "${BACKYCOMMAND} exec -h >> _index.md" -echo "\`\`\`" >> _index.md -echo "" >> _index.md +echo "## cron" +echo "" +echo "\`\`\`" +eval "${BACKYCOMMAND} cron -h" +echo "\`\`\`" +echo "" -echo "### exec host" >> _index.md -echo "" >> _index.md -echo "\`\`\`" >> _index.md -eval "${BACKYCOMMAND} exec host -h >> _index.md" -echo "\`\`\`" >> _index.md -echo "" >> _index.md +echo "## exec" +echo "" +echo "\`\`\`" +eval "${BACKYCOMMAND} exec -h" +echo "\`\`\`" +echo "" + +echo "### exec host" +echo "" +echo "\`\`\`" +eval "${BACKYCOMMAND} exec host -h" +echo "\`\`\`" +echo "" -echo "## version" >> _index.md -echo "" >> _index.md -echo "\`\`\`" >> _index.md -eval "${BACKYCOMMAND} version -h >> _index.md" -echo "\`\`\`" >> _index.md -echo "" >> _index.md +echo "## version" +echo "" +echo "\`\`\`" +eval "${BACKYCOMMAND} version -h" +echo "\`\`\`" +echo "" -echo "## list" >> _index.md -echo "" >> _index.md -echo "\`\`\`" >> _index.md -eval "${BACKYCOMMAND} list -h >> _index.md" -echo "\`\`\`" >> _index.md +echo "## list" +echo "" +echo "\`\`\`" +eval "${BACKYCOMMAND} list -h" +echo "\`\`\`" -echo "## list cmds" >> _index.md -echo "" >> _index.md -echo "\`\`\`" >> _index.md -eval "${BACKYCOMMAND} list cmds -h >> _index.md" -echo "\`\`\`" >> _index.md +echo "## list cmds" +echo "" +echo "\`\`\`" +eval "${BACKYCOMMAND} list cmds -h" +echo "\`\`\`" -echo "## list lists" >> _index.md -echo "" >> _index.md -echo "\`\`\`" >> _index.md -eval "${BACKYCOMMAND} list lists -h >> _index.md" -echo "\`\`\`" >> _index.md +echo "## list lists" +echo "" +echo "\`\`\`" +eval "${BACKYCOMMAND} list lists -h" +echo "\`\`\`" +} >> _index.md mv _index.md "$CLI_PAGE" \ No newline at end of file diff --git a/pkg/backy/backy.go b/pkg/backy/backy.go index d33a411..818f857 100644 --- a/pkg/backy/backy.go +++ b/pkg/backy/backy.go @@ -68,7 +68,7 @@ func (command *Command) RunCmd(cmdCtxLogger zerolog.Logger, opts *ConfigOpts) ([ } else { // Handle package operations - if command.Type == PackageCT && command.PackageOperation == "checkVersion" { + if command.Type == PackageCT && command.PackageOperation == PackOppCheckVersion { cmdCtxLogger.Info().Str("package", command.PackageName).Msg("Checking package versions") // Execute the package version command diff --git a/pkg/backy/config.go b/pkg/backy/config.go index b37c0d3..2902788 100644 --- a/pkg/backy/config.go +++ b/pkg/backy/config.go @@ -585,7 +585,7 @@ func processCmds(opts *ConfigOpts) error { if cmd.PackageManager == "" { return fmt.Errorf("package manager is required for package command %s", cmd.PackageName) } - if cmd.PackageOperation == "" { + if cmd.PackageOperation.String() == "" { return fmt.Errorf("package operation is required for package command %s", cmd.PackageName) } if cmd.PackageName == "" { @@ -594,15 +594,16 @@ func processCmds(opts *ConfigOpts) error { var err error // Validate the operation - switch cmd.PackageOperation { - case "install", "remove", "upgrade", "checkVersion": + if cmd.PackageOperation.IsAPackageOperation() { + cmd.pkgMan, err = pkgman.PackageManagerFactory(cmd.PackageManager, pkgman.WithoutAuth()) if err != nil { return err } - default: + } else { return fmt.Errorf("unsupported package operation %s for command %s", cmd.PackageOperation, cmd.Name) } + } // Parse user commands diff --git a/pkg/backy/ssh.go b/pkg/backy/ssh.go index 5c2aa2a..81340d3 100644 --- a/pkg/backy/ssh.go +++ b/pkg/backy/ssh.go @@ -538,7 +538,7 @@ func (command *Command) RunCmdSSH(cmdCtxLogger zerolog.Logger, opts *ConfigOpts) case ScriptFileCT: return command.runScriptFile(commandSession, cmdCtxLogger, &cmdOutBuf) case PackageCT: - if command.PackageOperation == "checkVersion" { + if command.PackageOperation == PackOppCheckVersion { commandSession.Stderr = nil // Execute the package version command remotely // Parse the output of package version command diff --git a/pkg/backy/types.go b/pkg/backy/types.go index 74a719b..938604e 100644 --- a/pkg/backy/types.go +++ b/pkg/backy/types.go @@ -106,7 +106,7 @@ type ( PackageVersion string `yaml:"packageVersion,omitempty"` // PackageOperation specifies the action for package-related commands (e.g., "install" or "remove") - PackageOperation string `yaml:"packageOperation,omitempty"` + PackageOperation PackageOperation `yaml:"packageOperation,omitempty"` pkgMan pkgman.PackageManager @@ -293,7 +293,10 @@ type ( ListName string // Name of the command list Error error // Error encountered, if any } - CommandType int + + // use ints so we can use enums + CommandType int + PackageOperation int ) //go:generate go run github.com/dmarkham/enumer -linecomment -yaml -text -json -type=CommandType @@ -305,3 +308,14 @@ const ( PackageCT // package UserCT // user ) + +//go:generate go run github.com/dmarkham/enumer -linecomment -yaml -text -json -type=PackageOperation +const ( + DefaultPO PackageOperation = iota // + PackOppInstall // install + PackOppUpgrade // upgrade + PackOppPurge // purge + PackOppRemove // remove + PackOppCheckVersion // checkVersion + PackOppIsInstalled // isInstalled +) diff --git a/pkg/backy/utils.go b/pkg/backy/utils.go index ffe1724..2c87cca 100644 --- a/pkg/backy/utils.go +++ b/pkg/backy/utils.go @@ -277,13 +277,13 @@ func getCommandTypeAndSetCommandInfo(command *Command) *Command { if command.Type == PackageCT && !command.packageCmdSet { command.packageCmdSet = true switch command.PackageOperation { - case "install": + case PackOppInstall: command.Cmd, command.Args = command.pkgMan.Install(command.PackageName, command.PackageVersion, command.Args) - case "remove": + case PackOppRemove: command.Cmd, command.Args = command.pkgMan.Remove(command.PackageName, command.Args) - case "upgrade": + case PackOppUpgrade: command.Cmd, command.Args = command.pkgMan.Upgrade(command.PackageName, command.PackageVersion) - case "checkVersion": + case PackOppCheckVersion: command.Cmd, command.Args = command.pkgMan.CheckVersion(command.PackageName, command.PackageVersion) } }