From 0190d417c229b93d2af492246d584ace35f78078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= Date: Tue, 4 Aug 2015 14:56:39 +0200 Subject: [PATCH 1/2] Typo --- 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 f06d45230..65247491c 100644 --- a/lib/github_changelog_generator/parser.rb +++ b/lib/github_changelog_generator/parser.rb @@ -110,7 +110,7 @@ def self.setup_parser(options) opts.on("--between-tags x,y,z", Array, "Change log will be filled only between specified tags") do |list| options[:between_tags] = list end - opts.on("--exclude-tags x,y,z", Array, "Change log will be exclude specified tags") do |list| + opts.on("--exclude-tags x,y,z", Array, "Change log will exclude specified tags") do |list| options[:exclude_tags] = list end opts.on("--max-issues [NUMBER]", Integer, "Max number of issues to fetch from GitHub. Default is unlimited") do |max| From 32f4df574276e9eee8f7a1d752cedc6afe9cf589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= Date: Tue, 4 Aug 2015 14:58:25 +0200 Subject: [PATCH 2/2] Add --since-tag option Fix #254 --- .../generator/generator_tags.rb | 21 ++++++++++++++++++- lib/github_changelog_generator/parser.rb | 3 +++ spec/unit/generator/generator_tags_spec.rb | 16 ++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/lib/github_changelog_generator/generator/generator_tags.rb b/lib/github_changelog_generator/generator/generator_tags.rb index 123c155aa..81c446639 100644 --- a/lib/github_changelog_generator/generator/generator_tags.rb +++ b/lib/github_changelog_generator/generator/generator_tags.rb @@ -56,10 +56,29 @@ def detect_link_tag_time(newer_tag) # # @return [Array] def get_filtered_tags(all_tags) - filtered_tags = filter_between_tags(all_tags) + filtered_tags = filter_since_tag(all_tags) + filtered_tags = filter_between_tags(filtered_tags) filter_excluded_tags(filtered_tags) end + def filter_since_tag(all_tags) + filtered_tags = all_tags + tag = @options[:since_tag] + if tag + if all_tags.map(&:name).include? tag + idx = all_tags.index { |t| t.name == tag } + if idx > 0 + filtered_tags = all_tags[0..idx - 1] + else + filtered_tags = [] + end + else + Helper.log.warn "Warning: can't find tag #{tag}, specified with --since-tag option." + end + end + filtered_tags + end + def filter_between_tags(all_tags) filtered_tags = all_tags if @options[:between_tags] diff --git a/lib/github_changelog_generator/parser.rb b/lib/github_changelog_generator/parser.rb index 65247491c..ff1b6f942 100644 --- a/lib/github_changelog_generator/parser.rb +++ b/lib/github_changelog_generator/parser.rb @@ -113,6 +113,9 @@ def self.setup_parser(options) opts.on("--exclude-tags x,y,z", Array, "Change log will exclude specified tags") do |list| options[:exclude_tags] = list end + opts.on("--since-tag x", "Change log will start after specified tag") do |v| + options[:since_tag] = v + end opts.on("--max-issues [NUMBER]", Integer, "Max number of issues to fetch from GitHub. Default is unlimited") do |max| options[:max_issues] = max end diff --git a/spec/unit/generator/generator_tags_spec.rb b/spec/unit/generator/generator_tags_spec.rb index 5dd00c20b..ec69c05cc 100644 --- a/spec/unit/generator/generator_tags_spec.rb +++ b/spec/unit/generator/generator_tags_spec.rb @@ -89,6 +89,22 @@ def tags_mash_from_strings(tags_strings) end end + describe "#filter_since_tag" do + subject { generator.filter_since_tag(tags_mash_from_strings(%w(1 2 3))) } + + context "with valid since tag" do + let(:generator) { GitHubChangelogGenerator::Generator.new(since_tag: "2") } + it { is_expected.to be_a Array } + it { is_expected.to match_array(tags_mash_from_strings(%w(1))) } + end + + context "with invalid since tag" do + let(:generator) { GitHubChangelogGenerator::Generator.new(since_tag: %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 current_time = Time.now before(:all) { @generator = GitHubChangelogGenerator::Generator.new }