Compare commits
146 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3253c278be | ||
|
|
29540ced2c | ||
|
|
8de9efbc35 | ||
|
|
7d5c954b28 | ||
|
|
63ece13cca | ||
|
|
fc831b746c | ||
|
|
7c14a112eb | ||
|
|
e42b747585 | ||
|
|
ceb1b5f843 | ||
|
|
01a254e412 | ||
|
|
aa677df3ca | ||
|
|
79f1b90ff8 | ||
|
|
8722a309e6 | ||
|
|
ce87cecb4a | ||
|
|
65b0ff8496 | ||
|
|
8d4ab6c09c | ||
|
|
42dbedabb7 | ||
|
|
1a19286ea0 | ||
|
|
cc653b6b21 | ||
|
|
9ce5c76d4a | ||
|
|
86ca388ecf | ||
|
|
9c6068f026 | ||
|
|
0dddc4a44c | ||
|
|
253fe49648 | ||
|
|
663d4d8c81 | ||
|
|
dcd50239c5 | ||
|
|
6a51c0b435 | ||
|
|
7b78c3f8d0 | ||
|
|
519ca91cd7 | ||
|
|
2e2cc16fe3 | ||
|
|
5c9c05ca19 | ||
|
|
507ffdb910 | ||
|
|
21d41756b8 | ||
|
|
17ceccdd70 | ||
|
|
61ec650801 | ||
|
|
6a0ade1194 | ||
|
|
e5a619b167 | ||
|
|
dd149d7ad9 | ||
|
|
1c37268c3d | ||
|
|
92a2e47436 | ||
|
|
cdc971e86f | ||
|
|
84d81a6456 | ||
|
|
61bfba69c5 | ||
|
|
11d85bff41 | ||
|
|
944ad69092 | ||
|
|
c798266695 | ||
|
|
170eb40f33 | ||
|
|
6d9fcf202e | ||
|
|
0fccc4396f | ||
|
|
068af037f5 | ||
|
|
4569fad479 | ||
|
|
c5a92b71b2 | ||
|
|
7c2b95d24b | ||
|
|
1a289c872d | ||
|
|
6b64d4e4a2 | ||
|
|
0b32484184 | ||
|
|
a997d2417d | ||
|
|
29b5ef3d53 | ||
|
|
2e8e2a62e1 | ||
|
|
15d92cea45 | ||
|
|
93df2d5646 | ||
|
|
deba7efa49 | ||
|
|
f9ad19285e | ||
|
|
5071b596d2 | ||
|
|
9150cdc09e | ||
|
|
669ac73466 | ||
|
|
c6b12454d9 | ||
|
|
1519d16cef | ||
|
|
655aa965a7 | ||
|
|
d0bd44e0c8 | ||
|
|
44bbd9ca01 | ||
|
|
a7ee304f20 | ||
|
|
42b3955c06 | ||
|
|
9cb03fa745 | ||
|
|
1391eefcd8 | ||
|
|
8e659072e8 | ||
|
|
ce68ab3685 | ||
|
|
d53bba3939 | ||
|
|
18aea22cd6 | ||
|
|
ce97e212c2 | ||
|
|
cd53e1cd9a | ||
|
|
677b0d8c50 | ||
|
|
8df1bbad13 | ||
|
|
86386ff7e6 | ||
|
|
197a438c09 | ||
|
|
8caa577686 | ||
|
|
d188facd92 | ||
|
|
f5bdd30d47 | ||
|
|
edb1fade20 | ||
|
|
542a0948fc | ||
|
|
aaa71d1ed0 | ||
|
|
11ea9eccb1 | ||
|
|
7ab1ee1c21 | ||
|
|
6fa2f2701e | ||
|
|
2bdaf31da7 | ||
|
|
6e8a9cb6ce | ||
|
|
867337b58e | ||
|
|
4687b0b025 | ||
|
|
eca1ffa418 | ||
|
|
7d92087f4a | ||
|
|
f1a6a79865 | ||
|
|
5b46a24f0b | ||
|
|
2a1e7daa1d | ||
|
|
c76cfd1920 | ||
|
|
d3ea8a1b0c | ||
|
|
7ea80547c5 | ||
|
|
b4dcd8a0d9 | ||
|
|
3d13f9c4b3 | ||
|
|
76df82fe0b | ||
|
|
12734dbbe1 | ||
|
|
d33dcced8f | ||
|
|
4a9f6fdd43 | ||
|
|
32f14e685b | ||
|
|
85d5352e6e | ||
|
|
637de14699 | ||
|
|
925f6fd3f0 | ||
|
|
568db9e519 | ||
|
|
9b7273f009 | ||
|
|
08cacdc5ec | ||
|
|
159173d86a | ||
|
|
c111488376 | ||
|
|
5bc90a32ae | ||
|
|
772e403e40 | ||
|
|
fe2162030b | ||
|
|
ee86b35068 | ||
|
|
93e29e8e81 | ||
|
|
5bff64de19 | ||
|
|
780ebdf0eb | ||
|
|
c5837ad9f0 | ||
|
|
17a1b23059 | ||
|
|
7205a060b3 | ||
|
|
471fe6f312 | ||
|
|
40df2c7dac | ||
|
|
aa87c803ca | ||
|
|
6962b5e7b2 | ||
|
|
407bf86e57 | ||
|
|
cff1e8c5ed | ||
|
|
8e9ff4cb8a | ||
|
|
3e045e3b42 | ||
|
|
0bfd702d21 | ||
|
|
c762f82917 | ||
|
|
b510b2c3fb | ||
|
|
f45dc26aba | ||
|
|
1bae4ea204 | ||
|
|
a676650993 | ||
|
|
40dec5346b |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -1 +1,7 @@
|
||||
bin/
|
||||
!bin/git-generate-changelog
|
||||
!bin/github_changelog_generator
|
||||
pkg/
|
||||
coverage/
|
||||
.bundle
|
||||
spec/*.lock
|
||||
|
||||
27
.travis.yml
27
.travis.yml
@@ -1,16 +1,27 @@
|
||||
sudo: false
|
||||
cache:
|
||||
- bundler
|
||||
language: ruby
|
||||
before_install:
|
||||
- gem update --system
|
||||
- gem install bundler
|
||||
before_install:
|
||||
- gem update --system
|
||||
- gem install bundler
|
||||
rvm:
|
||||
- 2.1.0
|
||||
script:
|
||||
- bundle exec rake checks
|
||||
- 2.1
|
||||
script: bundle exec rake checks
|
||||
matrix:
|
||||
include:
|
||||
# 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:
|
||||
- sky4winder+githubchangeloggenerator@gmail.com
|
||||
- sky4winder+githubchangeloggenerator@gmail.com
|
||||
on_success: never
|
||||
on_failure: change
|
||||
addons:
|
||||
|
||||
126
CHANGELOG.md
126
CHANGELOG.md
@@ -1,12 +1,134 @@
|
||||
# Change Log
|
||||
|
||||
## [1.10.3](https://github.com/skywinder/github-changelog-generator/tree/1.10.3) (2016-02-23)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.10.2...1.10.3)
|
||||
## [1.12.0](https://github.com/skywinder/github-changelog-generator/tree/1.12.0) (2016-04-01)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.11.8...1.12.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- .github\_changelog\_generator config file is not consistent with the internal options hash [\#312](https://github.com/skywinder/github-changelog-generator/issues/312)
|
||||
- Feature request: YAML front matter [\#276](https://github.com/skywinder/github-changelog-generator/issues/276)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Added tag exclusion with a filter \(string or regex\) [\#320](https://github.com/skywinder/github-changelog-generator/pull/320) ([soundstep](https://github.com/soundstep))
|
||||
|
||||
## [1.11.8](https://github.com/skywinder/github-changelog-generator/tree/1.11.8) (2016-03-22)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.11.7...1.11.8)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- ParserFile: Allow comments in settings file [\#358](https://github.com/skywinder/github-changelog-generator/pull/358) ([olleolleolle](https://github.com/olleolleolle))
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Error when specifying exclude\_labels [\#327](https://github.com/skywinder/github-changelog-generator/issues/327)
|
||||
- Parse options file options into arrays, integers, flags, and other [\#354](https://github.com/skywinder/github-changelog-generator/pull/354) ([olleolleolle](https://github.com/olleolleolle))
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Installation fails on Ubuntu [\#352](https://github.com/skywinder/github-changelog-generator/issues/352)
|
||||
- Test installing on Windows: use AppVeyor [\#348](https://github.com/skywinder/github-changelog-generator/issues/348)
|
||||
- Can't run under RubyGems 2.5.1 and Ruby 2.3.0 [\#325](https://github.com/skywinder/github-changelog-generator/issues/325)
|
||||
- Ruby 2.3.0 - Deprecation warning: Github::ResponseWrapper\#respond\_to?\(:to\_ary\) is old fashion which takes only one parameter [\#323](https://github.com/skywinder/github-changelog-generator/issues/323)
|
||||
- between-tags and exclude-tags do not work in .github\_changelog\_generator [\#317](https://github.com/skywinder/github-changelog-generator/issues/317)
|
||||
- Add a "documentation" label [\#284](https://github.com/skywinder/github-changelog-generator/issues/284)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Replace shelling-out-to-Git w/ Dir call [\#360](https://github.com/skywinder/github-changelog-generator/pull/360) ([olleolleolle](https://github.com/olleolleolle))
|
||||
- ParserFile: fail parsing with config file line number; use a File instead of a filename [\#357](https://github.com/skywinder/github-changelog-generator/pull/357) ([olleolleolle](https://github.com/olleolleolle))
|
||||
- On gem install, do not try to copy manpage files in the "extensions" step [\#356](https://github.com/skywinder/github-changelog-generator/pull/356) ([olleolleolle](https://github.com/olleolleolle))
|
||||
- Refactor: call it option\_name, instead of key\_sym [\#355](https://github.com/skywinder/github-changelog-generator/pull/355) ([olleolleolle](https://github.com/olleolleolle))
|
||||
- Add a `bundle install` test [\#353](https://github.com/skywinder/github-changelog-generator/pull/353) ([jkeiser](https://github.com/jkeiser))
|
||||
- Add an AppVeyor config [\#350](https://github.com/skywinder/github-changelog-generator/pull/350) ([Arcanemagus](https://github.com/Arcanemagus))
|
||||
- README: Document GitHub token URI scope [\#345](https://github.com/skywinder/github-changelog-generator/pull/345) ([olleolleolle](https://github.com/olleolleolle))
|
||||
|
||||
## [1.11.7](https://github.com/skywinder/github-changelog-generator/tree/1.11.7) (2016-03-04)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.11.6...1.11.7)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Add Olle Jonsson as co-author [\#347](https://github.com/skywinder/github-changelog-generator/pull/347) ([skywinder](https://github.com/skywinder))
|
||||
- Gemspec, default date [\#346](https://github.com/skywinder/github-changelog-generator/pull/346) ([olleolleolle](https://github.com/olleolleolle))
|
||||
|
||||
## [1.11.6](https://github.com/skywinder/github-changelog-generator/tree/1.11.6) (2016-03-01)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.11.5...1.11.6)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Can't build on Windows [\#340](https://github.com/skywinder/github-changelog-generator/issues/340)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- install error "Not a git repository" [\#339](https://github.com/skywinder/github-changelog-generator/issues/339)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Gemspec: Calculate date using Date stdlib [\#343](https://github.com/skywinder/github-changelog-generator/pull/343) ([olleolleolle](https://github.com/olleolleolle))
|
||||
|
||||
## [1.11.5](https://github.com/skywinder/github-changelog-generator/tree/1.11.5) (2016-03-01)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.11.4...1.11.5)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Test clean install in Travis [\#344](https://github.com/skywinder/github-changelog-generator/pull/344) ([jkeiser](https://github.com/jkeiser))
|
||||
- Update Rakefile to avoid install-breaking bug [\#341](https://github.com/skywinder/github-changelog-generator/pull/341) ([olleolleolle](https://github.com/olleolleolle))
|
||||
|
||||
## [1.11.4](https://github.com/skywinder/github-changelog-generator/tree/1.11.4) (2016-02-26)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.11.3...1.11.4)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Man page copying: only copy .1 [\#338](https://github.com/skywinder/github-changelog-generator/pull/338) ([olleolleolle](https://github.com/olleolleolle))
|
||||
|
||||
## [1.11.3](https://github.com/skywinder/github-changelog-generator/tree/1.11.3) (2016-02-25)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.11.2...1.11.3)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Cannot install gem [\#335](https://github.com/skywinder/github-changelog-generator/issues/335)
|
||||
|
||||
## [1.11.2](https://github.com/skywinder/github-changelog-generator/tree/1.11.2) (2016-02-25)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.11.1...1.11.2)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Getting an error on install [\#329](https://github.com/skywinder/github-changelog-generator/issues/329)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Fix installation by not running the specs - which have dependencies [\#337](https://github.com/skywinder/github-changelog-generator/pull/337) ([skywinder](https://github.com/skywinder))
|
||||
|
||||
## [1.11.1](https://github.com/skywinder/github-changelog-generator/tree/1.11.1) (2016-02-25)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.11.0...1.11.1)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Add rubocop and rspec as runtime dependencies [\#336](https://github.com/skywinder/github-changelog-generator/pull/336) ([jkeiser](https://github.com/jkeiser))
|
||||
- \[Refactor\] ParserFile class use Pathname [\#334](https://github.com/skywinder/github-changelog-generator/pull/334) ([olleolleolle](https://github.com/olleolleolle))
|
||||
- \[Refactor\] Generator\#exclude\_issues\_by\_labels simpler, tested [\#332](https://github.com/skywinder/github-changelog-generator/pull/332) ([olleolleolle](https://github.com/olleolleolle))
|
||||
|
||||
## [1.11.0](https://github.com/skywinder/github-changelog-generator/tree/1.11.0) (2016-02-24)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.10.5...1.11.0)
|
||||
|
||||
## [1.10.5](https://github.com/skywinder/github-changelog-generator/tree/1.10.5) (2016-02-24)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.10.4...1.10.5)
|
||||
|
||||
## [1.10.4](https://github.com/skywinder/github-changelog-generator/tree/1.10.4) (2016-02-24)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.10.3...1.10.4)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Rake and Bundler as runtime deps [\#333](https://github.com/skywinder/github-changelog-generator/pull/333) ([olleolleolle](https://github.com/olleolleolle))
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Test case for \#327 [\#331](https://github.com/skywinder/github-changelog-generator/pull/331) ([olleolleolle](https://github.com/olleolleolle))
|
||||
- Fix crash installing on systems without overcommit [\#330](https://github.com/skywinder/github-changelog-generator/pull/330) ([jkeiser](https://github.com/jkeiser))
|
||||
|
||||
## [1.10.3](https://github.com/skywinder/github-changelog-generator/tree/1.10.3) (2016-02-23)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/1.10.2...1.10.3)
|
||||
|
||||
## [1.10.2](https://github.com/skywinder/github-changelog-generator/tree/1.10.2) (2016-02-23)
|
||||
[Full Changelog](https://github.com/skywinder/github-changelog-generator/compare/v1.11.0...1.10.2)
|
||||
|
||||
|
||||
4
Gemfile
4
Gemfile
@@ -3,6 +3,10 @@ source "https://rubygems.org"
|
||||
gemspec
|
||||
|
||||
group :test do
|
||||
gem "rake"
|
||||
gem "bundler"
|
||||
gem "rubocop"
|
||||
gem "overcommit"
|
||||
gem "coveralls", "~>0.8", require: false
|
||||
gem "simplecov", "~>0.10", require: false
|
||||
gem "codeclimate-test-reporter", "~>0.4"
|
||||
|
||||
37
Gemfile.lock
37
Gemfile.lock
@@ -1,14 +1,10 @@
|
||||
PATH
|
||||
remote: .
|
||||
specs:
|
||||
github_changelog_generator (1.11.0)
|
||||
bundler (>= 1.7)
|
||||
github_changelog_generator (1.12.0)
|
||||
colorize (~> 0.7)
|
||||
github_api (~> 0.12)
|
||||
overcommit (>= 0.31)
|
||||
rake (>= 10.0)
|
||||
rspec (>= 3.2)
|
||||
rubocop (>= 0.31)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
@@ -17,10 +13,10 @@ GEM
|
||||
ast (2.2.0)
|
||||
childprocess (0.5.9)
|
||||
ffi (~> 1.0, >= 1.0.11)
|
||||
codeclimate-test-reporter (0.4.8)
|
||||
codeclimate-test-reporter (0.5.0)
|
||||
simplecov (>= 0.7.1, < 1.0.0)
|
||||
colorize (0.7.7)
|
||||
coveralls (0.8.11)
|
||||
coveralls (0.8.13)
|
||||
json (~> 1.8)
|
||||
simplecov (~> 0.11.0)
|
||||
term-ansicolor (~> 1.3)
|
||||
@@ -40,11 +36,11 @@ GEM
|
||||
hashie (>= 3.4)
|
||||
multi_json (>= 1.7.5, < 2.0)
|
||||
oauth2
|
||||
hashie (3.4.3)
|
||||
hashie (3.4.4)
|
||||
iniparse (1.4.2)
|
||||
json (1.8.3)
|
||||
jwt (1.5.1)
|
||||
multi_json (1.11.2)
|
||||
multi_json (1.12.0)
|
||||
multi_xml (0.5.5)
|
||||
multipart-post (2.0.0)
|
||||
oauth2 (1.1.0)
|
||||
@@ -53,20 +49,20 @@ GEM
|
||||
multi_json (~> 1.3)
|
||||
multi_xml (~> 0.5)
|
||||
rack (>= 1.2, < 3)
|
||||
overcommit (0.32.0)
|
||||
overcommit (0.33.0)
|
||||
childprocess (~> 0.5.8)
|
||||
iniparse (~> 1.4)
|
||||
parser (2.3.0.6)
|
||||
parser (2.3.1.0)
|
||||
ast (~> 2.2)
|
||||
powerpack (0.1.1)
|
||||
rack (1.6.4)
|
||||
rainbow (2.1.0)
|
||||
rake (10.5.0)
|
||||
rake (11.1.2)
|
||||
rspec (3.4.0)
|
||||
rspec-core (~> 3.4.0)
|
||||
rspec-expectations (~> 3.4.0)
|
||||
rspec-mocks (~> 3.4.0)
|
||||
rspec-core (3.4.3)
|
||||
rspec-core (3.4.4)
|
||||
rspec-support (~> 3.4.0)
|
||||
rspec-expectations (3.4.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
@@ -75,13 +71,13 @@ GEM
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.4.0)
|
||||
rspec-support (3.4.1)
|
||||
rubocop (0.37.2)
|
||||
parser (>= 2.3.0.4, < 3.0)
|
||||
rubocop (0.39.0)
|
||||
parser (>= 2.3.0.7, < 3.0)
|
||||
powerpack (~> 0.1)
|
||||
rainbow (>= 1.99.1, < 3.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (~> 0.3)
|
||||
ruby-progressbar (1.7.5)
|
||||
unicode-display_width (~> 1.0, >= 1.0.1)
|
||||
ruby-progressbar (1.8.0)
|
||||
simplecov (0.11.2)
|
||||
docile (~> 1.1.0)
|
||||
json (~> 1.8)
|
||||
@@ -92,15 +88,20 @@ GEM
|
||||
thor (0.19.1)
|
||||
thread_safe (0.3.5)
|
||||
tins (1.6.0)
|
||||
unicode-display_width (0.3.1)
|
||||
unicode-display_width (1.0.5)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
bundler
|
||||
codeclimate-test-reporter (~> 0.4)
|
||||
coveralls (~> 0.8)
|
||||
github_changelog_generator!
|
||||
overcommit
|
||||
rake
|
||||
rspec (>= 3.2)
|
||||
rubocop
|
||||
simplecov (~> 0.10)
|
||||
|
||||
BUNDLED WITH
|
||||
|
||||
9
LICENSE
Normal file
9
LICENSE
Normal file
@@ -0,0 +1,9 @@
|
||||
The MIT License (MIT)
|
||||
Copyright (c) 2016 Petr Korolev
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
@@ -101,7 +101,7 @@ Therefore, it's recommended to run this script with authentication by using a **
|
||||
|
||||
Here's how:
|
||||
|
||||
- [Generate a token here](https://github.com/settings/tokens/new?description=GitHub%20Changelog%20Generator%20token)
|
||||
- [Generate a token here](https://github.com/settings/tokens/new?description=GitHub%20Changelog%20Generator%20token) - you only need "repo" scope for private repositories
|
||||
- Either:
|
||||
- Run the script with `--token <your-40-digit-token>`; **OR**
|
||||
- Set the `CHANGELOG_GITHUB_TOKEN` environment variable to your 40 digit token
|
||||
|
||||
28
Rakefile
28
Rakefile
@@ -9,15 +9,31 @@ require "overcommit"
|
||||
RuboCop::RakeTask.new
|
||||
RSpec::Core::RakeTask.new(:rspec)
|
||||
|
||||
task :create_man do |_t|
|
||||
os_prefix = "/usr/local"
|
||||
man_prefix = Pathname("#{os_prefix}/share/man/man1")
|
||||
man_pages = "man/git-*"
|
||||
task :copy_man_page_to_manpath do |_t|
|
||||
known_manpath_paths = %w(/etc/manpath.config /etc/manpaths)
|
||||
manpath = known_manpath_paths.find do |f|
|
||||
path = Pathname(f)
|
||||
path.file? && path.readable?
|
||||
end
|
||||
|
||||
next unless manpath
|
||||
|
||||
writable_man_path = Pathname(manpath).each_line.find do |line|
|
||||
path = Pathname(line.chomp)
|
||||
path.directory? && path.writable?
|
||||
end
|
||||
|
||||
next unless writable_man_path
|
||||
|
||||
man_prefix = Pathname("#{writable_man_path.chomp}/man1")
|
||||
man_pages = "man/git-*.1"
|
||||
|
||||
Pathname.glob(man_pages) do |path|
|
||||
FileUtils.cp(path, man_prefix + path.basename)
|
||||
if path.exist? && man_prefix.exist? && man_prefix.writable?
|
||||
FileUtils.cp(path, man_prefix + path.basename)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
task checks: [:rubocop, :rspec]
|
||||
task default: [:checks, :create_man]
|
||||
task default: [:copy_man_page_to_manpath]
|
||||
|
||||
50
appveyor.yml
Normal file
50
appveyor.yml
Normal file
@@ -0,0 +1,50 @@
|
||||
version: "{build}"
|
||||
|
||||
platform: x64
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
clone_depth: 10
|
||||
|
||||
skip_tags: true
|
||||
|
||||
# See here for Ruby versions pre-installed:
|
||||
# http://www.appveyor.com/docs/installed-software#ruby
|
||||
environment:
|
||||
matrix:
|
||||
- ruby_version: "21" # Older version, but matches Travis-CI
|
||||
- ruby_version: "21-x64"
|
||||
|
||||
install:
|
||||
- SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
|
||||
|
||||
# Print version and location for pre-installed ruby
|
||||
- ruby --version
|
||||
- where ruby
|
||||
|
||||
# Install latest version of RubyGems
|
||||
- gem update --system --no-document --no-post-install-message
|
||||
- gem --version
|
||||
- where gem
|
||||
|
||||
# Print version and location for pre-installed bundler
|
||||
- bundler --version
|
||||
- where bundler
|
||||
|
||||
build_script:
|
||||
# Install ruby dependencies
|
||||
- bundle install --retry 3
|
||||
- bundle exec rake checks
|
||||
|
||||
test_script:
|
||||
- gem build github_changelog_generator
|
||||
- gem install *.gem
|
||||
|
||||
notifications:
|
||||
- provider: Email
|
||||
to:
|
||||
- sky4winder+githubchangeloggenerator@gmail.com
|
||||
on_build_success: false
|
||||
on_build_status_changed: true
|
||||
@@ -1,5 +1,4 @@
|
||||
# coding: utf-8
|
||||
|
||||
lib = File.expand_path("../lib", __FILE__)
|
||||
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
||||
require "github_changelog_generator/version"
|
||||
@@ -10,25 +9,26 @@ Gem::Specification.new do |spec|
|
||||
spec.default_executable = "github_changelog_generator"
|
||||
|
||||
spec.required_ruby_version = ">= 1.9.3"
|
||||
spec.authors = ["Petr Korolev"]
|
||||
spec.authors = ["Petr Korolev", "Olle Jonsson"]
|
||||
spec.email = "sky4winder+github_changelog_generator@gmail.com"
|
||||
spec.date = `date +"%Y-%m-%d"`.strip!
|
||||
|
||||
spec.summary = "Script, that automatically generate changelog from your tags, issues, labels and pull requests."
|
||||
spec.description = "Changelog generation has never been so easy. Fully automate changelog generation - this gem generate change log file based on tags, issues and merged pull requests from Github issue tracker."
|
||||
spec.homepage = "https://github.com/skywinder/Github-Changelog-Generator"
|
||||
spec.license = "MIT"
|
||||
spec.extensions = ["Rakefile"]
|
||||
|
||||
spec.files = `git ls-files -z`.split("\x0")
|
||||
spec.files = Dir["{bin,lib,man,spec}/**/*"] + %w(LICENSE Rakefile README.md)
|
||||
|
||||
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
||||
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
||||
spec.require_paths = ["lib"]
|
||||
|
||||
spec.add_runtime_dependency "rake", ">= 10.0"
|
||||
spec.add_runtime_dependency "bundler", ">= 1.7"
|
||||
spec.add_runtime_dependency("github_api", ["~> 0.12"])
|
||||
spec.add_runtime_dependency("colorize", ["~> 0.7"])
|
||||
spec.add_runtime_dependency("overcommit", ">= 0.31")
|
||||
spec.add_runtime_dependency("rubocop", ">= 0.31")
|
||||
spec.add_runtime_dependency("rspec", ">= 3.2")
|
||||
|
||||
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
|
||||
|
||||
@@ -54,13 +54,14 @@ module GitHubChangelogGenerator
|
||||
|
||||
# @return [Object] try to find newest tag using #Reader and :base option if specified otherwise returns nil
|
||||
def detect_since_tag
|
||||
@since_tag ||= @options[:since_tag]
|
||||
if @since_tag.nil? && @options[:base] && File.file?(@options[:base])
|
||||
reader = GitHubChangelogGenerator::Reader.new
|
||||
content = reader.read(@options[:base])
|
||||
@since_tag = content[0]["version"] if content.count && content
|
||||
end
|
||||
@since_tag
|
||||
@since_tag ||= @options.fetch(:since_tag) { version_of_first_item }
|
||||
end
|
||||
|
||||
def version_of_first_item
|
||||
return unless File.file?(@options[:base].to_s)
|
||||
|
||||
sections = GitHubChangelogGenerator::Reader.new.read(@options[:base])
|
||||
sections.first["version"] if sections && sections.any?
|
||||
end
|
||||
|
||||
# Return tags after filtering tags in lists provided by option: --between-tags & --exclude-tags
|
||||
@@ -129,26 +130,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
|
||||
|
||||
@@ -3,34 +3,59 @@ require "pathname"
|
||||
module GitHubChangelogGenerator
|
||||
ParserError = Class.new(StandardError)
|
||||
|
||||
# ParserFile is a configuration file reader which sets options in the
|
||||
# given Hash.
|
||||
#
|
||||
# In your project's root, you can put a file named
|
||||
# <tt>.github_changelog_generator</tt> to override defaults.
|
||||
#
|
||||
# Example:
|
||||
# header_label=# My Super Changelog
|
||||
# ; Comments are allowed
|
||||
# future-release=5.0.0
|
||||
# # Ruby-style comments, too
|
||||
# since-tag=1.0.0
|
||||
#
|
||||
# The configuration format is <tt>some-key=value</tt> or <tt>some_key=value</tt>.
|
||||
#
|
||||
class ParserFile
|
||||
FILENAME = ".github_changelog_generator"
|
||||
|
||||
def initialize(options)
|
||||
# @param options [Hash] options to be configured from file contents
|
||||
# @param file [nil,IO] configuration file handle, defaults to opening `.github_changelog_generator`
|
||||
def initialize(options, file = open_settings_file)
|
||||
@options = options
|
||||
@file = file
|
||||
end
|
||||
|
||||
# Destructively change @options using data in configured options file.
|
||||
# Sets options using configuration file content
|
||||
def parse!
|
||||
file.each_line { |line| parse_line!(line) } if file.exist?
|
||||
return unless @file
|
||||
@file.each_with_index { |line, i| parse_line!(line, i + 1) }
|
||||
@file.close
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def file
|
||||
@file ||= Pathname(File.expand_path(@options[:params_file] || FILENAME))
|
||||
FILENAME = ".github_changelog_generator"
|
||||
|
||||
def open_settings_file
|
||||
path = Pathname(File.expand_path(FILENAME))
|
||||
File.open(path) if path.exist?
|
||||
end
|
||||
|
||||
def parse_line!(line)
|
||||
key_sym, value = extract_pair(line)
|
||||
value = true if value =~ /^(true|t|yes|y|1)$/i
|
||||
value = false if value =~ /^(false|f|no|n|0)$/i
|
||||
@options[key_sym] = value
|
||||
def parse_line!(line, line_number)
|
||||
return if non_configuration_line?(line)
|
||||
option_name, value = extract_pair(line)
|
||||
@options[option_key_for(option_name)] = convert_value(value, option_name)
|
||||
rescue
|
||||
raise ParserError, "Config file #{file} is incorrect in line \"#{line.gsub(/[\n\r]+/, '')}\""
|
||||
raise ParserError, "Failed on line ##{line_number}: \"#{line.gsub(/[\n\r]+/, '')}\""
|
||||
end
|
||||
|
||||
# Returns a the setting as a symbol and its string value sans newlines.
|
||||
# Returns true if the line starts with a pound sign or a semi-colon.
|
||||
def non_configuration_line?(line)
|
||||
line =~ /^[\#;]/ || line =~ /^[\s]+$/
|
||||
end
|
||||
|
||||
# Returns a the option name as a symbol and its string value sans newlines.
|
||||
#
|
||||
# @param line [String] unparsed line from config file
|
||||
# @return [Array<Symbol, String>]
|
||||
@@ -38,5 +63,41 @@ module GitHubChangelogGenerator
|
||||
key, value = line.split("=", 2)
|
||||
[key.sub("-", "_").to_sym, value.gsub(/[\n\r]+/, "")]
|
||||
end
|
||||
|
||||
KNOWN_ARRAY_KEYS = [:exclude_labels, :include_labels, :bug_labels,
|
||||
:enhancement_labels, :between_tags, :exclude_tags]
|
||||
KNOWN_INTEGER_KEYS = [:max_issues]
|
||||
|
||||
def convert_value(value, option_name)
|
||||
if KNOWN_ARRAY_KEYS.include?(option_name)
|
||||
value.split(",")
|
||||
elsif KNOWN_INTEGER_KEYS.include?(option_name)
|
||||
value.to_i
|
||||
elsif value =~ /^(true|t|yes|y|1)$/i
|
||||
true
|
||||
elsif value =~ /^(false|f|no|n|0)$/i
|
||||
false
|
||||
else
|
||||
value
|
||||
end
|
||||
end
|
||||
|
||||
IRREGULAR_OPTIONS = {
|
||||
bugs_label: :bug_prefix,
|
||||
enhancement_label: :enhancement_prefix,
|
||||
issues_label: :issue_prefix,
|
||||
header_label: :header,
|
||||
front_matter: :frontmatter,
|
||||
pr_label: :merge_prefix,
|
||||
issues_wo_labels: :add_issues_wo_labels,
|
||||
pr_wo_labels: :add_pr_wo_labels,
|
||||
pull_requests: :pulls,
|
||||
filter_by_milestone: :filter_issues_by_milestone,
|
||||
github_api: :github_endpoint
|
||||
}
|
||||
|
||||
def option_key_for(option_name)
|
||||
IRREGULAR_OPTIONS.fetch(option_name) { option_name }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
module GitHubChangelogGenerator
|
||||
VERSION = "1.11.1"
|
||||
VERSION = "1.12.1"
|
||||
end
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
exclude-labels=73a91042-da6f-11e5-9335-1040f38d7f90,7adf83b4-da6f-11e5-ae18-1040f38d7f90
|
||||
@@ -1,2 +0,0 @@
|
||||
unreleased_label: staging
|
||||
unreleased: false
|
||||
@@ -1,3 +0,0 @@
|
||||
unreleased_label=staging
|
||||
unreleased=false
|
||||
header==== Changelog ===
|
||||
3
spec/install-gem-in-bundler.gemfile
Normal file
3
spec/install-gem-in-bundler.gemfile
Normal file
@@ -0,0 +1,3 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "github_changelog_generator", path: Dir.glob("../pkg/github_changelog_generator-*.gem")[0]
|
||||
@@ -1,19 +1,14 @@
|
||||
def tag_mash_with_name(tag)
|
||||
mash_tag = Hashie::Mash.new
|
||||
mash_tag.name = tag
|
||||
mash_tag
|
||||
end
|
||||
|
||||
def tags_mash_from_strings(tags_strings)
|
||||
mash_array = []
|
||||
tags_strings.each do |tag|
|
||||
mash_tag = tag_mash_with_name(tag)
|
||||
mash_array << mash_tag
|
||||
end
|
||||
mash_array
|
||||
end
|
||||
|
||||
describe GitHubChangelogGenerator::Generator do
|
||||
def tag_mash_with_name(tag)
|
||||
Hashie::Mash.new.tap { |mash_tag| mash_tag.name = tag }
|
||||
end
|
||||
|
||||
def tags_mash_from_strings(tags_strings)
|
||||
tags_strings.map do |tag|
|
||||
tag_mash_with_name(tag)
|
||||
end
|
||||
end
|
||||
|
||||
describe "#filter_between_tags" do
|
||||
context "when between_tags nil" do
|
||||
before do
|
||||
@@ -76,31 +71,47 @@ describe GitHubChangelogGenerator::Generator do
|
||||
describe "#filter_excluded_tags" do
|
||||
subject { generator.filter_excluded_tags(tags_mash_from_strings(%w(1 2 3))) }
|
||||
|
||||
context "with valid excluded tags" do
|
||||
context "with matching string" do
|
||||
let(:generator) { GitHubChangelogGenerator::Generator.new(exclude_tags: %w(3)) }
|
||||
it { is_expected.to be_a Array }
|
||||
it { is_expected.to match_array(tags_mash_from_strings(%w(1 2))) }
|
||||
end
|
||||
|
||||
context "with invalid excluded tags" do
|
||||
context "with non-matching string" do
|
||||
let(:generator) { GitHubChangelogGenerator::Generator.new(exclude_tags: %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
|
||||
|
||||
context "with regex exclude_tags" do
|
||||
context "with matching regex" do
|
||||
let(:generator) { GitHubChangelogGenerator::Generator.new(exclude_tags: /[23]/) }
|
||||
it { is_expected.to be_a Array }
|
||||
it { is_expected.to match_array(tags_mash_from_strings(%w(1))) }
|
||||
end
|
||||
|
||||
context "with non-matching regex in exclude_tags" do
|
||||
context "with non-matching regex" do
|
||||
let(:generator) { GitHubChangelogGenerator::Generator.new(exclude_tags: /[abc]/) }
|
||||
it { is_expected.to be_a Array }
|
||||
it { is_expected.to match_array(tags_mash_from_strings(%w(1 2 3))) }
|
||||
end
|
||||
end
|
||||
|
||||
describe "#filter_excluded_tags_regex" do
|
||||
subject { generator.filter_excluded_tags(tags_mash_from_strings(%w(1 2 3))) }
|
||||
|
||||
context "with matching regex" do
|
||||
let(:generator) { GitHubChangelogGenerator::Generator.new(exclude_tags_regex: "[23]") }
|
||||
it { is_expected.to be_a Array }
|
||||
it { is_expected.to match_array(tags_mash_from_strings(%w(1))) }
|
||||
end
|
||||
|
||||
context "with non-matching regex" do
|
||||
let(:generator) { GitHubChangelogGenerator::Generator.new(exclude_tags_regex: "[45]") }
|
||||
it { is_expected.to be_a Array }
|
||||
it { is_expected.to match_array(tags_mash_from_strings(%w(1 2 3))) }
|
||||
end
|
||||
end
|
||||
|
||||
describe "#filter_since_tag" do
|
||||
context "with filled array" do
|
||||
subject { generator.filter_since_tag(tags_mash_from_strings(%w(1 2 3))) }
|
||||
@@ -190,7 +201,7 @@ describe GitHubChangelogGenerator::Generator do
|
||||
@generator.instance_variable_set :@fetcher, mock
|
||||
end
|
||||
subject do
|
||||
of_tag = @generator.get_time_of_tag tag_mash_with_name("valid_tag")
|
||||
of_tag = @generator.get_time_of_tag(tag_mash_with_name("valid_tag"))
|
||||
of_tag
|
||||
end
|
||||
it { is_expected.to be_a_kind_of(Time) }
|
||||
@@ -199,31 +210,32 @@ describe GitHubChangelogGenerator::Generator do
|
||||
end
|
||||
|
||||
describe "#sort_tags_by_date" do
|
||||
time1 = Time.now
|
||||
time2 = Time.now
|
||||
time3 = Time.now
|
||||
let(:time1) { Time.now }
|
||||
let(:time2) { Time.now }
|
||||
let(:time3) { Time.now }
|
||||
|
||||
before(:all) do
|
||||
@generator = GitHubChangelogGenerator::Generator.new
|
||||
end
|
||||
|
||||
before do
|
||||
@generator.instance_variable_set(:@tag_times_hash, "valid_tag1" => time1,
|
||||
"valid_tag2" => time2,
|
||||
"valid_tag3" => time3)
|
||||
end
|
||||
|
||||
subject do
|
||||
@generator.sort_tags_by_date(tags)
|
||||
end
|
||||
context "sort unsorted tags" do
|
||||
tags = tags_mash_from_strings %w(valid_tag1 valid_tag2 valid_tag3)
|
||||
before do
|
||||
@generator.instance_variable_set :@tag_times_hash, "valid_tag1" => time1, "valid_tag2" => time2, "valid_tag3" => time3
|
||||
end
|
||||
subject do
|
||||
@generator.sort_tags_by_date tags
|
||||
end
|
||||
let(:tags) { tags_mash_from_strings %w(valid_tag1 valid_tag2 valid_tag3) }
|
||||
|
||||
it { is_expected.to be_a_kind_of(Array) }
|
||||
it { is_expected.to match_array(tags.reverse!) }
|
||||
end
|
||||
context "sort sorted tags" do
|
||||
tags = tags_mash_from_strings %w(valid_tag3 valid_tag2 valid_tag1)
|
||||
before do
|
||||
@generator.instance_variable_set :@tag_times_hash, "valid_tag1" => time1, "valid_tag2" => time2, "valid_tag3" => time3
|
||||
end
|
||||
subject do
|
||||
@generator.sort_tags_by_date tags
|
||||
end
|
||||
let(:tags) { tags_mash_from_strings %w(valid_tag3 valid_tag2 valid_tag1) }
|
||||
|
||||
it { is_expected.to be_a_kind_of(Array) }
|
||||
it { is_expected.to match_array(tags) }
|
||||
end
|
||||
|
||||
@@ -1,36 +1,47 @@
|
||||
describe GitHubChangelogGenerator::ParserFile do
|
||||
describe ".github_changelog_generator" do
|
||||
context "when no has file" do
|
||||
let(:options) { {} }
|
||||
let(:parse) { GitHubChangelogGenerator::ParserFile.new(options) }
|
||||
subject { parse.parse! }
|
||||
let(:options) { {} }
|
||||
|
||||
context "when the well-known default file does not exist" do
|
||||
let(:parser) { GitHubChangelogGenerator::ParserFile.new(options) }
|
||||
subject { parser.parse! }
|
||||
it { is_expected.to be_nil }
|
||||
end
|
||||
|
||||
context "when file is empty" do
|
||||
let(:options) { { params_file: "spec/files/github_changelog_params_empty" } }
|
||||
let(:parse) { GitHubChangelogGenerator::ParserFile.new(options) }
|
||||
let(:parser) { GitHubChangelogGenerator::ParserFile.new(options, StringIO.new("")) }
|
||||
|
||||
it "does not change the options" do
|
||||
expect { parse.parse! }.to_not change { options }
|
||||
expect { parser.parse! }.to_not change { options }
|
||||
end
|
||||
end
|
||||
|
||||
context "when file is incorrect" do
|
||||
let(:options) { { params_file: "spec/files/github_changelog_params_incorrect" } }
|
||||
let(:options_before_change) { options.dup }
|
||||
let(:parse) { GitHubChangelogGenerator::ParserFile.new(options) }
|
||||
it { expect { parse.parse! }.to raise_error(GitHubChangelogGenerator::ParserError) }
|
||||
let(:file) { StringIO.new("unreleased_label=staging\nunreleased: false") }
|
||||
let(:parser) do
|
||||
GitHubChangelogGenerator::ParserFile.new(options, file)
|
||||
end
|
||||
it { expect { parser.parse! }.to raise_error(/line #2/) }
|
||||
end
|
||||
|
||||
context "allows empty lines and comments with semi-colon or pound sign" do
|
||||
let(:file) { StringIO.new("\n \n# Comment on first line\nunreleased_label=staging\n; Comment on third line\nunreleased=false") }
|
||||
let(:parser) do
|
||||
GitHubChangelogGenerator::ParserFile.new(options, file)
|
||||
end
|
||||
it { expect { parser.parse! }.not_to raise_error }
|
||||
end
|
||||
|
||||
context "when override default values" do
|
||||
let(:default_options) { GitHubChangelogGenerator::Parser.default_options }
|
||||
let(:options) { { params_file: "spec/files/github_changelog_params_override" }.merge(default_options) }
|
||||
let(:options) { {}.merge(default_options) }
|
||||
let(:options_before_change) { options.dup }
|
||||
let(:parse) { GitHubChangelogGenerator::ParserFile.new(options) }
|
||||
let(:file) { StringIO.new("unreleased_label=staging\nunreleased=false\nheader==== Changelog ===") }
|
||||
let(:parser) { GitHubChangelogGenerator::ParserFile.new(options, file) }
|
||||
|
||||
it "changes the options" do
|
||||
expect { parse.parse! }.to change { options }
|
||||
expect { parser.parse! }.to change { options }
|
||||
.from(options_before_change)
|
||||
.to(options_before_change.merge(unreleased_label: "staging",
|
||||
unreleased: false,
|
||||
@@ -38,17 +49,24 @@ describe GitHubChangelogGenerator::ParserFile do
|
||||
end
|
||||
|
||||
context "turns exclude-labels into an Array", bug: '#327' do
|
||||
let(:options) do
|
||||
{
|
||||
params_file: "spec/files/github_changelog_params_327"
|
||||
}
|
||||
let(:file) do
|
||||
StringIO.new(<<EOF
|
||||
exclude-labels=73a91042-da6f-11e5-9335-1040f38d7f90,7adf83b4-da6f-11e5-ae18-1040f38d7f90
|
||||
header_label=# My changelog
|
||||
EOF
|
||||
)
|
||||
end
|
||||
it "reads exclude_labels into an Array" do
|
||||
pending("Related with Bug #327.")
|
||||
expect { parse.parse! }.to change { options[:exclude_labels] }
|
||||
.from(nil)
|
||||
expect { parser.parse! }.to change { options[:exclude_labels] }
|
||||
.from(default_options[:exclude_labels])
|
||||
.to(["73a91042-da6f-11e5-9335-1040f38d7f90", "7adf83b4-da6f-11e5-ae18-1040f38d7f90"])
|
||||
end
|
||||
|
||||
it "translates given header_label into the :header option" do
|
||||
expect { parser.parse! }.to change { options[:header] }
|
||||
.from(default_options[:header])
|
||||
.to("# My changelog")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user