lib/cassie/tasks/migration/create.rake
require 'optparse'
namespace :cassie do
namespace :migration do
desc "Generates an empty migration file prefixed with the next semantic version number"
task :create do
include Cassie::Tasks::IO
opts = {}
OptionParser.new do |args|
args.on("-b", "--build", "Bump build version number") do
opts[:bump_type] = :build
end
args.on("-p", "--patch", "Bump patch version number") do
opts[:bump_type] = :patch
end
args.on("-m", "--minor", "Bump minor version number") do
opts[:bump_type] = :minor
end
args.on("-M", "--major", "Bump major version number") do
opts[:bump_type] = :major
end
args.on("-v", "--version VERSION", "Explicitly set version") do |v|
opts[:version] = v
end
end.parse!(argv)
begin
raise("A migration description is required.\n\nUsage:\n cassie migration:create simple description") if argv.empty?
name = argv.join(" ")
version = Cassie::Schema::Version.new(opts[:version]) if opts[:version]
version ||= Cassie::Schema.next_version(opts[:bump_type])
version.description = name
puts("-- Creating migration file for version #{version.number}")
writer = Cassie::Schema::VersionWriter.new(version)
writer.write
rel_path = writer.filename.sub(Dir.pwd, "")
puts " > #{green('created')} #{rel_path}"
puts "-- done"
rescue => e
output_error(e)
abort
end
end
end
end