github.com/CloudCom/goose@v0.0.0-20151110184009-e03c3249c21b/cmd/goose/cmd_create.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"os"
     7  	"path/filepath"
     8  	"time"
     9  
    10  	"github.com/CloudCom/goose/lib/goose"
    11  )
    12  
    13  var createCmd = &Command{
    14  	Name:    "create",
    15  	Usage:   "<migration_name>",
    16  	Summary: "Create the scaffolding for a new migration",
    17  	Help:    `create extended help here...`,
    18  	Run:     createRun,
    19  }
    20  
    21  var migrationType string
    22  
    23  func init() {
    24  	createCmd.Flag.StringVar(&migrationType, "type", "sql", "type of migration to create [sql,go]")
    25  }
    26  
    27  func createRun(cmd *Command, args ...string) {
    28  	if len(args) != 1 {
    29  		cmd.Flag.Usage()
    30  		os.Exit(1)
    31  	}
    32  
    33  	conf, err := dbConfFromFlags()
    34  	if err != nil {
    35  		log.Fatal(err)
    36  	}
    37  
    38  	if err = os.MkdirAll(conf.MigrationsDir, 0750); err != nil {
    39  		log.Fatal(err)
    40  	}
    41  
    42  	n, err := goose.CreateMigration(args[0], migrationType, conf.MigrationsDir, time.Now())
    43  	if err != nil {
    44  		log.Fatal(err)
    45  	}
    46  
    47  	a, e := filepath.Abs(n)
    48  	if e != nil {
    49  		log.Fatal(e)
    50  	}
    51  
    52  	fmt.Println("goose: created", a)
    53  }