Compare commits

..

2 Commits

Author SHA1 Message Date
Petr Korolev
b08f881fb1 Merge branch 'hotfix/update-changelog' into develop 2016-07-22 11:17:55 +03:00
Petr Korolev
4c7df83a4c Merge branch 'release/1.13.1' into develop 2016-07-22 11:16:54 +03:00
35 changed files with 181 additions and 172 deletions

2
.gitignore vendored
View File

@@ -7,5 +7,3 @@ coverage/
spec/*.lock spec/*.lock
doc doc
.yardoc .yardoc
Gemfile.lock
gemfiles/Gemfile.2_4_0.lock

View File

@@ -1,12 +1,5 @@
inherit_from: .rubocop_todo.yml inherit_from: .rubocop_todo.yml
AllCops:
DisplayCopNames: true
DisplayStyleGuide: true
Exclude:
- 'vendor/**/*'
- 'gemfiles/**/*'
Metrics/LineLength: Metrics/LineLength:
Enabled: false Enabled: false
@@ -60,10 +53,4 @@ Style/RegexpLiteral:
Style/MutableConstant: Style/MutableConstant:
Enabled: false Enabled: false
# "Use idx.positive? instead of idx > 0."
Style/NumericPredicate:
Enabled: false
Style/SafeNavigation:
Enabled: false

View File

@@ -1 +0,0 @@
2.3.1

View File

@@ -1,25 +1,23 @@
language: ruby
cache: cache:
- bundler - bundler
language: ruby
before_install: before_install:
- gem update --system - gem update --system
- gem install bundler - gem install bundler
rvm:
- 2.1
script: bundle exec rake checks
matrix: matrix:
include: include:
- rvm: 2.2.2 # Test install on clean system
install: true # This skips 'bundle install' - install: true
script: gem build github_changelog_generator && gem install *.gem script:
- rvm: 2.2.2 - gem build github_changelog_generator
install: true # This skips 'bundle install' - gem install *.gem
script: gem build github_changelog_generator && bundle install - install: true
gemfile: spec/install-gem-in-bundler.gemfile script:
- rvm: 2.1 - gem build github_changelog_generator
gemfile: gemfiles/Gemfile.with_rack16 - bundle install --gemfile spec/install-gem-in-bundler.gemfile
- rvm: 2.3.1
gemfile: gemfiles/Gemfile.with_rack2
- rvm: 2.4.0-preview2
gemfile: gemfiles/Gemfile.2_4_0
notifications: notifications:
email: email:
recipients: recipients:

22
Gemfile
View File

@@ -1,27 +1,15 @@
# frozen_string_literal: true
source "https://rubygems.org" source "https://rubygems.org"
gemspec gemspec
group :development, :test do group :test do
gem "rake" gem "rake"
gem "bundler" gem "bundler"
gem "overcommit", ">= 0.31" gem "rubocop"
gem "rubocop", ">= 0.43" gem "overcommit"
end
group :development do
gem "bump"
end
group :test do
gem "coveralls", "~>0.8", require: false gem "coveralls", "~>0.8", require: false
gem "simplecov", "~>0.10", require: false gem "simplecov", "~>0.10", require: false
gem "codeclimate-test-reporter", "~>0.4" gem "codeclimate-test-reporter", "~>0.4"
if RUBY_VERSION > "2" # JSON 2.0.1 is ruby 2.0+
gem "json", "~> 2.0", ">= 2.0.2" gem "json", "< 2.0"
else
gem "json"
end
gem "rspec", "< 4"
end end

108
Gemfile.lock Normal file
View File

