1#!/usr/bin/env ruby
2require 'erb'
3
4PROGNAME = File.basename(__FILE__)
5MIGRATIONS_DIR = 'internal/praefect/datastore/migrations'
6
7def main(migration_name)
8  unless /\A[a-z0-9_]+\z/ =~ migration_name
9    abort "invalid migration name #{migration_name.inspect} (only a-z0-9_ are allowed)"
10  end
11
12  sequence_number = Time.now.utc.strftime('%Y%m%d%H%M%S')
13
14  migration_file =  File.join(MIGRATIONS_DIR, "#{sequence_number}_#{migration_name}.go")
15  warn "#{PROGNAME}: creating #{migration_file}"
16  IO.write(migration_file, ERB.new(DATA.read).result(binding))
17end
18
19unless ARGV.count == 1
20  abort "usage: #{PROGNAME} MIGRATION_NAME"
21end
22
23main(*ARGV)
24
25__END__
26package migrations
27
28import migrate "github.com/rubenv/sql-migrate"
29
30func init() {
31	m := &migrate.Migration{
32		Id:   "<%= sequence_number %>_<%= migration_name %>",
33		Up:   []string{},
34		Down: []string{},
35	}
36
37	allMigrations = append(allMigrations, m)
38}
39