Skip to content

Commit 396046c

Browse files
committed
add callback to migration cli
1 parent e69978e commit 396046c

File tree

7 files changed

+30
-2
lines changed

7 files changed

+30
-2
lines changed

migration/cmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ func NewMigrationCLI(m Migration, options ...CLIOptions) *cobra.Command {
1919
cmd.AddCommand(cmdUp(m, option))
2020
cmd.AddCommand(cmdDown(m, option))
2121
cmd.AddCommand(cmdRefresh(m, option))
22-
cmd.AddCommand(cmdSummary(m))
22+
cmd.AddCommand(cmdSummary(m, option))
2323
return cmd
2424
}

migration/cmd_down.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ func cmdDown(m Migration, option *cliOption) *cobra.Command {
1414
downCmd.Short = "rollback migrations"
1515
downCmd.Flags().StringP("name", "n", "", "migration name")
1616
downCmd.Run = func(cmd *cobra.Command, args []string) {
17+
if option.callback != nil {
18+
defer option.callback()
19+
}
20+
1721
stages := append([]string{}, args...)
1822
if len(stages) == 0 {
1923
stages = option.stages.Elements()

migration/cmd_new.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ func cmdNew(m Migration, option *cliOption) *cobra.Command {
1414
Short: "Create a new migration file with default stages in the output path",
1515
Args: cobra.MinimumNArgs(1),
1616
Run: func(cmd *cobra.Command, args []string) {
17+
if option.callback != nil {
18+
defer option.callback()
19+
}
20+
1721
if option.root == "" {
1822
console.Message().
1923
Red("Create").Italic().

migration/cmd_option.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ type cliOption struct {
77
refreshes *optionSet
88
only *optionSet
99
exclude *optionSet
10+
callback func()
1011
}
1112

1213
func newCLIOption() *cliOption {
@@ -64,3 +65,10 @@ func WithNewCMD(enabled bool) CLIOptions {
6465
o.create = enabled
6566
}
6667
}
68+
69+
// WithCallback register a callback function to call after command finished.
70+
func WithCallback(cb func()) CLIOptions {
71+
return func(o *cliOption) {
72+
o.callback = cb
73+
}
74+
}

migration/cmd_refresh.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ func cmdRefresh(m Migration, option *cliOption) *cobra.Command {
1414
reCmd.Short = "refresh migrations"
1515
reCmd.Flags().StringP("name", "n", "", "migration name")
1616
reCmd.Run = func(cmd *cobra.Command, args []string) {
17+
if option.callback != nil {
18+
defer option.callback()
19+
}
20+
1721
stages := append([]string{}, args...)
1822
if len(stages) == 0 {
1923
stages = option.refreshes.Elements()

migration/cmd_summary.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,15 @@ import (
99
"github.com/spf13/cobra"
1010
)
1111

12-
func cmdSummary(m Migration) *cobra.Command {
12+
func cmdSummary(m Migration, option *cliOption) *cobra.Command {
1313
return &cobra.Command{
1414
Use: "summary",
1515
Short: "show migration summary",
1616
Run: func(cmd *cobra.Command, args []string) {
17+
if option.callback != nil {
18+
defer option.callback()
19+
}
20+
1721
summary, err := m.Summary()
1822
if err != nil {
1923
console.Message().Red("Summary").Italic().Print(err.Error())

migration/cmd_up.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ func cmdUp(m Migration, option *cliOption) *cobra.Command {
1414
upCmd.Short = "applies migrations"
1515
upCmd.Flags().StringP("name", "n", "", "migration name")
1616
upCmd.Run = func(cmd *cobra.Command, args []string) {
17+
if option.callback != nil {
18+
defer option.callback()
19+
}
20+
1721
stages := append([]string{}, args...)
1822
if len(stages) == 0 {
1923
stages = option.stages.Elements()

0 commit comments

Comments
 (0)