feat(cmd): add sequence flag to execute multiple functions
Some checks failed
ci/woodpecker/push/lint Pipeline failed
ci/woodpecker/push/test unknown status
ci/woodpecker/push/build unknown status

This commit is contained in:
Tom Neuber 2024-12-07 00:52:25 +01:00
parent f9018dd392
commit 8424fecce3
Signed by: tom
GPG key ID: F17EFE4272D89FF6
3 changed files with 18 additions and 2 deletions

View file

@ -36,8 +36,6 @@ func NewBackupCommand(c *config.Config) *cobra.Command {
} }
backupCmd.PersistentFlags().BoolVar(&c.ForceCommits, "force", false, "Force git commits / ignore existence check") backupCmd.PersistentFlags().BoolVar(&c.ForceCommits, "force", false, "Force git commits / ignore existence check")
backupCmd.PersistentFlags().StringVar(&c.GitEmail, "git-email", "", "Git email address")
backupCmd.PersistentFlags().StringVar(&c.GPGKey, "signing-key", "", "Path to the GPG signing key")
return backupCmd return backupCmd
} }

View file

@ -23,6 +23,20 @@ func NewRootCommand(c *config.Config) *cobra.Command {
Short: "Grafana Backuper CLI", Short: "Grafana Backuper CLI",
Long: "A command-line tool to back up and restore Grafana dashboards", Long: "A command-line tool to back up and restore Grafana dashboards",
Version: version.Version(), Version: version.Version(),
RunE: func(cmd *cobra.Command, _ []string) error {
if len(c.Sequence) == 0 {
return cmd.Help()
}
for _, command := range c.Sequence {
cmd.SetArgs([]string{command})
if err := cmd.Execute(); err != nil {
return err
}
}
return nil
},
PersistentPreRun: func(cmd *cobra.Command, _ []string) { PersistentPreRun: func(cmd *cobra.Command, _ []string) {
initializeConfig(cmd) initializeConfig(cmd)
@ -56,6 +70,9 @@ func NewRootCommand(c *config.Config) *cobra.Command {
rootCmd.PersistentFlags().StringVar(&c.GitRepo, "git-repo", "", "Complete Git repository URL") rootCmd.PersistentFlags().StringVar(&c.GitRepo, "git-repo", "", "Complete Git repository URL")
rootCmd.PersistentFlags().StringVar(&c.GitUser, "git-user", "", "Git user name") rootCmd.PersistentFlags().StringVar(&c.GitUser, "git-user", "", "Git user name")
rootCmd.PersistentFlags().StringVar(&c.GitPass, "git-pass", "", "Git user password") rootCmd.PersistentFlags().StringVar(&c.GitPass, "git-pass", "", "Git user password")
rootCmd.PersistentFlags().StringVar(&c.GitEmail, "git-email", "", "Git email address")
rootCmd.PersistentFlags().StringVar(&c.GPGKey, "signing-key", "", "Path to the GPG signing key")
rootCmd.Flags().StringArrayVar(&c.Sequence, "sequence", nil, "Command sequence to execute multiple functions")
return rootCmd return rootCmd
} }

View file

@ -29,6 +29,7 @@ type Config struct {
GitPass string GitPass string
GPGKey string GPGKey string
Quiet bool Quiet bool
Sequence []string
Output io.Writer Output io.Writer
Logger zerolog.Logger Logger zerolog.Logger