Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b08f881fb1 | ||
|
|
4c7df83a4c |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -7,5 +7,3 @@ coverage/
|
|||||||
spec/*.lock
|
spec/*.lock
|
||||||
doc
|
doc
|
||||||
.yardoc
|
.yardoc
|
||||||
Gemfile.lock
|
|
||||||
gemfiles/Gemfile.2_4_0.lock
|
|
||||||
|
|||||||
13
.rubocop.yml
13
.rubocop.yml
@@ -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
|
||||||
|
|
||||||
@@ -61,9 +54,3 @@ 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
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
2.3.1
|
|
||||||
28
.travis.yml
28
.travis.yml
@@ -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
22
Gemfile
@@ -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
108
Gemfile.lock
Normal 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
|
||||||
32
README.md
32
README.md
@@ -4,7 +4,6 @@
|
|||||||
[](http://inch-ci.org/github/skywinder/github-changelog-generator)
|
[](http://inch-ci.org/github/skywinder/github-changelog-generator)
|
||||||
[](https://codeclimate.com/github/skywinder/github-changelog-generator)
|
[](https://codeclimate.com/github/skywinder/github-changelog-generator)
|
||||||
[](https://codeclimate.com/github/skywinder/github-changelog-generator)
|
[](https://codeclimate.com/github/skywinder/github-changelog-generator)
|
||||||
[](https://gitter.im/github-changelog-generator/chat?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
||||||
|
|
||||||
GitHub Changelog Generator 
|
GitHub Changelog Generator 
|
||||||
==================
|
==================
|
||||||
@@ -24,7 +23,7 @@ GitHub Changelog Generator 
|
|||||||
|
|
||||||
### 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 don’t 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
|
||||||
|
|||||||
3
Rakefile
3
Rakefile
@@ -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]
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
eval_gemfile File.expand_path('../../Gemfile', __FILE__)
|
|
||||||
gem 'rack', '>= 2'
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
eval_gemfile File.expand_path('../../Gemfile', __FILE__)
|
|
||||||
gem 'rack', '~> 1.6'
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
eval_gemfile File.expand_path('../../Gemfile', __FILE__)
|
|
||||||
gem 'rack', '>= 2'
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
require "pathname"
|
require "pathname"
|
||||||
|
|
||||||
module GitHubChangelogGenerator
|
module GitHubChangelogGenerator
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
#
|
#
|
||||||
# Author:: Enrico Stahn <mail@enricostahn.com>
|
# Author:: Enrico Stahn <mail@enricostahn.com>
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
module GitHubChangelogGenerator
|
module GitHubChangelogGenerator
|
||||||
VERSION = "1.13.2"
|
VERSION = "1.13.1"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
VALID_TOKEN = "0123456789abcdef"
|
VALID_TOKEN = "0123456789abcdef"
|
||||||
INVALID_TOKEN = "0000000000000000"
|
INVALID_TOKEN = "0000000000000000"
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 }
|
||||||
|
|||||||
@@ -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) { {} }
|
||||||
|
|||||||
@@ -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 } }
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
#
|
#
|
||||||
# Author:: Enrico Stahn <mail@enricostahn.com>
|
# Author:: Enrico Stahn <mail@enricostahn.com>
|
||||||
#
|
#
|
||||||
|
|||||||
Reference in New Issue
Block a user