You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.1 KiB
111 lines
3.1 KiB
# encoding: utf-8
|
|
|
|
require 'bundler/gem_tasks'
|
|
|
|
begin
|
|
Bundler.setup(:default, :development)
|
|
rescue Bundler::BundlerError => e
|
|
$stderr.puts e.message
|
|
$stderr.puts "Run `bundle install` to install missing gems"
|
|
exit e.status_code
|
|
end
|
|
require 'rake'
|
|
|
|
require File.expand_path('../lib/algolia/version', __FILE__)
|
|
|
|
require 'rake/testtask'
|
|
Rake::TestTask.new(:test) do |test|
|
|
test.libs << 'lib' << 'test'
|
|
test.pattern = 'test/**/test_*.rb'
|
|
test.verbose = true
|
|
end
|
|
|
|
require 'rdoc/task'
|
|
Rake::RDocTask.new do |rdoc|
|
|
version = Algolia::VERSION
|
|
rdoc.rdoc_dir = 'rdoc'
|
|
rdoc.title = "algoliasearch #{version}"
|
|
rdoc.rdoc_files.include('README*')
|
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
end
|
|
|
|
require 'rspec/core/rake_task'
|
|
RSpec::Core::RakeTask.new(:spec)
|
|
|
|
task :default => :spec
|
|
|
|
namespace :algolia do
|
|
GEM_VERSION_FILE = File.expand_path('../lib/algolia/version.rb', __FILE__)
|
|
GIT_TAG_URL = 'https://github.com/algolia/algoliasearch-client-ruby/releases/tag/'
|
|
|
|
def last_commit_date
|
|
`git log -1 --date=short --format=%cd`.chomp
|
|
end
|
|
|
|
def latest_tag
|
|
`git describe --tags --abbrev=0`.chomp
|
|
end
|
|
|
|
def changelog(git_start = latest_tag(), git_end = 'HEAD', format = '%s')
|
|
`git log --no-decorate --no-merges --pretty=format:#{format} #{git_start}..#{git_end}`
|
|
end
|
|
|
|
desc 'Write latest changes to CHANGELOG.md'
|
|
task :changelog, [:version] do |t, args|
|
|
# Filters-out commits containing some keywords and adds header
|
|
exceptions_regexp = Regexp.union(['README'])
|
|
title = "## [%s](%s%s) (%s)\n\n" % [args[:version], GIT_TAG_URL, args[:version], last_commit_date]
|
|
changes = changelog.each_line
|
|
.map { |line| (exceptions_regexp === line) ? nil : "* #{line.capitalize}" }
|
|
.unshift(title)
|
|
.append("\n\n")
|
|
.join
|
|
|
|
puts changes
|
|
puts "\n\e[31mDo you want to update the CHANGELOG.md with the text above? [y/N]\e[0m"
|
|
exit if STDIN.gets.chomp.downcase != 'y'
|
|
|
|
# Rewrite CHANGELOG.md
|
|
old_changes = File.readlines('CHANGELOG.md', 'r').join
|
|
File.open('CHANGELOG.md', 'w') { |file| file.write(changes, old_changes) }
|
|
|
|
puts 'CHANGELOG.md successfully updated'
|
|
end
|
|
|
|
desc 'Bump gem version'
|
|
task :semver, [:version] do |t, args|
|
|
|
|
File.open(GEM_VERSION_FILE, 'w') do |file|
|
|
file.write <<~SEMVER
|
|
module Algolia
|
|
VERSION = "#{args[:version]}"
|
|
end
|
|
SEMVER
|
|
end
|
|
|
|
# This force to reload the file with the newest version.
|
|
# Hence, `gemspec.version` invoked by Bundler later on will be correct.
|
|
load GEM_VERSION_FILE
|
|
|
|
puts "Bumped gem version from #{latest_tag} to #{args[:version]}"
|
|
end
|
|
|
|
desc 'Release a new version of this gem'
|
|
task :release, [:version] => [:changelog, :semver] do |t, args|
|
|
`git add #{File.expand_path('../lib/algolia/version.rb', __FILE__)} CHANGELOG.md`
|
|
`git commit -m "Bump to version #{args[:version]}"`
|
|
|
|
# Invoke Bundler :release task
|
|
# https://github.com/bundler/bundler/blob/master/lib/bundler/gem_helper.rb
|
|
#
|
|
Rake::Task[:release].invoke
|
|
end
|
|
end
|
|
|
|
module Bundler
|
|
class GemHelper
|
|
def version_tag
|
|
"#{version}"
|
|
end
|
|
end
|
|
end
|
|
|