feat(cmd): add sequence
flag to execute multiple functions
This commit is contained in:
parent
9467e9d0b7
commit
26443b69b7
5 changed files with 36 additions and 4 deletions
12
Dockerfile
12
Dockerfile
|
@ -20,6 +20,14 @@ FROM alpine
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Copy built binary from build image
|
# Copy built binary from build image
|
||||||
COPY --from=build /workspace/grafana-backuper /app
|
COPY --from=build /workspace/grafana-backuper .
|
||||||
|
|
||||||
ENTRYPOINT ["/app/grafana-backuper backup --json"]
|
RUN chmod +x grafana-backuper
|
||||||
|
|
||||||
|
# Copy the wrapper script
|
||||||
|
COPY entrypoint.sh .
|
||||||
|
|
||||||
|
# Ensure the script is executable
|
||||||
|
RUN chmod +x entrypoint.sh
|
||||||
|
|
||||||
|
ENTRYPOINT ["entrypoint.sh"]
|
||||||
|
|
8
entrypoint.sh
Normal file
8
entrypoint.sh
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check if the environment variable GRAFANA_MODE is set
|
||||||
|
if [ -z "$GB_SEQUENCE" ]; then
|
||||||
|
exec ./grafana-backuper backup --json
|
||||||
|
else
|
||||||
|
exec ./grafana-backuper --json
|
||||||
|
fi
|
|
@ -37,8 +37,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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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().StringSliceVar(&c.Sequence, "sequence", nil, "Command sequence to execute multiple functions")
|
||||||
|
|
||||||
return rootCmd
|
return rootCmd
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue