From c3867a89f180154f5fa9e5395d72bf1a8597a385 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Wed, 10 Jun 2015 10:14:55 +0300 Subject: [PATCH 01/12] update test, between tags. --- .../generator/generator_tags.rb | 2 +- spec/unit/generator/generator_tags_spec.rb | 31 +++++++++++++------ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/github_changelog_generator/generator/generator_tags.rb b/lib/github_changelog_generator/generator/generator_tags.rb index 6e4cc7d..4032a3d 100644 --- a/lib/github_changelog_generator/generator/generator_tags.rb +++ b/lib/github_changelog_generator/generator/generator_tags.rb @@ -49,7 +49,7 @@ module GitHubChangelogGenerator puts "Warning: can't find tag #{tag}, specified with --between-tags option.".yellow end end - filtered_tags = all_tags.select { |tag| @options[:between_tags].include? tag } + filtered_tags = all_tags.select { |tag| @options[:between_tags].include? tag.name } end filtered_tags end diff --git a/spec/unit/generator/generator_tags_spec.rb b/spec/unit/generator/generator_tags_spec.rb index f3ffca7..6c4d40e 100644 --- a/spec/unit/generator/generator_tags_spec.rb +++ b/spec/unit/generator/generator_tags_spec.rb @@ -6,20 +6,20 @@ describe GitHubChangelogGenerator::Generator do end subject do - @generator.get_filtered_tags(%w(1 2 3)) + @generator.get_filtered_tags(tags_mash_from_strings(%w(1 2 3))) end it { is_expected.to be_a(Array) } - it { is_expected.to match_array(%w(1 2 3)) } + it { is_expected.to match_array(tags_mash_from_strings(%w(1 2 3))) } end context "when between_tags same as input array" do before do @generator = GitHubChangelogGenerator::Generator.new(between_tags: %w(1 2 3)) end subject do - @generator.get_filtered_tags(%w(1 2 3)) + @generator.get_filtered_tags(tags_mash_from_strings(%w(1 2 3))) end it { is_expected.to be_a(Array) } - it { is_expected.to match_array(%w(1 2 3)) } + it { is_expected.to match_array(tags_mash_from_strings(%w(1 2 3))) } end context "when between_tags filled with correct values" do @@ -27,10 +27,10 @@ describe GitHubChangelogGenerator::Generator do @generator = GitHubChangelogGenerator::Generator.new(between_tags: %w(1 2)) end subject do - @generator.get_filtered_tags(%w(1 2 3)) + @generator.get_filtered_tags(tags_mash_from_strings(%w(1 2 3))) end it { is_expected.to be_a(Array) } - it { is_expected.to match_array(%w(1 2)) } + it { is_expected.to match_array(tags_mash_from_strings(%w(1 2))) } end context "when between_tags filled with invalid values" do @@ -39,15 +39,28 @@ describe GitHubChangelogGenerator::Generator do end subject do - @generator.get_filtered_tags(%w(1 2 3)) + @generator.get_filtered_tags(tags_mash_from_strings(%w(1 2 3))) end it { is_expected.to be_a(Array) } - it { is_expected.to match_array(%w(1)) } + it { is_expected.to match_array(tags_mash_from_strings(%w(1))) } end end + def tags_mash_from_strings(tags_strings) + mash_array = [] + tags_strings.each do |tag| + mash_tag = Hashie::Mash.new + mash_tag.name = tag + mash_array << mash_tag + end + mash_array + end + describe "#get_filtered_tags" do - subject { generator.get_filtered_tags(%w(1 2 3 4 5)) } + subject do + tags_mash = tags_mash_from_strings(%w(1 2 3 4 5)) + generator.get_filtered_tags(tags_mash) + end # before { generator.get_filtered_tags(%w(1 2 3 4 5)) } context "with excluded and between tags" do From 9b46d56a9ee673365066bd3b15b954e20acdbc92 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Wed, 10 Jun 2015 13:23:46 +0300 Subject: [PATCH 02/12] fix #245 --- .../generator/generator_tags.rb | 10 +++++----- spec/unit/generator/generator_tags_spec.rb | 10 ++++------ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/github_changelog_generator/generator/generator_tags.rb b/lib/github_changelog_generator/generator/generator_tags.rb index 4032a3d..6873c10 100644 --- a/lib/github_changelog_generator/generator/generator_tags.rb +++ b/lib/github_changelog_generator/generator/generator_tags.rb @@ -45,8 +45,8 @@ module GitHubChangelogGenerator filtered_tags = all_tags if @options[:between_tags] @options[:between_tags].each do |tag| - unless all_tags.include? tag - puts "Warning: can't find tag #{tag}, specified with --between-tags option.".yellow + unless all_tags.map(&:name).include? tag + Helper.log.warn "Warning: can't find tag #{tag}, specified with --between-tags option." end end filtered_tags = all_tags.select { |tag| @options[:between_tags].include? tag.name } @@ -58,11 +58,11 @@ module GitHubChangelogGenerator filtered_tags = all_tags if @options[:exclude_tags] @options[:exclude_tags].each do |tag| - unless all_tags.include? tag - puts "Warning: can't find tag #{tag}, specified with --between-tags option.".yellow + unless all_tags.map(&:name).include? tag + Helper.log.warn "Warning: can't find tag #{tag}, specified with --exclude-tags option." end end - filtered_tags = all_tags.reject { |tag| @options[:exclude_tags].include? tag } + filtered_tags = all_tags.reject { |tag| @options[:exclude_tags].include? tag.name } end filtered_tags end diff --git a/spec/unit/generator/generator_tags_spec.rb b/spec/unit/generator/generator_tags_spec.rb index 6c4d40e..bc28290 100644 --- a/spec/unit/generator/generator_tags_spec.rb +++ b/spec/unit/generator/generator_tags_spec.rb @@ -58,25 +58,23 @@ describe GitHubChangelogGenerator::Generator do describe "#get_filtered_tags" do subject do - tags_mash = tags_mash_from_strings(%w(1 2 3 4 5)) - generator.get_filtered_tags(tags_mash) + generator.get_filtered_tags(tags_mash_from_strings(%w(1 2 3 4 5))) end - # before { generator.get_filtered_tags(%w(1 2 3 4 5)) } context "with excluded and between tags" do let(:generator) { GitHubChangelogGenerator::Generator.new(between_tags: %w(1 2 3), exclude_tags: %w(2)) } it { is_expected.to be_a Array } - it { is_expected.to match_array(%w(1 3)) } + it { is_expected.to match_array(tags_mash_from_strings(%w(1 3))) } end end describe "#filter_excluded_tags" do - subject { generator.filter_excluded_tags(%w(1 2 3)) } + subject { generator.filter_excluded_tags(tags_mash_from_strings(%w(1 2 3))) } context "with valid excluded tags" do let(:generator) { GitHubChangelogGenerator::Generator.new(exclude_tags: %w(3)) } it { is_expected.to be_a Array } - it { is_expected.to match_array(%w(1 2)) } + it { is_expected.to match_array(tags_mash_from_strings(%w(1 2))) } end end end From ff6115247eb1d4e971ea44c1f2b1133700836a19 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Wed, 10 Jun 2015 13:27:27 +0300 Subject: [PATCH 03/12] Move logging to separate class, disable logging during test execution. --- github_changelog_generator.gemspec | 7 +++-- lib/CHANGELOG.md | 16 ---------- lib/github_changelog_generator.rb | 1 + lib/github_changelog_generator/fetcher.rb | 34 +++++++++------------ lib/github_changelog_generator/helper.rb | 37 +++++++++++++++++++++++ lib/github_changelog_generator/parser.rb | 4 +-- spec/spec_helper.rb | 4 +++ 7 files changed, 62 insertions(+), 41 deletions(-) create mode 100644 lib/github_changelog_generator/helper.rb diff --git a/github_changelog_generator.gemspec b/github_changelog_generator.gemspec index ff4c3cc..6f4c59d 100644 --- a/github_changelog_generator.gemspec +++ b/github_changelog_generator.gemspec @@ -23,9 +23,10 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] - spec.add_development_dependency "bundler", "~> 1.7" - spec.add_development_dependency "rake", "~> 10.0" - spec.add_runtime_dependency("github_api", ["~> 0.12"]) spec.add_runtime_dependency("colorize", ["~> 0.7"]) + + # Development only + spec.add_development_dependency "bundler", "~> 1.7" + spec.add_development_dependency "rake", "~> 10.0" end diff --git a/lib/CHANGELOG.md b/lib/CHANGELOG.md index 3c6e8bd..085d363 100644 --- a/lib/CHANGELOG.md +++ b/lib/CHANGELOG.md @@ -2,8 +2,6 @@ ## [0.0.4](https://github.com/skywinder/changelog_test/tree/0.0.4) (2015-05-22) -[Full Changelog](https://github.com/skywinder/changelog_test/compare/v0.0.3...0.0.4) - **Closed issues:** - Test issue, that should appear in 0.0.4 [\#3](https://github.com/skywinder/changelog_test/issues/3) @@ -12,24 +10,10 @@ - Add automatically generated change log file. [\#5](https://github.com/skywinder/changelog_test/pull/5) ([skywinder](https://github.com/skywinder)) -## [v0.0.3](https://github.com/skywinder/changelog_test/tree/v0.0.3) (2015-03-04) - -[Full Changelog](https://github.com/skywinder/changelog_test/compare/v0.0.2...v0.0.3) - -**Merged pull requests:** - - fix \#3. hotfix. Should appear in v0.0.3 [\#4](https://github.com/skywinder/changelog_test/pull/4) ([skywinder](https://github.com/skywinder)) -## [v0.0.2](https://github.com/skywinder/changelog_test/tree/v0.0.2) (2015-03-04) - -[Full Changelog](https://github.com/skywinder/changelog_test/compare/v0.0.1...v0.0.2) - -**Merged pull requests:** - - Here is a test hotfix should appear in v.0.0.2 [\#2](https://github.com/skywinder/changelog_test/pull/2) ([skywinder](https://github.com/skywinder)) -## [v0.0.1](https://github.com/skywinder/changelog_test/tree/v0.0.1) (2015-03-02) - \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* \ No newline at end of file diff --git a/lib/github_changelog_generator.rb b/lib/github_changelog_generator.rb index c35db79..3b1e60f 100755 --- a/lib/github_changelog_generator.rb +++ b/lib/github_changelog_generator.rb @@ -5,6 +5,7 @@ require "json" require "colorize" require "benchmark" +require_relative "github_changelog_generator/helper" require_relative "github_changelog_generator/parser" require_relative "github_changelog_generator/generator/generator" require_relative "github_changelog_generator/version" diff --git a/lib/github_changelog_generator/fetcher.rb b/lib/github_changelog_generator/fetcher.rb index 5fb3c57..8cb0553 100644 --- a/lib/github_changelog_generator/fetcher.rb +++ b/lib/github_changelog_generator/fetcher.rb @@ -1,4 +1,3 @@ -require "logger" module GitHubChangelogGenerator # A Fetcher responsible for all requests to GitHub and all basic manipulation with related data @@ -6,6 +5,7 @@ module GitHubChangelogGenerator # # Example: # fetcher = GitHubChangelogGenerator::Fetcher.new options + class Fetcher PER_PAGE_NUMBER = 30 CHANGELOG_GITHUB_TOKEN = "CHANGELOG_GITHUB_TOKEN" @@ -16,12 +16,6 @@ module GitHubChangelogGenerator def initialize(options = {}) @options = options || {} - - @logger = Logger.new(STDOUT) - @logger.formatter = proc do |_severity, _datetime, _progname, msg| - "#{msg}\n" - end - @user = @options[:user] @project = @options[:project] @github_token = fetch_github_token @@ -41,7 +35,7 @@ module GitHubChangelogGenerator def fetch_github_token env_var = @options[:token] ? @options[:token] : (ENV.fetch CHANGELOG_GITHUB_TOKEN, nil) - @logger.warn NO_TOKEN_PROVIDED.yellow unless env_var + Helper.log.warn NO_TOKEN_PROVIDED.yellow unless env_var env_var end @@ -62,11 +56,11 @@ module GitHubChangelogGenerator begin value = yield rescue Github::Error::Unauthorized => e - @logger.error e.body.red + Helper.log.error e.body.red abort "Error: wrong GitHub token" rescue Github::Error::Forbidden => e - @logger.warn e.body.red - @logger.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow + Helper.log.warn e.body.red + Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow end value end @@ -83,10 +77,10 @@ module GitHubChangelogGenerator print_empty_line if tags.count == 0 - @logger.warn "Warning: Can't find any tags in repo.\ + Helper.log.warn "Warning: Can't find any tags in repo.\ Make sure, that you push tags to remote repo via 'git push --tags'".yellow else - @logger.info "Found #{tags.count} tags" + Helper.log.info "Found #{tags.count} tags" end end @@ -112,10 +106,10 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow break if @options[:max_issues] && issues.length >= @options[:max_issues] end print_empty_line - @logger.info "Received issues: #{issues.count}" + Helper.log.info "Received issues: #{issues.count}" rescue - @logger.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow + Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow end # separate arrays of issues and pull requests: @@ -140,10 +134,10 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow end print_empty_line rescue - @logger.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow + Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow end - @logger.info "Fetching merged dates: #{pull_requests.count}" + Helper.log.info "Fetching merged dates: #{pull_requests.count}" pull_requests end @@ -170,7 +164,7 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow repo: @options[:project], issue_number: issue["number"] rescue - @logger.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow + Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow end issue[:events] = obj.body print_in_same_line("Fetching events for issues and PR: #{i + 1}/#{issues.count}") @@ -184,7 +178,7 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow # to clear line from prev print print_empty_line - @logger.info "Fetching events for issues and PR: #{i}" + Helper.log.info "Fetching events for issues and PR: #{i}" end # Try to find tag date in local hash. @@ -203,7 +197,7 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow @options[:project], tag_name["commit"]["sha"] rescue - @logger.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow + Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow end time_string = github_git_data_commits_get["committer"]["date"] @tag_times_hash[tag_name["name"]] = Time.parse(time_string) diff --git a/lib/github_changelog_generator/helper.rb b/lib/github_changelog_generator/helper.rb new file mode 100644 index 0000000..7c13407 --- /dev/null +++ b/lib/github_changelog_generator/helper.rb @@ -0,0 +1,37 @@ +require "logger" +module GitHubChangelogGenerator + module Helper + # @return true if the currently running program is a unit test + def self.test? + defined?SpecHelper + end + + if test? + @log ||= Logger.new(nil) # don't show any logs when running tests + else + @log ||= Logger.new(STDOUT) + end + @log.formatter = proc do |severity, _datetime, _progname, msg| + string = "#{msg}\n" + + if severity == "DEBUG" + string = string.magenta + elsif severity == "INFO" + string = string.white + elsif severity == "WARN" + string = string.yellow + elsif severity == "ERROR" + string = string.red + elsif severity == "FATAL" + string = string.red.bold + end + + string + end + + # Logging happens using this method + class << self + attr_reader :log + end + end +end diff --git a/lib/github_changelog_generator/parser.rb b/lib/github_changelog_generator/parser.rb index 683b294..892a5ad 100644 --- a/lib/github_changelog_generator/parser.rb +++ b/lib/github_changelog_generator/parser.rb @@ -2,7 +2,7 @@ require "optparse" require "pp" require_relative "version" - +require_relative "helper" module GitHubChangelogGenerator class Parser # parse options with optparse @@ -21,7 +21,7 @@ module GitHubChangelogGenerator end if options[:verbose] - puts "Performing task with options:" + Helper.log.info "Performing task with options:" pp options puts "" end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index dccfbf0..5c4749d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -19,6 +19,10 @@ require "codeclimate-test-reporter" require "simplecov" require "coveralls" +# This module is only used to check the environment is currently a testing env +module SpecHelper +end + SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[ Coveralls::SimpleCov::Formatter, SimpleCov::Formatter::HTMLFormatter, From 67fbb04b31124adca517ac26c366608a64429761 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Wed, 10 Jun 2015 14:18:15 +0300 Subject: [PATCH 04/12] add documentation --- lib/github_changelog_generator/fetcher.rb | 20 ++++++++++++-------- spec/unit/fetcher_spec.rb | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/github_changelog_generator/fetcher.rb b/lib/github_changelog_generator/fetcher.rb index 8cb0553..c94726d 100644 --- a/lib/github_changelog_generator/fetcher.rb +++ b/lib/github_changelog_generator/fetcher.rb @@ -1,4 +1,3 @@ - module GitHubChangelogGenerator # A Fetcher responsible for all requests to GitHub and all basic manipulation with related data # (such as filtering, validating, e.t.c) @@ -45,13 +44,11 @@ module GitHubChangelogGenerator def get_all_tags print "Fetching tags...\r" if @options[:verbose] - tags = [] - - check_github_response { github_fetch_tags(tags) } - - tags + check_github_response { github_fetch_tags } end + # This is wrapper with rescue block + # @return [Object] returns exactly the same, what you put in the block, but wrap it with begin-rescue block def check_github_response begin value = yield @@ -65,7 +62,10 @@ module GitHubChangelogGenerator value end - def github_fetch_tags(tags) + # Fill input array with tags + # @return [Array] array of tags in repo + def github_fetch_tags + tags = [] response = @github.repos.tags @options[:user], @options[:project] page_i = 0 count_pages = response.count_pages @@ -82,6 +82,7 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow else Helper.log.info "Found #{tags.count} tags" end + tags end # This method fetch all closed issues and separate them to pull requests and pure issues @@ -141,10 +142,13 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow pull_requests end + # Print specified line on the same string + # @param [String] log_string def print_in_same_line(log_string) print log_string + "\r" end + # Print long line with spaces on same line to clear prev message def print_empty_line print_in_same_line(" ") end @@ -203,7 +207,7 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow @tag_times_hash[tag_name["name"]] = Time.parse(time_string) end - # Fetch commit for specifed event + # Fetch commit for specified event # @return [Hash] def fetch_commit(event) @github.git_data.commits.get @options[:user], @options[:project], event[:commit_id] diff --git a/spec/unit/fetcher_spec.rb b/spec/unit/fetcher_spec.rb index 6baf815..bba0c19 100644 --- a/spec/unit/fetcher_spec.rb +++ b/spec/unit/fetcher_spec.rb @@ -52,7 +52,7 @@ describe GitHubChangelogGenerator::Fetcher do @fetcher = GitHubChangelogGenerator::Fetcher.new(options) end it "should raise Unauthorized error" do - expect { @fetcher.github_fetch_tags [] }.to raise_error Github::Error::Unauthorized + expect { @fetcher.github_fetch_tags }.to raise_error Github::Error::Unauthorized end end end From a415010e8606a0e2a9cd0d1e479b0324b5d2b879 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Wed, 10 Jun 2015 14:37:26 +0300 Subject: [PATCH 05/12] change internal logic --- lib/github_changelog_generator/generator/generator.rb | 2 +- .../generator/generator_fetcher.rb | 4 ++-- .../generator/generator_generation.rb | 2 +- .../generator/generator_processor.rb | 4 ++-- .../generator/generator_tags.rb | 8 ++++---- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/github_changelog_generator/generator/generator.rb b/lib/github_changelog_generator/generator/generator.rb index 3ac896d..4f00ec1 100644 --- a/lib/github_changelog_generator/generator/generator.rb +++ b/lib/github_changelog_generator/generator/generator.rb @@ -10,7 +10,7 @@ module GitHubChangelogGenerator end class Generator - attr_accessor :options, :all_tags, :github + attr_accessor :options, :filtered_tags, :github # A Generator responsible for all logic, related with change log generation from ready-to-parse issues # diff --git a/lib/github_changelog_generator/generator/generator_fetcher.rb b/lib/github_changelog_generator/generator/generator_fetcher.rb index 3b15769..1a67db7 100644 --- a/lib/github_changelog_generator/generator/generator_fetcher.rb +++ b/lib/github_changelog_generator/generator/generator_fetcher.rb @@ -17,8 +17,8 @@ module GitHubChangelogGenerator # Async fetching tags: threads = [] i = 0 - all = @all_tags.count - @all_tags.each do |tag| + all = @filtered_tags.count + @filtered_tags.each do |tag| print " \r" threads << Thread.new do @fetcher.get_time_of_tag(tag) diff --git a/lib/github_changelog_generator/generator/generator_generation.rb b/lib/github_changelog_generator/generator/generator_generation.rb index 5571359..75691be 100644 --- a/lib/github_changelog_generator/generator/generator_generation.rb +++ b/lib/github_changelog_generator/generator/generator_generation.rb @@ -131,7 +131,7 @@ module GitHubChangelogGenerator (1...all_tags.size).each do |index| log += generate_log_between_tags(all_tags[index], all_tags[index - 1]) end - if @all_tags.count != 0 + if @filtered_tags.count != 0 log += generate_log_between_tags(nil, all_tags.last) end diff --git a/lib/github_changelog_generator/generator/generator_processor.rb b/lib/github_changelog_generator/generator/generator_processor.rb index f95142c..b56a498 100644 --- a/lib/github_changelog_generator/generator/generator_processor.rb +++ b/lib/github_changelog_generator/generator/generator_processor.rb @@ -36,7 +36,7 @@ module GitHubChangelogGenerator false else # check, that this milestone in tag list: - milestone_is_tag = @all_tags.find do |tag| + milestone_is_tag = @filtered_tags.find do |tag| tag.name == issue.milestone.title end @@ -57,7 +57,7 @@ module GitHubChangelogGenerator true else # check, that this milestone in tag list: - @all_tags.find { |tag| tag.name == issue.milestone.title }.nil? + @filtered_tags.find { |tag| tag.name == issue.milestone.title }.nil? end end end diff --git a/lib/github_changelog_generator/generator/generator_tags.rb b/lib/github_changelog_generator/generator/generator_tags.rb index 6873c10..adbd504 100644 --- a/lib/github_changelog_generator/generator/generator_tags.rb +++ b/lib/github_changelog_generator/generator/generator_tags.rb @@ -2,15 +2,15 @@ module GitHubChangelogGenerator class Generator # fetch, filter tags, fetch dates and sort them in time order def fetch_and_filter_tags - @all_tags = get_filtered_tags(@fetcher.get_all_tags) + @filtered_tags = get_filtered_tags(@fetcher.get_all_tags) fetch_tags_dates - sort_tags_by_date + sort_tags_by_date(@filtered_tags) end # Sort all tags by date - def sort_tags_by_date + def sort_tags_by_date(tags) puts "Sorting tags..." if @options[:verbose] - @all_tags.sort_by! { |x| @fetcher.get_time_of_tag(x) }.reverse! + tags.sort_by! { |x| @fetcher.get_time_of_tag(x) }.reverse! end # Detect link, name and time for specified tag. From 8906fe502287f0ab6a11a959beebba219fed62a6 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Wed, 10 Jun 2015 16:49:06 +0300 Subject: [PATCH 06/12] refactoring --- lib/github_changelog_generator/fetcher.rb | 25 +++++++------------ .../generator/generator.rb | 4 +-- .../generator/generator_fetcher.rb | 2 +- .../generator/generator_generation.rb | 8 +++--- .../generator/generator_processor.rb | 4 +-- .../generator/generator_tags.rb | 22 ++++++++++++++-- 6 files changed, 38 insertions(+), 27 deletions(-) diff --git a/lib/github_changelog_generator/fetcher.rb b/lib/github_changelog_generator/fetcher.rb index c94726d..d18273f 100644 --- a/lib/github_changelog_generator/fetcher.rb +++ b/lib/github_changelog_generator/fetcher.rb @@ -18,7 +18,6 @@ module GitHubChangelogGenerator @user = @options[:user] @project = @options[:project] @github_token = fetch_github_token - @tag_times_hash = {} github_options = { per_page: PER_PAGE_NUMBER } github_options[:oauth_token] = @github_token unless @github_token.nil? github_options[:endpoint] = @options[:github_endpoint] unless @options[:github_endpoint].nil? @@ -185,26 +184,20 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow Helper.log.info "Fetching events for issues and PR: #{i}" end - # Try to find tag date in local hash. - # Otherwise fFetch tag time and put it to local hash file. - # @param [String] tag_name name of the tag + # Fetch tag time from repo + # + # @param [Hash] tag # @return [Time] time of specified tag - def get_time_of_tag(tag_name) - fail ChangelogGeneratorError, "tag_name is nil".red if tag_name.nil? - - if @tag_times_hash[tag_name["name"]] - return @tag_times_hash[tag_name["name"]] - end - + def fetch_date_of_tag(tag) begin - github_git_data_commits_get = @github.git_data.commits.get @options[:user], - @options[:project], - tag_name["commit"]["sha"] + commit_data = @github.git_data.commits.get @options[:user], + @options[:project], + tag["commit"]["sha"] rescue Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow end - time_string = github_git_data_commits_get["committer"]["date"] - @tag_times_hash[tag_name["name"]] = Time.parse(time_string) + time_string = commit_data["committer"]["date"] + Time.parse(time_string) end # Fetch commit for specified event diff --git a/lib/github_changelog_generator/generator/generator.rb b/lib/github_changelog_generator/generator/generator.rb index 4f00ec1..442891f 100644 --- a/lib/github_changelog_generator/generator/generator.rb +++ b/lib/github_changelog_generator/generator/generator.rb @@ -1,4 +1,4 @@ -require "github_changelog_generator/fetcher" +require_relative "../fetcher" require_relative "generator_generation" require_relative "generator_fetcher" require_relative "generator_processor" @@ -19,7 +19,7 @@ module GitHubChangelogGenerator # content = generator.compound_changelog def initialize(options = nil) @options = options || {} - + @tag_times_hash = {} @fetcher = GitHubChangelogGenerator::Fetcher.new @options end diff --git a/lib/github_changelog_generator/generator/generator_fetcher.rb b/lib/github_changelog_generator/generator/generator_fetcher.rb index 1a67db7..16c5e5c 100644 --- a/lib/github_changelog_generator/generator/generator_fetcher.rb +++ b/lib/github_changelog_generator/generator/generator_fetcher.rb @@ -21,7 +21,7 @@ module GitHubChangelogGenerator @filtered_tags.each do |tag| print " \r" threads << Thread.new do - @fetcher.get_time_of_tag(tag) + get_time_of_tag(tag) print "Fetching tags dates: #{i + 1}/#{all}\r" if @options[:verbose] i += 1 end diff --git a/lib/github_changelog_generator/generator/generator_generation.rb b/lib/github_changelog_generator/generator/generator_generation.rb index 75691be..5002f89 100644 --- a/lib/github_changelog_generator/generator/generator_generation.rb +++ b/lib/github_changelog_generator/generator/generator_generation.rb @@ -24,7 +24,7 @@ module GitHubChangelogGenerator tag1 = @options[:tag1] tag2 = @options[:tag2] tags_strings = [] - all_tags.each { |x| tags_strings.push(x["name"]) } + filtered_tags.each { |x| tags_strings.push(x["name"]) } if tags_strings.include?(tag1) if tags_strings.include?(tag2) @@ -128,11 +128,11 @@ module GitHubChangelogGenerator log = generate_unreleased_section - (1...all_tags.size).each do |index| + (1...filtered_tags.size).each do |index| log += generate_log_between_tags(all_tags[index], all_tags[index - 1]) end if @filtered_tags.count != 0 - log += generate_log_between_tags(nil, all_tags.last) + log += generate_log_between_tags(nil, filtered_tags.last) end log @@ -141,7 +141,7 @@ module GitHubChangelogGenerator def generate_unreleased_section log = "" if @options[:unreleased] - unreleased_log = generate_log_between_tags(all_tags[0], nil) + unreleased_log = generate_log_between_tags(filtered_tags[0], nil) log += unreleased_log if unreleased_log end log diff --git a/lib/github_changelog_generator/generator/generator_processor.rb b/lib/github_changelog_generator/generator/generator_processor.rb index b56a498..d162cbc 100644 --- a/lib/github_changelog_generator/generator/generator_processor.rb +++ b/lib/github_changelog_generator/generator/generator_processor.rb @@ -72,8 +72,8 @@ module GitHubChangelogGenerator # in case if not tags specified - return unchanged array return array if older_tag.nil? && newer_tag.nil? - newer_tag_time = newer_tag && @fetcher.get_time_of_tag(newer_tag) - older_tag_time = older_tag && @fetcher.get_time_of_tag(older_tag) + newer_tag_time = newer_tag && get_time_of_tag(newer_tag) + older_tag_time = older_tag && get_time_of_tag(older_tag) array.select do |req| if req[hash_key] diff --git a/lib/github_changelog_generator/generator/generator_tags.rb b/lib/github_changelog_generator/generator/generator_tags.rb index adbd504..44601a2 100644 --- a/lib/github_changelog_generator/generator/generator_tags.rb +++ b/lib/github_changelog_generator/generator/generator_tags.rb @@ -10,7 +10,25 @@ module GitHubChangelogGenerator # Sort all tags by date def sort_tags_by_date(tags) puts "Sorting tags..." if @options[:verbose] - tags.sort_by! { |x| @fetcher.get_time_of_tag(x) }.reverse! + tags.sort_by! do |x| + get_time_of_tag(x) + end.reverse! + end + + # Try to find tag date in local hash. + # Otherwise fFetch tag time and put it to local hash file. + # @param [Hash] tag_name name of the tag + # @return [Time] time of specified tag + def get_time_of_tag(tag_name) + fail ChangelogGeneratorError, "tag_name is nil".red if tag_name.nil? + + if @tag_times_hash[tag_name["name"]] + @tag_times_hash[tag_name["name"]] + else + time_string = @fetcher.fetch_date_of_tag tag_name + @tag_times_hash[tag_name["name"]] = time_string + time_string + end end # Detect link, name and time for specified tag. @@ -19,7 +37,7 @@ module GitHubChangelogGenerator # @return [Array] link, name and time of the tag def detect_link_tag_time(newer_tag) # if tag is nil - set current time - newer_tag_time = newer_tag.nil? ? Time.new : @fetcher.get_time_of_tag(newer_tag) + newer_tag_time = newer_tag.nil? ? Time.new : get_time_of_tag(newer_tag) # if it's future release tag - set this value if newer_tag.nil? && @options[:future_release] From 9f1537ab3424fd80730428036d953f347f34b152 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Thu, 11 Jun 2015 13:09:04 +0300 Subject: [PATCH 07/12] add test case --- spec/unit/generator/generator_tags_spec.rb | 14 ++++++++++++++ spec/unit/parser_spec.rb | 8 ++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/spec/unit/generator/generator_tags_spec.rb b/spec/unit/generator/generator_tags_spec.rb index bc28290..870c8a9 100644 --- a/spec/unit/generator/generator_tags_spec.rb +++ b/spec/unit/generator/generator_tags_spec.rb @@ -77,4 +77,18 @@ describe GitHubChangelogGenerator::Generator do it { is_expected.to match_array(tags_mash_from_strings(%w(1 2))) } end end + + describe "#get_time_of_tag" do + before(:all) do + @generator = GitHubChangelogGenerator::Generator.new + puts "blah" + end + it "should raise ChangelogGeneratorError" do + expect { @generator.get_time_of_tag nil }.to raise_error(GitHubChangelogGenerator::ChangelogGeneratorError) + end + end + + describe "#sort_tags_by_date" do + subject { generator.sort_tags_by_date } + end end diff --git a/spec/unit/parser_spec.rb b/spec/unit/parser_spec.rb index 6bc9d8a..6b12461 100644 --- a/spec/unit/parser_spec.rb +++ b/spec/unit/parser_spec.rb @@ -1,21 +1,21 @@ describe GitHubChangelogGenerator::Parser do describe ".user_project_from_remote" do - context "when remote is 1" do + context "when remote is type 1" do subject { GitHubChangelogGenerator::Parser.user_project_from_remote("origin https://github.com/skywinder/ActionSheetPicker-3.0 (fetch)") } it { is_expected.to be_a(Array) } it { is_expected.to match_array(["skywinder", "ActionSheetPicker-3.0"]) } end - context "when remote is 2" do + context "when remote is type 2" do subject { GitHubChangelogGenerator::Parser.user_project_from_remote("https://github.com/skywinder/ActionSheetPicker-3.0") } it { is_expected.to be_a(Array) } it { is_expected.to match_array(["skywinder", "ActionSheetPicker-3.0"]) } end - context "when remote is 3" do + context "when remote is type 3" do subject { GitHubChangelogGenerator::Parser.user_project_from_remote("https://github.com/skywinder/ActionSheetPicker-3.0") } it { is_expected.to be_a(Array) } it { is_expected.to match_array(["skywinder", "ActionSheetPicker-3.0"]) } end - context "when remote is 4" do + context "when remote is type 4" do subject { GitHubChangelogGenerator::Parser.user_project_from_remote("origin git@github.com:skywinder/ActionSheetPicker-3.0.git (fetch)") } it { is_expected.to be_a(Array) } it { is_expected.to match_array(["skywinder", "ActionSheetPicker-3.0"]) } From 19eb03c54e34b2f79354053989e335686905525e Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Thu, 11 Jun 2015 13:21:18 +0300 Subject: [PATCH 08/12] Add tests to verify sorting algorithm #244 --- lib/CHANGELOG.md | 16 ++++ .../generator/generator_generation.rb | 3 +- .../generator/generator_tags.rb | 9 +- spec/unit/generator/generator_tags_spec.rb | 89 +++++++++++++++---- spec/unit/parser_spec.rb | 6 +- 5 files changed, 99 insertions(+), 24 deletions(-) diff --git a/lib/CHANGELOG.md b/lib/CHANGELOG.md index 085d363..3c6e8bd 100644 --- a/lib/CHANGELOG.md +++ b/lib/CHANGELOG.md @@ -2,6 +2,8 @@ ## [0.0.4](https://github.com/skywinder/changelog_test/tree/0.0.4) (2015-05-22) +[Full Changelog](https://github.com/skywinder/changelog_test/compare/v0.0.3...0.0.4) + **Closed issues:** - Test issue, that should appear in 0.0.4 [\#3](https://github.com/skywinder/changelog_test/issues/3) @@ -10,10 +12,24 @@ - Add automatically generated change log file. [\#5](https://github.com/skywinder/changelog_test/pull/5) ([skywinder](https://github.com/skywinder)) +## [v0.0.3](https://github.com/skywinder/changelog_test/tree/v0.0.3) (2015-03-04) + +[Full Changelog](https://github.com/skywinder/changelog_test/compare/v0.0.2...v0.0.3) + +**Merged pull requests:** + - fix \#3. hotfix. Should appear in v0.0.3 [\#4](https://github.com/skywinder/changelog_test/pull/4) ([skywinder](https://github.com/skywinder)) +## [v0.0.2](https://github.com/skywinder/changelog_test/tree/v0.0.2) (2015-03-04) + +[Full Changelog](https://github.com/skywinder/changelog_test/compare/v0.0.1...v0.0.2) + +**Merged pull requests:** + - Here is a test hotfix should appear in v.0.0.2 [\#2](https://github.com/skywinder/changelog_test/pull/2) ([skywinder](https://github.com/skywinder)) +## [v0.0.1](https://github.com/skywinder/changelog_test/tree/v0.0.1) (2015-03-02) + \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* \ No newline at end of file diff --git a/lib/github_changelog_generator/generator/generator_generation.rb b/lib/github_changelog_generator/generator/generator_generation.rb index 5002f89..634cbe1 100644 --- a/lib/github_changelog_generator/generator/generator_generation.rb +++ b/lib/github_changelog_generator/generator/generator_generation.rb @@ -5,6 +5,7 @@ module GitHubChangelogGenerator # @return [String] Generated change log file def compound_changelog fetch_and_filter_tags + sort_tags_by_date(@filtered_tags) fetch_issues_and_pr log = "# Change Log\n\n" @@ -129,7 +130,7 @@ module GitHubChangelogGenerator log = generate_unreleased_section (1...filtered_tags.size).each do |index| - log += generate_log_between_tags(all_tags[index], all_tags[index - 1]) + log += generate_log_between_tags(filtered_tags[index], filtered_tags[index - 1]) end if @filtered_tags.count != 0 log += generate_log_between_tags(nil, filtered_tags.last) diff --git a/lib/github_changelog_generator/generator/generator_tags.rb b/lib/github_changelog_generator/generator/generator_tags.rb index 44601a2..123c155 100644 --- a/lib/github_changelog_generator/generator/generator_tags.rb +++ b/lib/github_changelog_generator/generator/generator_tags.rb @@ -4,7 +4,6 @@ module GitHubChangelogGenerator def fetch_and_filter_tags @filtered_tags = get_filtered_tags(@fetcher.get_all_tags) fetch_tags_dates - sort_tags_by_date(@filtered_tags) end # Sort all tags by date @@ -22,11 +21,13 @@ module GitHubChangelogGenerator def get_time_of_tag(tag_name) fail ChangelogGeneratorError, "tag_name is nil".red if tag_name.nil? - if @tag_times_hash[tag_name["name"]] - @tag_times_hash[tag_name["name"]] + name_of_tag = tag_name["name"] + time_for_name = @tag_times_hash[name_of_tag] + if !time_for_name.nil? + time_for_name else time_string = @fetcher.fetch_date_of_tag tag_name - @tag_times_hash[tag_name["name"]] = time_string + @tag_times_hash[name_of_tag] = time_string time_string end end diff --git a/spec/unit/generator/generator_tags_spec.rb b/spec/unit/generator/generator_tags_spec.rb index 870c8a9..5dd00c2 100644 --- a/spec/unit/generator/generator_tags_spec.rb +++ b/spec/unit/generator/generator_tags_spec.rb @@ -1,3 +1,18 @@ +def tag_mash_with_name(tag) + mash_tag = Hashie::Mash.new + mash_tag.name = tag + mash_tag +end + +def tags_mash_from_strings(tags_strings) + mash_array = [] + tags_strings.each do |tag| + mash_tag = tag_mash_with_name(tag) + mash_array << mash_tag + end + mash_array +end + describe GitHubChangelogGenerator::Generator do describe "#filter_between_tags" do context "when between_tags nil" do @@ -46,16 +61,6 @@ describe GitHubChangelogGenerator::Generator do end end - def tags_mash_from_strings(tags_strings) - mash_array = [] - tags_strings.each do |tag| - mash_tag = Hashie::Mash.new - mash_tag.name = tag - mash_array << mash_tag - end - mash_array - end - describe "#get_filtered_tags" do subject do generator.get_filtered_tags(tags_mash_from_strings(%w(1 2 3 4 5))) @@ -76,19 +81,71 @@ describe GitHubChangelogGenerator::Generator do it { is_expected.to be_a Array } it { is_expected.to match_array(tags_mash_from_strings(%w(1 2))) } end + + context "with invalid excluded tags" do + let(:generator) { GitHubChangelogGenerator::Generator.new(exclude_tags: %w(invalid tags)) } + it { is_expected.to be_a Array } + it { is_expected.to match_array(tags_mash_from_strings(%w(1 2 3))) } + end end describe "#get_time_of_tag" do - before(:all) do - @generator = GitHubChangelogGenerator::Generator.new - puts "blah" + current_time = Time.now + before(:all) { @generator = GitHubChangelogGenerator::Generator.new } + context "run with nil parameter" do + it "should raise ChangelogGeneratorError" do + expect { @generator.get_time_of_tag nil }.to raise_error(GitHubChangelogGenerator::ChangelogGeneratorError) + end end - it "should raise ChangelogGeneratorError" do - expect { @generator.get_time_of_tag nil }.to raise_error(GitHubChangelogGenerator::ChangelogGeneratorError) + context "fetch already filled tag" do + before { @generator.instance_variable_set :@tag_times_hash, "valid_tag" => current_time } + subject { @generator.get_time_of_tag tag_mash_with_name("valid_tag") } + it { is_expected.to be_a_kind_of(Time) } + it { is_expected.to eq(current_time) } + end + context "fetch not filled tag" do + before do + mock = double("fake fetcher") + allow(mock).to receive_messages(fetch_date_of_tag: current_time) + @generator.instance_variable_set :@fetcher, mock + end + subject do + of_tag = @generator.get_time_of_tag tag_mash_with_name("valid_tag") + of_tag + end + it { is_expected.to be_a_kind_of(Time) } + it { is_expected.to eq(current_time) } end end describe "#sort_tags_by_date" do - subject { generator.sort_tags_by_date } + time1 = Time.now + time2 = Time.now + time3 = Time.now + before(:all) do + @generator = GitHubChangelogGenerator::Generator.new + end + context "sort unsorted tags" do + tags = tags_mash_from_strings %w(valid_tag1 valid_tag2 valid_tag3) + before do + @generator.instance_variable_set :@tag_times_hash, "valid_tag1" => time1, "valid_tag2" => time2, "valid_tag3" => time3 + end + subject do + @generator.sort_tags_by_date tags + end + it { is_expected.to be_a_kind_of(Array) } + it { is_expected.to match_array(tags.reverse!) } + end + context "sort sorted tags" do + tags = tags_mash_from_strings %w(valid_tag3 valid_tag2 valid_tag1) + before do + @generator.instance_variable_set :@tag_times_hash, "valid_tag1" => time1, "valid_tag2" => time2, "valid_tag3" => time3 + end + subject do + @generator.sort_tags_by_date tags + end + it { is_expected.to be_a_kind_of(Array) } + it { is_expected.to match_array(tags) } + end end end diff --git a/spec/unit/parser_spec.rb b/spec/unit/parser_spec.rb index 6b12461..3f792c1 100644 --- a/spec/unit/parser_spec.rb +++ b/spec/unit/parser_spec.rb @@ -27,9 +27,9 @@ describe GitHubChangelogGenerator::Parser do end end describe ".user_project_from_option" do - # context "when option is invalid" do - # it("should exit") { expect { GitHubChangelogGenerator::Parser.user_project_from_option("blah", nil) }.to raise_error(SystemExit) } - # end + context "when option is invalid" do + it("should exit") { expect { GitHubChangelogGenerator::Parser.user_project_from_option("blah", nil) }.to raise_error(SystemExit) } + end context "when option is valid" do subject { GitHubChangelogGenerator::Parser.user_project_from_option("skywinder/ActionSheetPicker-3.0", nil) } From f7e91998416773bdf70ef2d71d5bb9c60dee87a7 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Thu, 11 Jun 2015 16:10:13 +0300 Subject: [PATCH 09/12] Fix #246 --- lib/github_changelog_generator/parser.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/github_changelog_generator/parser.rb b/lib/github_changelog_generator/parser.rb index 892a5ad..6750d85 100644 --- a/lib/github_changelog_generator/parser.rb +++ b/lib/github_changelog_generator/parser.rb @@ -13,7 +13,9 @@ module GitHubChangelogGenerator parser.parse! - detect_user_and_project(options) + if options[:user].nil? || options[:project].nil? + detect_user_and_project(options) + end if !options[:user] || !options[:project] puts parser.banner From 80a5fdef0cb090f370022b10bbe1f8020076d93c Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Thu, 11 Jun 2015 16:35:38 +0300 Subject: [PATCH 10/12] This fixes #54. And fix #240 also. --- .rubocop_todo.yml | 8 ++++---- CHANGELOG.md | 8 ++++++++ lib/github_changelog_generator/generator/generator.rb | 4 ++-- lib/github_changelog_generator/parser.rb | 9 ++++++++- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 0e98934..f62e871 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,13 +1,13 @@ # This configuration was generated by `rubocop --auto-gen-config` -# on 2015-05-26 16:00:55 +0300 using RuboCop version 0.31.0. +# on 2015-06-11 16:35:14 +0300 using RuboCop version 0.31.0. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -# Offense count: 14 +# Offense count: 13 Metrics/AbcSize: - Max: 59 + Max: 63 # Offense count: 1 Metrics/CyclomaticComplexity: @@ -21,7 +21,7 @@ Metrics/PerceivedComplexity: Style/AccessorMethodName: Enabled: false -# Offense count: 8 +# Offense count: 10 Style/Documentation: Enabled: false diff --git a/CHANGELOG.md b/CHANGELOG.md index e037874..05bf30e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## [Unreleased](https://github.com/skywinder/github-changelog-generator/tree/HEAD) + +[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.5.0...HEAD) + +**Fixed bugs:** + +- Exclude and Include tags is broken [\#245](https://github.com/skywinder/github-changelog-generator/issues/245) + ## [1.5.0](https://github.com/skywinder/github-changelog-generator/tree/1.5.0) (2015-05-26) [Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.4.1...1.5.0) diff --git a/lib/github_changelog_generator/generator/generator.rb b/lib/github_changelog_generator/generator/generator.rb index 442891f..e6b4e6f 100644 --- a/lib/github_changelog_generator/generator/generator.rb +++ b/lib/github_changelog_generator/generator/generator.rb @@ -104,12 +104,12 @@ module GitHubChangelogGenerator issues.each do |dict| added = false dict.labels.each do |label| - if label.name == "bug" + if @options[:bug_labels].include? label.name bugs_a.push dict added = true next end - if label.name == "enhancement" + if @options[:enhancement_labels].include? label.name enhancement_a.push dict added = true next diff --git a/lib/github_changelog_generator/parser.rb b/lib/github_changelog_generator/parser.rb index 6750d85..22b7be9 100644 --- a/lib/github_changelog_generator/parser.rb +++ b/lib/github_changelog_generator/parser.rb @@ -86,6 +86,12 @@ module GitHubChangelogGenerator opts.on("--exclude-labels x,y,z", Array, 'Issues with the specified labels will be always excluded from changelog. Default is \'duplicate,question,invalid,wontfix\'') do |list| options[:exclude_labels] = list end + opts.on("--bug-labels x,y,z", Array, 'Issues with the specified labels will be always added to "Fixed bugs" section. Default is \'bug,Bug\'') do |list| + options[:bug_labels] = list + end + opts.on("--enhancement-labels x,y,z", Array, 'Issues with the specified labels will be always added to "Implemented enhancements" section. Default is \'enhancement,Enhancement\'') do |list| + options[:enhancement_labels] = list + end opts.on("--between-tags x,y,z", Array, "Change log will be filled only between specified tags") do |list| options[:between_tags] = list end @@ -138,7 +144,8 @@ module GitHubChangelogGenerator unreleased: true, unreleased_label: "Unreleased", compare_link: true, - include_labels: %w(bug enhancement), + enhancement_labels: %w(enhancement Enhancement), + bug_labels: %w(bug Bug), exclude_labels: %w(duplicate question invalid wontfix), max_issues: nil, simple_list: false, From 67ea3159cd5151eb2dcfe212036974694d20cc8a Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Thu, 11 Jun 2015 16:43:45 +0300 Subject: [PATCH 11/12] add capital words for exclude labels --- lib/github_changelog_generator/parser.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/github_changelog_generator/parser.rb b/lib/github_changelog_generator/parser.rb index 22b7be9..2f252d9 100644 --- a/lib/github_changelog_generator/parser.rb +++ b/lib/github_changelog_generator/parser.rb @@ -146,7 +146,7 @@ module GitHubChangelogGenerator compare_link: true, enhancement_labels: %w(enhancement Enhancement), bug_labels: %w(bug Bug), - exclude_labels: %w(duplicate question invalid wontfix), + exclude_labels: %w(duplicate question invalid wontfix Duplicate Question Invalid Wontfix), max_issues: nil, simple_list: false, verbose: true, From 44ce94d7a87a6df2f9f09b50e1b327cc999707a0 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Thu, 11 Jun 2015 16:44:43 +0300 Subject: [PATCH 12/12] Update gemspec to version 1.6.0 --- lib/github_changelog_generator/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/github_changelog_generator/version.rb b/lib/github_changelog_generator/version.rb index c453d07..9a539e6 100644 --- a/lib/github_changelog_generator/version.rb +++ b/lib/github_changelog_generator/version.rb @@ -1,3 +1,3 @@ module GitHubChangelogGenerator - VERSION = "1.5.0" + VERSION = "1.6.0" end