Skip to content

Commit 7dc03e3

Browse files
authored
Merge pull request #509 from nronas/master
Allow the ability to pass timezone when generating migration files
2 parents e57a024 + 6cdb8c1 commit 7dc03e3

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

internal/cli/main.go

+11-3
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ import (
1717

1818
const (
1919
defaultTimeFormat = "20060102150405"
20-
createUsage = `create [-ext E] [-dir D] [-seq] [-digits N] [-format] NAME
20+
defaultTimezone = "UTC"
21+
createUsage = `create [-ext E] [-dir D] [-seq] [-digits N] [-format] [-tz] NAME
2122
Create a set of timestamped up/down migrations titled NAME, in directory D with extension E.
2223
Use -seq option to generate sequential up/down migrations with N digits.
23-
Use -format option to specify a Go time format string. Note: migrations with the same time cause "duplicate migration version" error.
24+
Use -format option to specify a Go time format string. Note: migrations with the same time cause "duplicate migration version" error.
25+
Use -tz option to specify the timezone that will be used when generating non-sequential migrations (defaults: UTC).
2426
`
2527
gotoUsage = `goto V Migrate to version V`
2628
upUsage = `up [N] Apply all or N up migrations`
@@ -162,6 +164,7 @@ Database drivers: `+strings.Join(database.List(), ", ")+"\n", createUsage, gotoU
162164
extPtr := createFlagSet.String("ext", "", "File extension")
163165
dirPtr := createFlagSet.String("dir", "", "Directory to place file in (default: current working directory)")
164166
formatPtr := createFlagSet.String("format", defaultTimeFormat, `The Go time format string to use. If the string "unix" or "unixNano" is specified, then the seconds or nanoseconds since January 1, 1970 UTC respectively will be used. Caution, due to the behavior of time.Time.Format(), invalid format strings will not error`)
167+
timezoneName := createFlagSet.String("tz", defaultTimezone, `The timezone that will be used for generating timestamps (default: utc)`)
165168
createFlagSet.BoolVar(&seq, "seq", seq, "Use sequential numbers instead of timestamps (default: false)")
166169
createFlagSet.IntVar(&seqDigits, "digits", seqDigits, "The number of digits to use in sequences (default: 6)")
167170

@@ -180,7 +183,12 @@ Database drivers: `+strings.Join(database.List(), ", ")+"\n", createUsage, gotoU
180183
log.fatal("error: -ext flag must be specified")
181184
}
182185

183-
if err := createCmd(*dirPtr, startTime, *formatPtr, name, *extPtr, seq, seqDigits, true); err != nil {
186+
timezone, err := time.LoadLocation(*timezoneName)
187+
if err != nil {
188+
log.fatal(err)
189+
}
190+
191+
if err := createCmd(*dirPtr, startTime.In(timezone), *formatPtr, name, *extPtr, seq, seqDigits, true); err != nil {
184192
log.fatalErr(err)
185193
}
186194

0 commit comments

Comments
 (0)