Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b08f881fb1 | ||
|
|
4c7df83a4c |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -7,5 +7,3 @@ coverage/
|
||||
spec/*.lock
|
||||
doc
|
||||
.yardoc
|
||||
Gemfile.lock
|
||||
gemfiles/Gemfile.2_4_0.lock
|
||||
|
||||
13
.rubocop.yml
13
.rubocop.yml
@@ -1,12 +1,5 @@
|
||||
inherit_from: .rubocop_todo.yml
|
||||
|
||||
AllCops:
|
||||
DisplayCopNames: true
|
||||
DisplayStyleGuide: true
|
||||
Exclude:
|
||||
- 'vendor/**/*'
|
||||
- 'gemfiles/**/*'
|
||||
|
||||
Metrics/LineLength:
|
||||
Enabled: false
|
||||
|
||||
@@ -61,9 +54,3 @@ Style/RegexpLiteral:
|
||||
Style/MutableConstant:
|
||||
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:
|
||||
- bundler
|
||||
language: ruby
|
||||
before_install:
|
||||
- gem update --system
|
||||
- gem install bundler
|
||||
rvm:
|
||||
- 2.1
|
||||
script: bundle exec rake checks
|
||||
matrix:
|
||||
include:
|
||||
- rvm: 2.2.2
|
||||
install: true # This skips 'bundle install'
|
||||
script: gem build github_changelog_generator && gem install *.gem
|
||||
- rvm: 2.2.2
|
||||
install: true # This skips 'bundle install'
|
||||
script: gem build github_changelog_generator && bundle install
|
||||
gemfile: spec/install-gem-in-bundler.gemfile
|
||||
- rvm: 2.1
|
||||
gemfile: gemfiles/Gemfile.with_rack16
|
||||
- rvm: 2.3.1
|
||||
gemfile: gemfiles/Gemfile.with_rack2
|
||||
- rvm: 2.4.0-preview2
|
||||
gemfile: gemfiles/Gemfile.2_4_0
|
||||
|
||||
# Test install on clean system
|
||||
- install: true
|
||||
script:
|
||||
- gem build github_changelog_generator
|
||||
- gem install *.gem
|
||||
- install: true
|
||||
script:
|
||||
- gem build github_changelog_generator
|
||||
- bundle install --gemfile spec/install-gem-in-bundler.gemfile
|
||||
notifications:
|
||||
email:
|
||||
recipients:
|
||||
|
||||
22
Gemfile
22
Gemfile
@@ -1,27 +1,15 @@
|
||||
# frozen_string_literal: true
|
||||
source "https://rubygems.org"
|
||||
|
||||
gemspec
|
||||
|
||||
group :development, :test do
|
||||
group :test do
|
||||
gem "rake"
|
||||
gem "bundler"
|
||||
gem "overcommit", ">= 0.31"
|
||||
gem "rubocop", ">= 0.43"
|
||||
end
|
||||
|
||||
group :development do
|
||||
gem "bump"
|
||||
end
|
||||
|
||||
group :test do
|
||||
gem "rubocop"
|
||||
gem "overcommit"
|
||||
gem "coveralls", "~>0.8", require: false
|
||||
gem "simplecov", "~>0.10", require: false
|
||||
gem "codeclimate-test-reporter", "~>0.4"
|
||||
if RUBY_VERSION > "2"
|
||||
gem "json", "~> 2.0", ">= 2.0.2"
|
||||
else
|
||||
gem "json"
|
||||
end
|
||||
gem "rspec", "< 4"
|
||||
# JSON 2.0.1 is ruby 2.0+
|
||||
gem "json", "< 2.0"
|
||||
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)
|
||||
[](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 
|
||||
==================
|
||||
@@ -24,7 +23,7 @@ GitHub Changelog Generator 
|
||||
|
||||
### 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:
|
||||
|
||||
@@ -37,9 +36,7 @@ Because software tools are for people. If you don’t care, why are you contribu
|
||||
|
||||
## Installation
|
||||
|
||||
gem install github_changelog_generator
|
||||
|
||||
See also Troubleshooting.
|
||||
[sudo] gem install github_changelog_generator
|
||||
|
||||
## 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.
|
||||
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
|
||||
|
||||
1. Create an issue and describe your idea
|
||||
|
||||
3
Rakefile
3
Rakefile
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
require "bundler"
|
||||
require "bundler/gem_tasks"
|
||||
require "rubocop/rake_task"
|
||||
@@ -37,4 +36,4 @@ task :copy_man_page_to_manpath do |_t|
|
||||
end
|
||||
|
||||
task checks: [:rubocop, :rspec]
|
||||
task default: [:rubocop, :rspec]
|
||||
task default: [:copy_man_page_to_manpath]
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#! /usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
require_relative "../lib/github_changelog_generator"
|
||||
GitHubChangelogGenerator::ChangelogGenerator.new.run
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#! /usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
require_relative "../lib/github_changelog_generator"
|
||||
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
|
||||
# frozen_string_literal: true
|
||||
lib = File.expand_path("../lib", __FILE__)
|
||||
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
||||
require "github_changelog_generator/version"
|
||||
@@ -25,6 +24,11 @@ Gem::Specification.new do |spec|
|
||||
spec.require_paths = ["lib"]
|
||||
|
||||
spec.add_runtime_dependency "rake", ">= 10.0"
|
||||
spec.add_runtime_dependency "github_api", ">= 0.14"
|
||||
spec.add_runtime_dependency "rainbow", ">= 2.1"
|
||||
spec.add_runtime_dependency "github_api", ">= 0.12"
|
||||
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
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "github_api"
|
||||
require "json"
|
||||
require "colorize"
|
||||
require "benchmark"
|
||||
|
||||
require_relative "github_changelog_generator/helper"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
module GitHubChangelogGenerator
|
||||
# A Fetcher responsible for all requests to GitHub and all basic manipulation with related data
|
||||
# (such as filtering, validating, e.t.c)
|
||||
@@ -8,7 +7,6 @@ module GitHubChangelogGenerator
|
||||
|
||||
class Fetcher
|
||||
PER_PAGE_NUMBER = 30
|
||||
MAX_SIMULTANEOUS_REQUESTS = 25
|
||||
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 " \
|
||||
"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
|
||||
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
|
||||
end
|
||||
@@ -54,11 +52,11 @@ module GitHubChangelogGenerator
|
||||
begin
|
||||
value = yield
|
||||
rescue Github::Error::Unauthorized => e
|
||||
Helper.log.error e.response_message
|
||||
Helper.log.error e.body.red
|
||||
abort "Error: wrong GitHub token"
|
||||
rescue Github::Error::Forbidden => e
|
||||
Helper.log.warn e.response_message
|
||||
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG
|
||||
Helper.log.warn e.body.red
|
||||
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
|
||||
end
|
||||
value
|
||||
end
|
||||
@@ -77,9 +75,9 @@ module GitHubChangelogGenerator
|
||||
end
|
||||
print_empty_line
|
||||
|
||||
if tags.empty?
|
||||
if tags.count == 0
|
||||
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
|
||||
Helper.log.info "Found #{tags.count} tags"
|
||||
end
|
||||
@@ -110,9 +108,8 @@ Make sure, that you push tags to remote repo via 'git push --tags'"
|
||||
print_empty_line
|
||||
Helper.log.info "Received issues: #{issues.count}"
|
||||
|
||||
rescue Github::Error::Forbidden => e
|
||||
Helper.log.warn e.error_messages.map { |m| m[:message] }.join(", ")
|
||||
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG
|
||||
rescue
|
||||
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
|
||||
end
|
||||
|
||||
# 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)
|
||||
end
|
||||
print_empty_line
|
||||
rescue Github::Error::Forbidden => e
|
||||
Helper.log.warn e.error_messages.map { |m| m[:message] }.join(", ")
|
||||
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG
|
||||
rescue
|
||||
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
|
||||
end
|
||||
|
||||
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]
|
||||
def fetch_events_async(issues)
|
||||
i = 0
|
||||
max_thread_number = 50
|
||||
threads = []
|
||||
issues.each_slice(MAX_SIMULTANEOUS_REQUESTS) do |issues_slice|
|
||||
issues.each_slice(max_thread_number) do |issues_slice|
|
||||
issues_slice.each do |issue|
|
||||
threads << Thread.new do
|
||||
begin
|
||||
@@ -182,9 +179,8 @@ Make sure, that you push tags to remote repo via 'git push --tags'"
|
||||
response.each_page do |page|
|
||||
issue[:events].concat(page)
|
||||
end
|
||||
rescue Github::Error::Forbidden => e
|
||||
Helper.log.warn e.error_messages.map { |m| m[:message] }.join(", ")
|
||||
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG
|
||||
rescue
|
||||
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
|
||||
end
|
||||
print_in_same_line("Fetching events for issues and PR: #{i + 1}/#{issues.count}")
|
||||
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],
|
||||
@options[:project],
|
||||
tag["commit"]["sha"]
|
||||
rescue Github::Error::Forbidden => e
|
||||
Helper.log.warn e.error_messages.map { |m| m[:message] }.join(", ")
|
||||
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG
|
||||
rescue
|
||||
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
|
||||
end
|
||||
time_string = commit_data["committer"]["date"]
|
||||
Time.parse(time_string)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
require_relative "../fetcher"
|
||||
require_relative "generator_generation"
|
||||
require_relative "generator_fetcher"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
module GitHubChangelogGenerator
|
||||
class Generator
|
||||
# Fetch event for issues and pull requests
|
||||
@@ -75,7 +74,7 @@ module GitHubChangelogGenerator
|
||||
commit = @fetcher.fetch_commit(event)
|
||||
issue[:actual_date] = commit[:author][:date]
|
||||
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]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
module GitHubChangelogGenerator
|
||||
class Generator
|
||||
# Main function to start change log generation
|
||||
@@ -40,10 +39,10 @@ module GitHubChangelogGenerator
|
||||
index2 = hash[tag2]
|
||||
log += generate_log_between_tags(all_tags[index1], all_tags[index2])
|
||||
else
|
||||
raise ChangelogGeneratorError, "Can't find tag #{tag2} -> exit"
|
||||
raise ChangelogGeneratorError, "Can't find tag #{tag2} -> exit".red
|
||||
end
|
||||
else
|
||||
raise ChangelogGeneratorError, "Can't find tag #{tag1} -> exit"
|
||||
raise ChangelogGeneratorError, "Can't find tag #{tag1} -> exit".red
|
||||
end
|
||||
log
|
||||
end
|
||||
@@ -142,7 +141,7 @@ module GitHubChangelogGenerator
|
||||
(1...filtered_tags.size).each do |index|
|
||||
log += generate_log_between_tags(filtered_tags[index], filtered_tags[index - 1])
|
||||
end
|
||||
if filtered_tags.any?
|
||||
if @filtered_tags.count != 0
|
||||
log += generate_log_between_tags(nil, filtered_tags.last)
|
||||
end
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
module GitHubChangelogGenerator
|
||||
class Generator
|
||||
# delete all labels with labels from @options[:exclude_labels] array
|
||||
@@ -131,14 +130,11 @@ module GitHubChangelogGenerator
|
||||
end
|
||||
|
||||
def filter_by_include_labels(issues)
|
||||
if @options[:include_labels].nil?
|
||||
issues
|
||||
else
|
||||
issues.select do |issue|
|
||||
labels = issue.labels.map(&:name) & @options[:include_labels]
|
||||
labels.any?
|
||||
end
|
||||
filtered_issues = @options[:include_labels].nil? ? issues : issues.select do |issue|
|
||||
labels = issue.labels.map(&:name) & @options[:include_labels]
|
||||
labels.any?
|
||||
end
|
||||
filtered_issues
|
||||
end
|
||||
|
||||
# General filtered function
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
module GitHubChangelogGenerator
|
||||
class Generator
|
||||
# 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
|
||||
# @return [Time] time of specified tag
|
||||
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"]
|
||||
time_for_name = @tag_times_hash[name_of_tag]
|
||||
@@ -100,7 +99,7 @@ module GitHubChangelogGenerator
|
||||
filtered_tags = all_tags
|
||||
tag = @options[:due_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 }
|
||||
last_index = all_tags.count - 1
|
||||
filtered_tags = if idx > 0 && idx < last_index
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
# frozen_string_literal: true
|
||||
require "logger"
|
||||
require "rainbow"
|
||||
|
||||
module GitHubChangelogGenerator
|
||||
module Helper
|
||||
# @return true if the currently running program is a unit test
|
||||
@@ -9,7 +6,6 @@ module GitHubChangelogGenerator
|
||||
defined? SpecHelper
|
||||
end
|
||||
|
||||
# :nocov:
|
||||
@log ||= if test?
|
||||
Logger.new(nil) # don't show any logs when running tests
|
||||
else
|
||||
@@ -17,16 +13,21 @@ module GitHubChangelogGenerator
|
||||
end
|
||||
@log.formatter = proc do |severity, _datetime, _progname, msg|
|
||||
string = "#{msg}\n"
|
||||
case severity
|
||||
when "DEBUG" then Rainbow(string).magenta
|
||||
when "INFO" then Rainbow(string).white
|
||||
when "WARN" then Rainbow(string).yellow
|
||||
when "ERROR" then Rainbow(string).red
|
||||
when "FATAL" then Rainbow(string).red.bright
|
||||
else string
|
||||
|
||||
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
|
||||
# :nocov:
|
||||
|
||||
# Logging happens using this method
|
||||
class << self
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
require "optparse"
|
||||
require "pp"
|
||||
require_relative "version"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
require "pathname"
|
||||
|
||||
module GitHubChangelogGenerator
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
#
|
||||
# Author:: Enrico Stahn <mail@enricostahn.com>
|
||||
#
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
require "rake"
|
||||
require "rake/tasklib"
|
||||
require "github_changelog_generator"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
module GitHubChangelogGenerator
|
||||
VERSION = "1.13.2"
|
||||
VERSION = "1.13.1"
|
||||
end
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
#
|
||||
# Author:: Enrico Stahn <mail@enricostahn.com>
|
||||
#
|
||||
@@ -29,9 +28,7 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
|
||||
SimpleCov::Formatter::HTMLFormatter,
|
||||
CodeClimate::TestReporter::Formatter
|
||||
])
|
||||
SimpleCov.start do
|
||||
add_filter "gemfiles/"
|
||||
end
|
||||
SimpleCov.start
|
||||
|
||||
require "github_changelog_generator"
|
||||
require "github_changelog_generator/task"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
VALID_TOKEN = "0123456789abcdef"
|
||||
INVALID_TOKEN = "0000000000000000"
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
module GitHubChangelogGenerator
|
||||
describe Generator do
|
||||
context "#exclude_issues_by_labels" do
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
describe GitHubChangelogGenerator::Generator do
|
||||
def tag_mash_with_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 ".github_changelog_generator" do
|
||||
let(:options) { {} }
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
describe GitHubChangelogGenerator::Parser do
|
||||
describe ".user_project_from_remote" do
|
||||
context "when remote is type 1" do
|
||||
@@ -64,10 +63,9 @@ describe GitHubChangelogGenerator::Parser do
|
||||
end
|
||||
end
|
||||
describe ".fetch_user_and_project" do
|
||||
before do
|
||||
stub_const("ARGV", ["https://github.com/skywinder/github-changelog-generator"])
|
||||
before :each do
|
||||
ARGV = ["https://github.com/skywinder/github-changelog-generator"]
|
||||
end
|
||||
|
||||
context do
|
||||
let(:valid_user) { "initialized_user" }
|
||||
let(:options) { { user: valid_user } }
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
#
|
||||
# Author:: Enrico Stahn <mail@enricostahn.com>
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user