@@ -0,0 +1,108 @@
PATH
remote: .
specs:
github_changelog_generator (1.13.1)
colorize (>= 0.7)
github_api (>= 0.12)
rake (>= 10.0)
GEM
remote: https://rubygems.org/
specs:
addressable (2.4.0)
ast (2.3.0)
childprocess (0.5.9)
ffi (~> 1.0, >= 1.0.11)
codeclimate-test-reporter (0.6.0)
simplecov (>= 0.7.1, < 1.0.0)
colorize (0.8.1)
coveralls (0.8.14)
json (>= 1.8, < 3)
simplecov (~> 0.12.0)
term-ansicolor (~> 1.3)
thor (~> 0.19.1)
tins (~> 1.6.0)
descendants_tracker (0.0.4)
thread_safe (~> 0.3, >= 0.3.1)
diff-lcs (1.2.5)
docile (1.1.5)
faraday (0.9.2)
multipart-post (>= 1.2, < 3)
ffi (1.9.14)
github_api (0.14.4)
addressable (~> 2.4.0)
descendants_tracker (~> 0.0.4)
faraday (~> 0.8, < 0.10)
hashie (>= 3.4)
oauth2 (~> 1.0.0)
hashie (3.4.4)
iniparse (1.4.2)
json (1.8.3)
jwt (1.5.4)
multi_json (1.12.1)
multi_xml (0.5.5)
multipart-post (2.0.0)
oauth2 (1.0.0)
faraday (>= 0.8, < 0.10)
jwt (~> 1.0)
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (~> 1.2)
overcommit (0.34.2)
childprocess (~> 0.5.8)
iniparse (~> 1.4)
parser (2.3.1.2)
ast (~> 2.2)
powerpack (0.1.1)
rack (1.6.4)
rainbow (2.1.0)
rake (11.2.2)
rspec (3.5.0)
rspec-core (~> 3.5.0)
rspec-expectations (~> 3.5.0)
rspec-mocks (~> 3.5.0)
rspec-core (3.5.1)
rspec-support (~> 3.5.0)
rspec-expectations (3.5.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-mocks (3.5.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-support (3.5.0)
rubocop (0.41.2)
parser (>= 2.3.1.1, < 3.0)
powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1)
ruby-progressbar (1.8.1)
simplecov (0.12.0)
docile (~> 1.1.0)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.0)
term-ansicolor (1.3.2)
tins (~> 1.0)
thor (0.19.1)
thread_safe (0.3.5)
tins (1.6.0)
unicode-display_width (1.1.0)
PLATFORMS
ruby
DEPENDENCIES
bundler
codeclimate-test-reporter (~> 0.4)
coveralls (~> 0.8)
github_changelog_generator!
json (< 2.0)
overcommit
rake
rspec (>= 3.2)
rubocop
simplecov (~> 0.10)
BUNDLED WITH
1.12.5

View File

