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