bin/publish
#!/usr/bin/env ruby
# frozen_string_literal: true
require "pathname"
require "fileutils"
require "active_support/core_ext/string"
require_relative "../lib/release/notes/version"
# path to your application root.
APP_ROOT = Pathname.new File.expand_path("..", __dir__)
MASTER_CHECK = <<~MASTER_CHECK
if [ $(git symbolic-ref --short -q HEAD) != 'master' ];
then exit 1;
fi
MASTER_CHECK
VERSION_TYPES = %w(major minor patch).freeze
def system!(*args)
system(*args) || abort("\n== Command #{args} failed ==")
end
abort("\n== Version Type incorrect ==") unless VERSION_TYPES.include?(ARGV[0])
abort("\n== Not on master") unless system(MASTER_CHECK)
current_version = Release::Notes::VERSION.split(".").map(&:to_i)
case ARGV[0]
when "major"
current_version[0] += 1
current_version[1] = 0
current_version[2] = 0
when "minor"
current_version[1] += 1
current_version[2] = 0
when "patch"
current_version[2] += 1
end
FileUtils.chdir APP_ROOT do
contents = <<~FILE
# frozen_string_literal: true
module Release
module Notes
VERSION = "#{current_version.join('.')}"
end
end
FILE
puts "== Updating version to #{current_version.join('.')} =="
File.write("lib/release/notes/version.rb", contents)
puts "== Release Notes =="
system! "exe/release-notes generate -t #{current_version.join('.')}"
puts "== Adding Changed Files =="
system! "git add ."
puts "== Committing updated files =="
system! "git commit -m 'Version bump to #{current_version.join('.')}'"
puts "== Tagging release =="
system! "bundle exec rake release"
end