-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmain.go
77 lines (67 loc) · 1.81 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package main
import (
"log"
"miga/commands"
"miga/config"
"miga/driver"
"miga/logger"
"github.com/spf13/cobra"
_ "github.com/ClickHouse/clickhouse-go/v2"
_ "github.com/go-sql-driver/mysql"
_ "github.com/lib/pq"
_ "github.com/vertica/vertica-sql-go"
)
var (
Name = "miga"
Version = "develop"
)
func main() {
var (
configFile string
migrationDriver driver.Interface
driverGet = func() driver.Interface {
return migrationDriver
}
cfg *config.Config
cfgGet = func() *config.Config {
return cfg
}
err error
)
rootCmd := &cobra.Command{
Use: "miga",
Short: "miga is database migration tool",
Long: "miga is database migration tool",
PersistentPreRun: func(cmd *cobra.Command, args []string) {
cfg, err = config.NewConfig(configFile)
if err != nil {
panic(err)
}
if err = logger.Init(Name, Version, cfg.Logger.Level, cfg.Logger.Format); err != nil {
panic(err)
}
migrationDriver, err = driver.New(cfg)
if err != nil {
logger.G().Fatal("Create driver: %s", err)
}
},
Run: func(cmd *cobra.Command, args []string) {
logger.G().Info("Root command")
},
}
rootCmd.PersistentFlags().StringVarP(&configFile, "config", "c", "miga.yml", "config file path")
rootCmd.MarkPersistentFlagRequired("config")
rootCmd.AddCommand(commands.Version(driverGet))
rootCmd.AddCommand(commands.Up(driverGet))
rootCmd.AddCommand(commands.UpTo(driverGet))
rootCmd.AddCommand(commands.Convert(cfgGet))
rootCmd.AddCommand(commands.Create(driverGet))
rootCmd.AddCommand(commands.Down(driverGet))
rootCmd.AddCommand(commands.DownTo(driverGet))
rootCmd.AddCommand(commands.Redo(driverGet))
rootCmd.AddCommand(commands.Reset(driverGet))
rootCmd.AddCommand(commands.Status(driverGet))
if err := rootCmd.Execute(); err != nil {
log.Printf("error: %s", err)
}
}