Merge pull request #320 from ITV/filter-tags
Added tag exclusion with a filter (string or regex)
This commit is contained in:
@@ -129,26 +129,34 @@ module GitHubChangelogGenerator
|
||||
end
|
||||
|
||||
# @param [Array] all_tags all tags
|
||||
# @return [Array] filtered tags according :exclude_tags option
|
||||
# @return [Array] filtered tags according :exclude_tags or :exclude_tags_regex option
|
||||
def filter_excluded_tags(all_tags)
|
||||
return all_tags unless @options[:exclude_tags]
|
||||
|
||||
apply_exclude_tags(all_tags)
|
||||
if @options[:exclude_tags]
|
||||
apply_exclude_tags(all_tags)
|
||||
elsif @options[:exclude_tags_regex]
|
||||
apply_exclude_tags_regex(all_tags)
|
||||
else
|
||||
all_tags
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def apply_exclude_tags(all_tags)
|
||||
if @options[:exclude_tags].is_a?(Regexp)
|
||||
filter_tags_with_regex(all_tags)
|
||||
filter_tags_with_regex(all_tags, @options[:exclude_tags])
|
||||
else
|
||||
filter_exact_tags(all_tags)
|
||||
end
|
||||
end
|
||||
|
||||
def filter_tags_with_regex(all_tags)
|
||||
def apply_exclude_tags_regex(all_tags)
|
||||
filter_tags_with_regex(all_tags, Regexp.new(@options[:exclude_tags_regex]))
|
||||
end
|
||||
|
||||
def filter_tags_with_regex(all_tags, regex)
|
||||
warn_if_nonmatching_regex(all_tags)
|
||||
all_tags.reject { |tag| @options[:exclude_tags] =~ tag.name }
|
||||
all_tags.reject { |tag| regex =~ tag.name }
|
||||
end
|
||||
|
||||
def filter_exact_tags(all_tags)
|
||||
|
||||
@@ -122,6 +122,9 @@ module GitHubChangelogGenerator
|
||||
opts.on("--exclude-tags x,y,z", Array, "Change log will exclude specified tags") do |list|
|
||||
options[:exclude_tags] = list
|
||||
end
|
||||
opts.on("--exclude-tags-regex [REGEX]", "Apply a regular expression on tag names so that they can be excluded, for example: --exclude-tags-regex \".*\+\d{1,}\" ") do |last|
|
||||
options[:exclude_tags_regex] = last
|
||||
end
|
||||
opts.on("--since-tag x", "Change log will start after specified tag") do |v|
|
||||
options[:since_tag] = v
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user