mirror of https://github.com/status-im/migrate.git
Use Go time format string if version other than timestamp is desired.
This commit is contained in:
parent
c6c6874d72
commit
8cdee40695
|
@ -49,10 +49,10 @@ func nextSeq(matches []string, dir string, seqDigits int) (string, error) {
|
||||||
return nextSeqStr, nil
|
return nextSeqStr, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createCmd(dir string, timestamp int64, name string, ext string, seq bool, seqDigits int, datetime bool) {
|
func createCmd(dir string, timestamp int64, format string, name string, ext string, seq bool, seqDigits int) {
|
||||||
var base string
|
var base string
|
||||||
if seq && datetime {
|
if seq && len(format) > 0 {
|
||||||
log.fatalErr(errors.New("seq and datetime options are mutually exclusive"))
|
log.fatalErr(errors.New("The seq and format options are mutually exclusive"))
|
||||||
}
|
}
|
||||||
if seq {
|
if seq {
|
||||||
if seqDigits <= 0 {
|
if seqDigits <= 0 {
|
||||||
|
@ -67,21 +67,30 @@ func createCmd(dir string, timestamp int64, name string, ext string, seq bool, s
|
||||||
log.fatalErr(err)
|
log.fatalErr(err)
|
||||||
}
|
}
|
||||||
base = fmt.Sprintf("%v%v_%v.", dir, nextSeqStr, name)
|
base = fmt.Sprintf("%v%v_%v.", dir, nextSeqStr, name)
|
||||||
} else if datetime {
|
|
||||||
now := time.Now();
|
|
||||||
year, month, day := now.Date();
|
|
||||||
var m = int(month);
|
|
||||||
hr, min, sec := now.Clock();
|
|
||||||
base = fmt.Sprintf("%04d%02d%02d%02d%02d%02d_%v.",year,m,day, hr, min, sec, name)
|
|
||||||
} else {
|
} else {
|
||||||
|
if len(format) > 0 {
|
||||||
|
t := time.Unix(timestamp, 0)
|
||||||
|
version := t.Format(format)
|
||||||
|
base = fmt.Sprintf("%v%v_%v.", dir, version, name)
|
||||||
|
} else {
|
||||||
|
log.Println("Time format not specified")
|
||||||
base = fmt.Sprintf("%v%v_%v.", dir, timestamp, name)
|
base = fmt.Sprintf("%v%v_%v.", dir, timestamp, name)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
os.MkdirAll(dir, os.ModePerm)
|
os.MkdirAll(dir, os.ModePerm)
|
||||||
createFile(base + "up" + ext)
|
createFile(base + "up" + ext)
|
||||||
createFile(base + "down" + ext)
|
createFile(base + "down" + ext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*else if datetime {
|
||||||
|
now := time.Now();
|
||||||
|
year, month, day := now.Date();
|
||||||
|
var m = int(month);
|
||||||
|
hr, min, sec := now.Clock();
|
||||||
|
base = fmt.Sprintf("%04d%02d%02d%02d%02d%02d_%v.",year,m,day, hr, min, sec, name)
|
||||||
|
} */
|
||||||
|
|
||||||
func createFile(fname string) {
|
func createFile(fname string) {
|
||||||
if _, err := os.Create(fname); err != nil {
|
if _, err := os.Create(fname); err != nil {
|
||||||
log.fatalErr(err)
|
log.fatalErr(err)
|
||||||
|
|
|
@ -42,10 +42,10 @@ Options:
|
||||||
-help Print usage
|
-help Print usage
|
||||||
|
|
||||||
Commands:
|
Commands:
|
||||||
create [-ext E] [-dir D] [-seq] [-digits N] [-datetime] NAME
|
create [-ext E] [-dir D] [-seq] [-digits N] [-format] NAME
|
||||||
Create a set of timestamped up/down migrations titled NAME, in directory D with extension E.
|
Create a set of timestamped up/down migrations titled NAME, in directory D with extension E.
|
||||||
Use -seq option to generate sequential up/down migrations with N digits.
|
Use -seq option to generate sequential up/down migrations with N digits.
|
||||||
Use -datetime option to generate migrations where the version is yyyymmddhhmmss.
|
Use -format option to specify a Go time format string.
|
||||||
goto V Migrate to version V
|
goto V Migrate to version V
|
||||||
up [N] Apply all or N up migrations
|
up [N] Apply all or N up migrations
|
||||||
down [N] Apply all or N down migrations
|
down [N] Apply all or N down migrations
|
||||||
|
@ -110,14 +110,13 @@ Commands:
|
||||||
args := flag.Args()[1:]
|
args := flag.Args()[1:]
|
||||||
seq := false
|
seq := false
|
||||||
seqDigits := 6
|
seqDigits := 6
|
||||||
datetime := false
|
|
||||||
|
|
||||||
createFlagSet := flag.NewFlagSet("create", flag.ExitOnError)
|
createFlagSet := flag.NewFlagSet("create", flag.ExitOnError)
|
||||||
extPtr := createFlagSet.String("ext", "", "File extension")
|
extPtr := createFlagSet.String("ext", "", "File extension")
|
||||||
dirPtr := createFlagSet.String("dir", "", "Directory to place file in (default: current working directory)")
|
dirPtr := createFlagSet.String("dir", "", "Directory to place file in (default: current working directory)")
|
||||||
|
formatPtr := createFlagSet.String("format", "", "Specify the format of the version using a Go time format string. For yyyymmddhhmmss use format of 20060102150405. If not specified the version will be the unix timestamp.")
|
||||||
createFlagSet.BoolVar(&seq, "seq", seq, "Use sequential numbers instead of timestamps (default: false)")
|
createFlagSet.BoolVar(&seq, "seq", seq, "Use sequential numbers instead of timestamps (default: false)")
|
||||||
createFlagSet.IntVar(&seqDigits, "digits", seqDigits, "The number of digits to use in sequences (default: 6)")
|
createFlagSet.IntVar(&seqDigits, "digits", seqDigits, "The number of digits to use in sequences (default: 6)")
|
||||||
createFlagSet.BoolVar(&datetime, "datetime", datetime, "Generate migrations where the version is yyyymmddhhmmss")
|
|
||||||
createFlagSet.Parse(args)
|
createFlagSet.Parse(args)
|
||||||
|
|
||||||
if createFlagSet.NArg() == 0 {
|
if createFlagSet.NArg() == 0 {
|
||||||
|
@ -134,7 +133,7 @@ Commands:
|
||||||
|
|
||||||
timestamp := startTime.Unix()
|
timestamp := startTime.Unix()
|
||||||
|
|
||||||
createCmd(*dirPtr, timestamp, name, *extPtr, seq, seqDigits, datetime)
|
createCmd(*dirPtr, timestamp, *formatPtr, name, *extPtr, seq, seqDigits)
|
||||||
|
|
||||||
case "goto":
|
case "goto":
|
||||||
if migraterErr != nil {
|
if migraterErr != nil {
|
||||||
|
|
Loading…
Reference in New Issue