github.com/schemalex/git-schemalex@v0.0.0-20170921120917-b690b7f9e063/cmd/git-schemalex/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "flag" 6 "fmt" 7 "log" 8 "os" 9 "os/signal" 10 "syscall" 11 12 "github.com/schemalex/git-schemalex" 13 ) 14 15 var ( 16 workspace = flag.String("workspace", "", "workspace of git") 17 deploy = flag.Bool("deploy", false, "deploy") 18 dsn = flag.String("dsn", "", "") 19 table = flag.String("table", "git_schemalex_version", "table of git revision") 20 schema = flag.String("schema", "", "path to schema file") 21 ) 22 23 func main() { 24 flag.Parse() 25 if err := _main(); err != nil { 26 log.Fatal(err) 27 } 28 } 29 30 func _main() error { 31 ctx, cancel := context.WithCancel(context.Background()) 32 defer cancel() 33 34 sigCh := make(chan os.Signal, 1) 35 signal.Notify(sigCh, syscall.SIGTERM, syscall.SIGINT, syscall.SIGQUIT) 36 37 go func() { 38 select { 39 case <-ctx.Done(): 40 return 41 case <-sigCh: 42 cancel() 43 return 44 } 45 }() 46 47 r := &gitschemalex.Runner{ 48 Workspace: *workspace, 49 Deploy: *deploy, 50 DSN: *dsn, 51 Table: *table, 52 Schema: *schema, 53 } 54 err := r.Run(ctx) 55 if err == gitschemalex.ErrEqualVersion { 56 fmt.Println(err.Error()) 57 return nil 58 } 59 return err 60 }