@@ -4,7 +4,6 @@
[![Inline docs](http://inch-ci.org/github/skywinder/github-changelog-generator.svg)](http://inch-ci.org/github/skywinder/github-changelog-generator) [![Inline docs](http://inch-ci.org/github/skywinder/github-changelog-generator.svg)](http://inch-ci.org/github/skywinder/github-changelog-generator)
[![Code Climate](https://codeclimate.com/github/skywinder/github-changelog-generator/badges/gpa.svg)](https://codeclimate.com/github/skywinder/github-changelog-generator) [![Code Climate](https://codeclimate.com/github/skywinder/github-changelog-generator/badges/gpa.svg)](https://codeclimate.com/github/skywinder/github-changelog-generator)
[![Test Coverage](https://codeclimate.com/github/skywinder/github-changelog-generator/badges/coverage.svg)](https://codeclimate.com/github/skywinder/github-changelog-generator) [![Test Coverage](https://codeclimate.com/github/skywinder/github-changelog-generator/badges/coverage.svg)](https://codeclimate.com/github/skywinder/github-changelog-generator)
[![Join the chat at https://gitter.im/github-changelog-generator/chat](https://badges.gitter.im/github-changelog-generator/chat.svg)](https://gitter.im/github-changelog-generator/chat?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
GitHub Changelog Generator ![GitHub Logo](../master/images/logo.jpg) GitHub Changelog Generator ![GitHub Logo](../master/images/logo.jpg)
================== ==================
@@ -24,7 +23,7 @@ GitHub Changelog Generator ![GitHub Logo](../master/images/logo.jpg)
### Changelog generation has never been so easy ### Changelog generation has never been so easy
**Fully automate changelog generation** - This gem generates change log file based on **tags**, **issues** and merged **pull requests** (and splits them into separate lists according to labels) from :octocat: GitHub Issue Tracker. **Fully automate changelog generation** - This gem generates change log file based on **tags**, **issues** and merged **pull requests** (and splits them into separate lists according labels) from :octocat: GitHub Issue Tracker.
Since now you don't have to fill your `CHANGELOG.md` manually: just run the script, relax and take a cup of :coffee: before your next release! :tada: Since now you don't have to fill your `CHANGELOG.md` manually: just run the script, relax and take a cup of :coffee: before your next release! :tada:
@@ -37,9 +36,7 @@ Because software tools are for people. If you dont care, why are you contribu
## Installation ## Installation
gem install github_changelog_generator [sudo] gem install github_changelog_generator
See also Troubleshooting.
## Output example ## Output example
@@ -226,31 +223,6 @@ If you're seeing this warning, please do the following:
1. Make sure you're providing an OAuth token, so you're not making requests anonymously. Using an OAuth token increases your hourly request maximum from 60 to 5000. 1. Make sure you're providing an OAuth token, so you're not making requests anonymously. Using an OAuth token increases your hourly request maximum from 60 to 5000.
2. If you have a large repo with lots of issues/PRs, you can use `--max-issues NUM` to limit the number of issues that are pulled back. For example: `--max-issues 1000` 2. If you have a large repo with lots of issues/PRs, you can use `--max-issues NUM` to limit the number of issues that are pulled back. For example: `--max-issues 1000`
- ***My Ruby version is very old, can I use this?***
When your Ruby is old, and you don't want to upgrade, and your want to
control which libraries you use, you can use Bundler.
In a Gemfile, perhaps in a non-deployed `:development` group, add this
gem:
```ruby
group :development do
gem 'github_changelog_generator', require: false
end
```
Then you can keep back dependencies like rack, which currently is only
compatible with Ruby >= 2.2.2. So, use an older version for your app by
adding a line like this to the Gemfile:
```
gem 'rack', '~> 1.6'
```
This way, you can keep on using github_changelog_generator, even if you
can't get the latest version of Ruby installed.
## Contributing ## Contributing
1. Create an issue and describe your idea 1. Create an issue and describe your idea

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
require "bundler" require "bundler"
require "bundler/gem_tasks" require "bundler/gem_tasks"
require "rubocop/rake_task" require "rubocop/rake_task"
@@ -37,4 +36,4 @@ task :copy_man_page_to_manpath do |_t|
end end
task checks: [:rubocop, :rspec] task checks: [:rubocop, :rspec]
task default: [:rubocop, :rspec] task default: [:copy_man_page_to_manpath]

View File

@@ -1,5 +1,4 @@
#! /usr/bin/env ruby #! /usr/bin/env ruby
# frozen_string_literal: true
require_relative "../lib/github_changelog_generator" require_relative "../lib/github_changelog_generator"
GitHubChangelogGenerator::ChangelogGenerator.new.run GitHubChangelogGenerator::ChangelogGenerator.new.run

View File

@@ -1,5 +1,4 @@
#! /usr/bin/env ruby #! /usr/bin/env ruby
# frozen_string_literal: true
require_relative "../lib/github_changelog_generator" require_relative "../lib/github_changelog_generator"
GitHubChangelogGenerator::ChangelogGenerator.new.run GitHubChangelogGenerator::ChangelogGenerator.new.run

View File

@@ -1,8 +0,0 @@
notify:
webhooks:
# A list of hook hashes, containing the url field
# gitter hook
- url: https://webhooks.gitter.im/e/2d81eb1ae7695fdc82c4
- url: https://webhooks.gitter.im/e/3ec6a35fad7e9991058e

View File

@@ -1,3 +0,0 @@
eval_gemfile File.expand_path('../../Gemfile', __FILE__)
gem 'rack', '>= 2'

View File

@@ -1,2 +0,0 @@
eval_gemfile File.expand_path('../../Gemfile', __FILE__)
gem 'rack', '~> 1.6'

View File

@@ -1,2 +0,0 @@
eval_gemfile File.expand_path('../../Gemfile', __FILE__)
gem 'rack', '>= 2'

View File

@@ -1,5 +1,4 @@
# coding: utf-8 # coding: utf-8
# frozen_string_literal: true
lib = File.expand_path("../lib", __FILE__) lib = File.expand_path("../lib", __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require "github_changelog_generator/version" require "github_changelog_generator/version"
@@ -25,6 +24,11 @@ Gem::Specification.new do |spec|
spec.require_paths = ["lib"] spec.require_paths = ["lib"]
spec.add_runtime_dependency "rake", ">= 10.0" spec.add_runtime_dependency "rake", ">= 10.0"
spec.add_runtime_dependency "github_api", ">= 0.14" spec.add_runtime_dependency "github_api", ">= 0.12"
spec.add_runtime_dependency "rainbow", ">= 2.1" spec.add_runtime_dependency "colorize", ">= 0.7"
spec.add_development_dependency "overcommit", ">= 0.31"
spec.add_development_dependency "rspec", ">= 3.2"
spec.add_development_dependency "bundler", ">= 1.7"
spec.add_development_dependency "rubocop", ">= 0.31"
end end

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env ruby #!/usr/bin/env ruby
# frozen_string_literal: true
require "github_api" require "github_api"
require "json" require "json"
require "colorize"
require "benchmark" require "benchmark"
require_relative "github_changelog_generator/helper" require_relative "github_changelog_generator/helper"

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
module GitHubChangelogGenerator module GitHubChangelogGenerator
# A Fetcher responsible for all requests to GitHub and all basic manipulation with related data # A Fetcher responsible for all requests to GitHub and all basic manipulation with related data
# (such as filtering, validating, e.t.c) # (such as filtering, validating, e.t.c)
@@ -8,7 +7,6 @@ module GitHubChangelogGenerator
class Fetcher class Fetcher
PER_PAGE_NUMBER = 30 PER_PAGE_NUMBER = 30
MAX_SIMULTANEOUS_REQUESTS = 25
CHANGELOG_GITHUB_TOKEN = "CHANGELOG_GITHUB_TOKEN" CHANGELOG_GITHUB_TOKEN = "CHANGELOG_GITHUB_TOKEN"
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."
@@ -35,7 +33,7 @@ module GitHubChangelogGenerator
def fetch_github_token def fetch_github_token
env_var = @options[:token] ? @options[:token] : (ENV.fetch CHANGELOG_GITHUB_TOKEN, nil) env_var = @options[:token] ? @options[:token] : (ENV.fetch CHANGELOG_GITHUB_TOKEN, nil)
Helper.log.warn NO_TOKEN_PROVIDED unless env_var Helper.log.warn NO_TOKEN_PROVIDED.yellow unless env_var
env_var env_var
end end
@@ -54,11 +52,11 @@ module GitHubChangelogGenerator
begin begin
value = yield value = yield
rescue Github::Error::Unauthorized => e rescue Github::Error::Unauthorized => e
Helper.log.error e.response_message Helper.log.error e.body.red
abort "Error: wrong GitHub token" abort "Error: wrong GitHub token"
rescue Github::Error::Forbidden => e rescue Github::Error::Forbidden => e
Helper.log.warn e.response_message Helper.log.warn e.body.red
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
end end
value value
end end
@@ -77,9 +75,9 @@ module GitHubChangelogGenerator
end end
print_empty_line print_empty_line
if tags.empty? if tags.count == 0
Helper.log.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'" Make sure, that you push tags to remote repo via 'git push --tags'".yellow
else else
Helper.log.info "Found #{tags.count} tags" Helper.log.info "Found #{tags.count} tags"
end end
@@ -110,9 +108,8 @@ Make sure, that you push tags to remote repo via 'git push --tags'"
print_empty_line print_empty_line
Helper.log.info "Received issues: #{issues.count}" Helper.log.info "Received issues: #{issues.count}"
rescue Github::Error::Forbidden => e rescue
Helper.log.warn e.error_messages.map { |m| m[:message] }.join(", ") Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG
end end
# separate arrays of issues and pull requests: # separate arrays of issues and pull requests:
@@ -145,9 +142,8 @@ Make sure, that you push tags to remote repo via 'git push --tags'"
pull_requests.concat(page) pull_requests.concat(page)
end end
print_empty_line print_empty_line
rescue Github::Error::Forbidden => e rescue
Helper.log.warn e.error_messages.map { |m| m[:message] }.join(", ") Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG
end end
Helper.log.info "Fetching merged dates: #{pull_requests.count}" Helper.log.info "Fetching merged dates: #{pull_requests.count}"
@@ -170,8 +166,9 @@ Make sure, that you push tags to remote repo via 'git push --tags'"
# @return [Void] # @return [Void]
def fetch_events_async(issues) def fetch_events_async(issues)
i = 0 i = 0
max_thread_number = 50
threads = [] threads = []
issues.each_slice(MAX_SIMULTANEOUS_REQUESTS) do |issues_slice| issues.each_slice(max_thread_number) do |issues_slice|
issues_slice.each do |issue| issues_slice.each do |issue|
threads << Thread.new do threads << Thread.new do
begin begin
@@ -182,9 +179,8 @@ Make sure, that you push tags to remote repo via 'git push --tags'"
response.each_page do |page| response.each_page do |page|
issue[:events].concat(page) issue[:events].concat(page)
end end
rescue Github::Error::Forbidden => e rescue
Helper.log.warn e.error_messages.map { |m| m[:message] }.join(", ") Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG
end end
print_in_same_line("Fetching events for issues and PR: #{i + 1}/#{issues.count}") print_in_same_line("Fetching events for issues and PR: #{i + 1}/#{issues.count}")
i += 1 i += 1
@@ -209,9 +205,8 @@ Make sure, that you push tags to remote repo via 'git push --tags'"
commit_data = @github.git_data.commits.get @options[:user], commit_data = @github.git_data.commits.get @options[:user],
@options[:project], @options[:project],
tag["commit"]["sha"] tag["commit"]["sha"]
rescue Github::Error::Forbidden => e rescue
Helper.log.warn e.error_messages.map { |m| m[:message] }.join(", ") Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG
end end
time_string = commit_data["committer"]["date"] time_string = commit_data["committer"]["date"]
Time.parse(time_string) Time.parse(time_string)

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
require_relative "../fetcher" require_relative "../fetcher"
require_relative "generator_generation" require_relative "generator_generation"
require_relative "generator_fetcher" require_relative "generator_fetcher"

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
module GitHubChangelogGenerator module GitHubChangelogGenerator
class Generator class Generator
# Fetch event for issues and pull requests # Fetch event for issues and pull requests
@@ -75,7 +74,7 @@ module GitHubChangelogGenerator
commit = @fetcher.fetch_commit(event) commit = @fetcher.fetch_commit(event)
issue[:actual_date] = commit[:author][:date] issue[:actual_date] = commit[:author][:date]
rescue rescue
puts "Warning: Can't fetch commit #{event[:commit_id]}. It is probably referenced from another repo." puts "Warning: Can't fetch commit #{event[:commit_id]}. It is probably referenced from another repo.".yellow
issue[:actual_date] = issue[:closed_at] issue[:actual_date] = issue[:closed_at]
end end
end end

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
module GitHubChangelogGenerator module GitHubChangelogGenerator
class Generator class Generator
# Main function to start change log generation # Main function to start change log generation
@@ -40,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
raise ChangelogGeneratorError, "Can't find tag #{tag2} -> exit" raise ChangelogGeneratorError, "Can't find tag #{tag2} -> exit".red
end end
else else
raise ChangelogGeneratorError, "Can't find tag #{tag1} -> exit" raise ChangelogGeneratorError, "Can't find tag #{tag1} -> exit".red
end end
log log
end end
@@ -142,7 +141,7 @@ module GitHubChangelogGenerator
(1...filtered_tags.size).each do |index| (1...filtered_tags.size).each do |index|
log += generate_log_between_tags(filtered_tags[index], filtered_tags[index - 1]) log += generate_log_between_tags(filtered_tags[index], filtered_tags[index - 1])
end end
if filtered_tags.any? if @filtered_tags.count != 0
log += generate_log_between_tags(nil, filtered_tags.last) log += generate_log_between_tags(nil, filtered_tags.last)
end end

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
module GitHubChangelogGenerator module GitHubChangelogGenerator
class Generator class Generator
# delete all labels with labels from @options[:exclude_labels] array # delete all labels with labels from @options[:exclude_labels] array
@@ -131,14 +130,11 @@ module GitHubChangelogGenerator
end end
def filter_by_include_labels(issues) def filter_by_include_labels(issues)
if @options[:include_labels].nil? filtered_issues = @options[:include_labels].nil? ? issues : issues.select do |issue|
issues labels = issue.labels.map(&:name) & @options[:include_labels]
else labels.any?
issues.select do |issue|
labels = issue.labels.map(&:name) & @options[:include_labels]
labels.any?
end
end end
filtered_issues
end end
# General filtered function # General filtered function

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
module GitHubChangelogGenerator module GitHubChangelogGenerator
class Generator class Generator
# fetch, filter tags, fetch dates and sort them in time order # fetch, filter tags, fetch dates and sort them in time order
@@ -20,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)
raise ChangelogGeneratorError, "tag_name is nil" 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]
@@ -100,7 +99,7 @@ module GitHubChangelogGenerator
filtered_tags = all_tags filtered_tags = all_tags
tag = @options[:due_tag] tag = @options[:due_tag]
if tag if tag
if all_tags.any? && 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
filtered_tags = if idx > 0 && idx < last_index filtered_tags = if idx > 0 && idx < last_index

View File

@@ -1,7 +1,4 @@
# frozen_string_literal: true
require "logger" require "logger"
require "rainbow"
module GitHubChangelogGenerator 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
@@ -9,7 +6,6 @@ module GitHubChangelogGenerator
defined? SpecHelper defined? SpecHelper
end end
# :nocov:
@log ||= if test? @log ||= if test?
Logger.new(nil) # don't show any logs when running tests Logger.new(nil) # don't show any logs when running tests
else else
@@ -17,16 +13,21 @@ module GitHubChangelogGenerator
end end
@log.formatter = proc do |severity, _datetime, _progname, msg| @log.formatter = proc do |severity, _datetime, _progname, msg|
string = "#{msg}\n" string = "#{msg}\n"
case severity
when "DEBUG" then Rainbow(string).magenta if severity == "DEBUG"
when "INFO" then Rainbow(string).white string = string.magenta
when "WARN" then Rainbow(string).yellow elsif severity == "INFO"
when "ERROR" then Rainbow(string).red string = string.white
when "FATAL" then Rainbow(string).red.bright elsif severity == "WARN"
else string string = string.yellow
elsif severity == "ERROR"
string = string.red
elsif severity == "FATAL"
string = string.red.bold
end end
string
end end
# :nocov:
# Logging happens using this method # Logging happens using this method
class << self class << self

View File

@@ -1,5 +1,4 @@
#!/usr/bin/env ruby #!/usr/bin/env ruby
# frozen_string_literal: true
require "optparse" require "optparse"
require "pp" require "pp"
require_relative "version" require_relative "version"

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
require "pathname" require "pathname"
module GitHubChangelogGenerator module GitHubChangelogGenerator

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
# #
# Author:: Enrico Stahn <mail@enricostahn.com> # Author:: Enrico Stahn <mail@enricostahn.com>
# #

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
require "rake" require "rake"
require "rake/tasklib" require "rake/tasklib"
require "github_changelog_generator" require "github_changelog_generator"

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
module GitHubChangelogGenerator module GitHubChangelogGenerator
VERSION = "1.13.2" VERSION = "1.13.1"
end end

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
# #
# Author:: Enrico Stahn <mail@enricostahn.com> # Author:: Enrico Stahn <mail@enricostahn.com>
# #
@@ -29,9 +28,7 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
SimpleCov::Formatter::HTMLFormatter, SimpleCov::Formatter::HTMLFormatter,
CodeClimate::TestReporter::Formatter CodeClimate::TestReporter::Formatter
]) ])
SimpleCov.start do SimpleCov.start
add_filter "gemfiles/"
end
require "github_changelog_generator" require "github_changelog_generator"
require "github_changelog_generator/task" require "github_changelog_generator/task"

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
VALID_TOKEN = "0123456789abcdef" VALID_TOKEN = "0123456789abcdef"
INVALID_TOKEN = "0000000000000000" INVALID_TOKEN = "0000000000000000"

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
module GitHubChangelogGenerator module GitHubChangelogGenerator
describe Generator do describe Generator do
context "#exclude_issues_by_labels" do context "#exclude_issues_by_labels" do

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
describe GitHubChangelogGenerator::Generator do describe GitHubChangelogGenerator::Generator do
def tag_mash_with_name(tag) def tag_mash_with_name(tag)
Hashie::Mash.new.tap { |mash_tag| mash_tag.name = tag } Hashie::Mash.new.tap { |mash_tag| mash_tag.name = tag }

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
describe GitHubChangelogGenerator::ParserFile do describe GitHubChangelogGenerator::ParserFile do
describe ".github_changelog_generator" do describe ".github_changelog_generator" do
let(:options) { {} } let(:options) { {} }

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
describe GitHubChangelogGenerator::Parser do describe GitHubChangelogGenerator::Parser do
describe ".user_project_from_remote" do describe ".user_project_from_remote" do
context "when remote is type 1" do context "when remote is type 1" do
@@ -64,10 +63,9 @@ describe GitHubChangelogGenerator::Parser do
end end
end end
describe ".fetch_user_and_project" do describe ".fetch_user_and_project" do
before do before :each do
stub_const("ARGV", ["https://github.com/skywinder/github-changelog-generator"]) ARGV = ["https://github.com/skywinder/github-changelog-generator"]
end end
context do context do
let(:valid_user) { "initialized_user" } let(:valid_user) { "initialized_user" }
let(:options) { { user: valid_user } } let(:options) { { user: valid_user } }

View File

@@ -1,4 +1,3 @@
# frozen_string_literal: true
# #
# Author:: Enrico Stahn <mail@enricostahn.com> # Author:: Enrico Stahn <mail@enricostahn.com>
# #