mirror of
https://github.com/inspec/inspec
synced 2024-11-10 07:04:15 +00:00
add rake tasks for showing and bumping the version of inspec
This commit is contained in:
parent
185c46ad41
commit
f738bcb57b
1 changed files with 72 additions and 1 deletions
73
Rakefile
73
Rakefile
|
@ -52,10 +52,81 @@ end
|
|||
# the necessary gem is installed.
|
||||
begin
|
||||
require 'github_changelog_generator/task'
|
||||
require_relative 'lib/inspec/version'
|
||||
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
||||
require_relative 'lib/inspec/version'
|
||||
config.since_tag = '0.7.0'
|
||||
config.future_release = Inspec::VERSION
|
||||
end
|
||||
rescue LoadError
|
||||
end
|
||||
|
||||
# Print the current version of this gem or update it.
|
||||
#
|
||||
# @param [Type] target the new version you want to set, or nil if you only want to show
|
||||
def inspec_version(target = nil)
|
||||
path = 'lib/inspec/version.rb'
|
||||
require_relative path.sub(/.rb$/, '')
|
||||
|
||||
nu_version = target.nil? ? '' : " -> #{target}"
|
||||
puts "Inspec: #{Inspec::VERSION}#{nu_version}"
|
||||
|
||||
unless target.nil?
|
||||
raw = File.read(path)
|
||||
nu = raw.sub(/VERSION.*/, "VERSION = '#{target}'")
|
||||
File.write(path, nu)
|
||||
load(path)
|
||||
end
|
||||
end
|
||||
|
||||
# Check if a command is available
|
||||
#
|
||||
# @param [Type] x the command you are interested in
|
||||
# @param [Type] msg the message to display if the command is missing
|
||||
def require_command(x, msg = nil)
|
||||
return if system("command -v #{x} || exit 1")
|
||||
msg ||= 'Please install it first!'
|
||||
puts "\033[31;1mCan't find command #{x.inspect}. #{msg}\033[0m"
|
||||
exit 1
|
||||
end
|
||||
|
||||
# Check if a required environment variable has been set
|
||||
#
|
||||
# @param [String] x the variable you are interested in
|
||||
# @param [String] msg the message you want to display if the variable is missing
|
||||
def require_env(x, msg = nil)
|
||||
exists = `env | grep "^#{x}="`
|
||||
return unless exists.empty?
|
||||
puts "\033[31;1mCan't find environment variable #{x.inspect}. #{msg}\033[0m"
|
||||
exit 1
|
||||
end
|
||||
|
||||
# Check the requirements for running an update of this repository.
|
||||
def check_update_requirements
|
||||
require_command 'git'
|
||||
require_command 'github_changelog_generator', "\n"\
|
||||
"For more information on how to install it see:\n"\
|
||||
" https://github.com/skywinder/github-changelog-generator\n"
|
||||
require_env 'CHANGELOG_GITHUB_TOKEN', "\n"\
|
||||
"Please configure this token to make sure you can run all commands\n"\
|
||||
"against GitHub.\n\n"\
|
||||
"See github_changelog_generator homepage for more information:\n"\
|
||||
" https://github.com/skywinder/github-changelog-generator\n"
|
||||
end
|
||||
|
||||
# Show the current version of this gem.
|
||||
desc 'Show the version of this gem'
|
||||
task :version do
|
||||
inspec_version
|
||||
end
|
||||
|
||||
# Update the version of this gem and create an updated
|
||||
# changelog. It covers everything short of actually releasing
|
||||
# the gem.
|
||||
desc 'Bump the version of this gem'
|
||||
task :bump_version, [:version] do |_, args|
|
||||
v = args[:version] || ENV['to']
|
||||
fail "You must specify a target version! rake release[1.2.3]" if v.empty?
|
||||
check_update_requirements
|
||||
inspec_version(v)
|
||||
Rake::Task['changelog'].invoke
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue