Merge branch 'release/1.11.0' into develop

This commit is contained in:
Petr Korolev 2016-02-23 12:26:50 +02:00
commit 70035737cf
11 changed files with 71 additions and 71 deletions

View File

@ -1,7 +1,7 @@
PATH PATH
remote: . remote: .
specs: specs:
github_changelog_generator (1.10.1) github_changelog_generator (1.11.0)
colorize (~> 0.7) colorize (~> 0.7)
github_api (~> 0.12) github_api (~> 0.12)

View File

@ -28,7 +28,7 @@ module GitHubChangelogGenerator
def run def run
log = @generator.compound_changelog log = @generator.compound_changelog
output_filename = "#{@options[:output]}" output_filename = (@options[:output]).to_s
File.open(output_filename, "w") { |file| file.write(log) } File.open(output_filename, "w") { |file| file.write(log) }
puts "Done!" puts "Done!"
puts "Generated log placed in #{Dir.pwd}/#{output_filename}" puts "Generated log placed in #{Dir.pwd}/#{output_filename}"

View File

@ -7,11 +7,11 @@ module GitHubChangelogGenerator
class Fetcher class Fetcher
PER_PAGE_NUMBER = 30 PER_PAGE_NUMBER = 30
CHANGELOG_GITHUB_TOKEN = "CHANGELOG_GITHUB_TOKEN" CHANGELOG_GITHUB_TOKEN = "CHANGELOG_GITHUB_TOKEN".freeze
GH_RATE_LIMIT_EXCEEDED_MSG = "Warning: Can't finish operation: GitHub API rate limit exceeded, change log may be " \ GH_RATE_LIMIT_EXCEEDED_MSG = "Warning: Can't finish operation: GitHub API rate limit exceeded, change log may be " \
"missing some issues. You can limit the number of issues fetched using the `--max-issues NUM` argument." "missing some issues. You can limit the number of issues fetched using the `--max-issues NUM` argument.".freeze
NO_TOKEN_PROVIDED = "Warning: No token provided (-t option) and variable $CHANGELOG_GITHUB_TOKEN was not found. " \ NO_TOKEN_PROVIDED = "Warning: No token provided (-t option) and variable $CHANGELOG_GITHUB_TOKEN was not found. " \
"This script can make only 50 requests to GitHub API per hour without token!" "This script can make only 50 requests to GitHub API per hour without token!".freeze
def initialize(options = {}) def initialize(options = {})
@options = options || {} @options = options || {}
@ -123,12 +123,12 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow
def fetch_closed_pull_requests def fetch_closed_pull_requests
pull_requests = [] pull_requests = []
begin begin
if @options[:release_branch].nil? response = if @options[:release_branch].nil?
response = @github.pull_requests.list @options[:user], @github.pull_requests.list @options[:user],
@options[:project], @options[:project],
state: "closed" state: "closed"
else else
response = @github.pull_requests.list @options[:user], @github.pull_requests.list @options[:user],
@options[:project], @options[:project],
state: "closed", state: "closed",
base: @options[:release_branch] base: @options[:release_branch]

View File

@ -12,10 +12,10 @@ module GitHubChangelogGenerator
log += @options[:frontmatter] if @options[:frontmatter] log += @options[:frontmatter] if @options[:frontmatter]
log += "#{@options[:header]}\n\n" log += "#{@options[:header]}\n\n"
if @options[:unreleased_only] log += if @options[:unreleased_only]
log += generate_log_between_tags(filtered_tags[0], nil) generate_log_between_tags(filtered_tags[0], nil)
else else
log += generate_log_for_all_tags generate_log_for_all_tags
end end
log += File.read(@options[:base]) if File.file?(@options[:base]) log += File.read(@options[:base]) if File.file?(@options[:base])
@ -39,10 +39,10 @@ module GitHubChangelogGenerator
index2 = hash[tag2] index2 = hash[tag2]
log += generate_log_between_tags(all_tags[index1], all_tags[index2]) log += generate_log_between_tags(all_tags[index1], all_tags[index2])
else else
fail ChangelogGeneratorError, "Can't find tag #{tag2} -> exit".red raise ChangelogGeneratorError, "Can't find tag #{tag2} -> exit".red
end end
else else
fail ChangelogGeneratorError, "Can't find tag #{tag1} -> exit".red raise ChangelogGeneratorError, "Can't find tag #{tag1} -> exit".red
end end
log log
end end
@ -79,15 +79,15 @@ module GitHubChangelogGenerator
time_string = newer_tag_time.strftime @options[:date_format] time_string = newer_tag_time.strftime @options[:date_format]
# Generate tag name and link # Generate tag name and link
if @options[:release_url] release_url = if @options[:release_url]
release_url = format(@options[:release_url], newer_tag_link) format(@options[:release_url], newer_tag_link)
else else
release_url = "#{project_url}/tree/#{newer_tag_link}" "#{project_url}/tree/#{newer_tag_link}"
end end
if newer_tag_name.equal? @options[:unreleased_label] log += if newer_tag_name.equal? @options[:unreleased_label]
log += "## [#{newer_tag_name}](#{release_url})\n\n" "## [#{newer_tag_name}](#{release_url})\n\n"
else else
log += "## [#{newer_tag_name}](#{release_url}) (#{time_string})\n" "## [#{newer_tag_name}](#{release_url}) (#{time_string})\n"
end end
if @options[:compare_link] && older_tag_link if @options[:compare_link] && older_tag_link
@ -171,10 +171,10 @@ module GitHubChangelogGenerator
unless issue.pull_request.nil? unless issue.pull_request.nil?
if @options[:author] if @options[:author]
if issue.user.nil? title_with_number += if issue.user.nil?
title_with_number += " ({Null user})" " ({Null user})"
else else
title_with_number += " ([#{issue.user.login}](#{issue.user.html_url}))" " ([#{issue.user.login}](#{issue.user.html_url}))"
end end
end end
end end

View File

@ -7,7 +7,7 @@ module GitHubChangelogGenerator
unless @options[:exclude_labels].nil? unless @options[:exclude_labels].nil?
issues = issues.select do |issue| issues = issues.select do |issue|
var = issue.labels.map(&:name) & @options[:exclude_labels] var = issue.labels.map(&:name) & @options[:exclude_labels]
!(var).any? !var.any?
end end
end end
issues issues
@ -83,7 +83,7 @@ module GitHubChangelogGenerator
tag_in_range_new = tag_older_new_tag?(newer_tag_time, time) tag_in_range_new = tag_older_new_tag?(newer_tag_time, time)
tag_in_range = (tag_in_range_old) && (tag_in_range_new) tag_in_range = tag_in_range_old && tag_in_range_new
tag_in_range tag_in_range
else else
@ -93,19 +93,19 @@ module GitHubChangelogGenerator
end end
def tag_older_new_tag?(newer_tag_time, time) def tag_older_new_tag?(newer_tag_time, time)
if newer_tag_time.nil? tag_in_range_new = if newer_tag_time.nil?
tag_in_range_new = true true
else else
tag_in_range_new = time <= newer_tag_time time <= newer_tag_time
end end
tag_in_range_new tag_in_range_new
end end
def tag_newer_old_tag?(older_tag_time, t) def tag_newer_old_tag?(older_tag_time, t)
if older_tag_time.nil? tag_in_range_old = if older_tag_time.nil?
tag_in_range_old = true true
else else
tag_in_range_old = t > older_tag_time t > older_tag_time
end end
tag_in_range_old tag_in_range_old
end end
@ -133,7 +133,7 @@ module GitHubChangelogGenerator
def filter_by_include_labels(issues) def filter_by_include_labels(issues)
filtered_issues = @options[:include_labels].nil? ? issues : issues.select do |issue| filtered_issues = @options[:include_labels].nil? ? issues : issues.select do |issue|
labels = issue.labels.map(&:name) & @options[:include_labels] labels = issue.labels.map(&:name) & @options[:include_labels]
(labels).any? labels.any?
end end
filtered_issues filtered_issues
end end

View File

@ -19,7 +19,7 @@ module GitHubChangelogGenerator
# @param [Hash] tag_name name of the tag # @param [Hash] tag_name name of the tag
# @return [Time] time of specified tag # @return [Time] time of specified tag
def get_time_of_tag(tag_name) def get_time_of_tag(tag_name)
fail ChangelogGeneratorError, "tag_name is nil".red if tag_name.nil? raise ChangelogGeneratorError, "tag_name is nil".red if tag_name.nil?
name_of_tag = tag_name["name"] name_of_tag = tag_name["name"]
time_for_name = @tag_times_hash[name_of_tag] time_for_name = @tag_times_hash[name_of_tag]
@ -80,10 +80,10 @@ module GitHubChangelogGenerator
if tag if tag
if all_tags.map(&:name).include? tag if all_tags.map(&:name).include? tag
idx = all_tags.index { |t| t.name == tag } idx = all_tags.index { |t| t.name == tag }
if idx > 0 filtered_tags = if idx > 0
filtered_tags = all_tags[0..idx - 1] all_tags[0..idx - 1]
else else
filtered_tags = [] []
end end
else else
Helper.log.warn "Warning: can't find tag #{tag}, specified with --since-tag option." Helper.log.warn "Warning: can't find tag #{tag}, specified with --since-tag option."
@ -101,10 +101,10 @@ module GitHubChangelogGenerator
if (all_tags.count > 0) && (all_tags.map(&:name).include? tag) if (all_tags.count > 0) && (all_tags.map(&:name).include? tag)
idx = all_tags.index { |t| t.name == tag } idx = all_tags.index { |t| t.name == tag }
last_index = all_tags.count - 1 last_index = all_tags.count - 1
if idx > 0 && idx < last_index filtered_tags = if idx > 0 && idx < last_index
filtered_tags = all_tags[idx + 1..last_index] all_tags[idx + 1..last_index]
else else
filtered_tags = [] []
end end
else else
Helper.log.warn "Warning: can't find tag #{tag}, specified with --due-tag option." Helper.log.warn "Warning: can't find tag #{tag}, specified with --due-tag option."

View File

@ -3,13 +3,13 @@ module GitHubChangelogGenerator
module Helper module Helper
# @return true if the currently running program is a unit test # @return true if the currently running program is a unit test
def self.test? def self.test?
defined?SpecHelper defined? SpecHelper
end end
if test? @log ||= if test?
@log ||= Logger.new(nil) # don't show any logs when running tests Logger.new(nil) # don't show any logs when running tests
else else
@log ||= Logger.new(STDOUT) Logger.new(STDOUT)
end end
@log.formatter = proc do |severity, _datetime, _progname, msg| @log.formatter = proc do |severity, _datetime, _progname, msg|
string = "#{msg}\n" string = "#{msg}\n"

View File

@ -20,8 +20,8 @@ module GitHubChangelogGenerator
def parse_line!(line) def parse_line!(line)
key_sym, value = extract_pair(line) key_sym, value = extract_pair(line)
value = true if value =~ (/^(true|t|yes|y|1)$/i) value = true if value =~ /^(true|t|yes|y|1)$/i
value = false if value =~ (/^(false|f|no|n|0)$/i) value = false if value =~ /^(false|f|no|n|0)$/i
@options[key_sym] = value @options[key_sym] = value
rescue rescue
raise ParserError, "Config file #{file} is incorrect in line \"#{line.gsub(/[\n\r]+/, '')}\"" raise ParserError, "Config file #{file} is incorrect in line \"#{line.gsub(/[\n\r]+/, '')}\""

View File

@ -17,7 +17,7 @@ module GitHubChangelogGenerator
between_tags exclude_tags since_tag max_issues between_tags exclude_tags since_tag max_issues
github_site github_endpoint simple_list github_site github_endpoint simple_list
future_release release_branch verbose release_url future_release release_branch verbose release_url
base ) base ).freeze
OPTIONS.each do |o| OPTIONS.each do |o|
attr_accessor o.to_sym attr_accessor o.to_sym
@ -37,7 +37,7 @@ module GitHubChangelogGenerator
def define(args, &task_block) def define(args, &task_block)
desc "Generate a Change log from GitHub" desc "Generate a Change log from GitHub"
task_block.call(*[self, args].slice(0, task_block.arity)) if task_block yield(*[self, args].slice(0, task_block.arity)) if task_block
# clear any (auto-)pre-existing task # clear any (auto-)pre-existing task
Rake::Task[@name].clear if Rake::Task.task_defined?(@name) Rake::Task[@name].clear if Rake::Task.task_defined?(@name)
@ -57,7 +57,7 @@ module GitHubChangelogGenerator
log = generator.compound_changelog log = generator.compound_changelog
output_filename = "#{options[:output]}" output_filename = (options[:output]).to_s
File.open(output_filename, "w") { |file| file.write(log) } File.open(output_filename, "w") { |file| file.write(log) }
puts "Done!" puts "Done!"
puts "Generated log placed in #{Dir.pwd}/#{output_filename}" puts "Generated log placed in #{Dir.pwd}/#{output_filename}"

View File

@ -1,3 +1,3 @@
module GitHubChangelogGenerator module GitHubChangelogGenerator
VERSION = "1.10.1" VERSION = "1.11.0".freeze
end end

View File

@ -1,8 +1,8 @@
VALID_TOKEN = "0123456789abcdef" VALID_TOKEN = "0123456789abcdef".freeze
INVALID_TOKEN = "0000000000000000" INVALID_TOKEN = "0000000000000000".freeze
DEFAULT_OPTIONS = { user: "skywinder", DEFAULT_OPTIONS = { user: "skywinder",
project: "changelog_test" } project: "changelog_test" }.freeze
def options_with_invalid_token def options_with_invalid_token
options = DEFAULT_OPTIONS options = DEFAULT_OPTIONS