Compare commits

..

11 Commits
1.1.0 ... 1.1.1

Author SHA1 Message Date
Petr Korolev
6682ffe452 Update to version 1.1.1 2014-11-10 17:04:02 +02:00
Petr Korolev
dbc7b3e567 update changelog 2014-11-10 17:02:01 +02:00
Petr Korolev
a96f74208c Merge branch 'new-features' 2014-11-10 17:01:57 +02:00
Petr Korolev
cdc009b4ad Remove duplicates of issues and pull-requests with same number 2014-11-10 17:00:48 +02:00
Petr Korolev
0046f344a9 Merge branch 'new-features' 2014-11-10 16:18:39 +02:00
Petr Korolev
1b792bc67b update changelog 2014-11-10 16:17:56 +02:00
Petr Korolev
f0716771b5 Sort issues by tags 2014-11-10 16:17:43 +02:00
Petr Korolev
50dd7b2ed6 update changelog 2014-11-10 16:03:01 +02:00
Petr Korolev
3797b3ac31 Merge branch 'new-features' 2014-11-10 15:38:48 +02:00
Petr Korolev
f08685b015 Add ability to add ot exclude issues wothout any labels 2014-11-10 15:37:43 +02:00
Petr Korolev
fc96007741 update changelog 2014-11-10 15:12:42 +02:00
4 changed files with 85 additions and 46 deletions

View File

@@ -1,22 +1,34 @@
# Changelog # Changelog
## [1.1.0] (https://github.com/skywinder/Github-Changelog-Generator/tree/1.1.0)
#### 10/11/14
- *Implemented enhancement:* Detect username and project form origin [\#11](https://github.com/skywinder/Github-Changelog-Generator/issues/11)
- *Fixed bug:* Markdown formating in the last line wrong [\#9](https://github.com/skywinder/Github-Changelog-Generator/issues/9)
- *Fixed bug:* Bug with wrong credentials in 1.0.1 [\#12](https://github.com/skywinder/Github-Changelog-Generator/issues/12)
## [1.0.1] (https://github.com/skywinder/Github-Changelog-Generator/tree/1.0.1)
#### 10/11/14
- *Merged pull-request:* Implement support of different tags. [\#8](https://github.com/skywinder/Github-Changelog-Generator/pull/8)
## [1.0.0] (https://github.com/skywinder/Github-Changelog-Generator/tree/1.0.0) ## [1.0.0] (https://github.com/skywinder/Github-Changelog-Generator/tree/1.0.0)
#### 07/11/14 #### 07/11/14
- Add support for issues in CHANGELOG [\#7](https://github.com/skywinder/Github-Changelog-Generator/pull/7) - *Merged pull-request:* Add support for issues in CHANGELOG [\#7](https://github.com/skywinder/Github-Changelog-Generator/pull/7)
- Fix parsing date of pull request [\#3](https://github.com/skywinder/Github-Changelog-Generator/pull/3) - *Merged pull-request:* Fix parsing date of pull request [\#3](https://github.com/skywinder/Github-Changelog-Generator/pull/3)
- *Fixed bug:* Last tag not appeared in changelog [\#5](https://github.com/skywinder/Github-Changelog-Generator/issues/5)
- *Implemented enhancement:* Add support for fixed issues and implemented enchanments. [\#6](https://github.com/skywinder/Github-Changelog-Generator/issues/6)
- *Implemented enhancement:* Implement option to specify output filename [\#4](https://github.com/skywinder/Github-Changelog-Generator/issues/4) - *Implemented enhancement:* Implement option to specify output filename [\#4](https://github.com/skywinder/Github-Changelog-Generator/issues/4)
- *Implemented enhancement:* Add support for fixed issues and implemented enchanments. [\#6](https://github.com/skywinder/Github-Changelog-Generator/issues/6)
- *Fixed bug:* Last tag not appeared in changelog [\#5](https://github.com/skywinder/Github-Changelog-Generator/issues/5)
## [0.1.0] (https://github.com/skywinder/Github-Changelog-Generator/tree/0.1.0) ## [0.1.0] (https://github.com/skywinder/Github-Changelog-Generator/tree/0.1.0)
#### 07/11/14 #### 07/11/14
- Add changelog generation for last tag [\#2](https://github.com/skywinder/Github-Changelog-Generator/pull/2) - *Merged pull-request:* Add changelog generation for last tag [\#2](https://github.com/skywinder/Github-Changelog-Generator/pull/2)
- Add option (-o --output) to specify name of the output file. [\#1](https://github.com/skywinder/Github-Changelog-Generator/pull/1) - *Merged pull-request:* Add option (-o --output) to specify name of the output file. [\#1](https://github.com/skywinder/Github-Changelog-Generator/pull/1)
## [0.0.2] (https://github.com/skywinder/Github-Changelog-Generator/tree/0.0.2) ## [0.0.2] (https://github.com/skywinder/Github-Changelog-Generator/tree/0.0.2)
#### 06/11/14 #### 06/11/14
@@ -24,4 +36,4 @@
#### 06/11/14 #### 06/11/14
**This file was generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* \* *This changelog was generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*

View File

@@ -1,6 +1,6 @@
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = "github_changelog_generator" s.name = "github_changelog_generator"
s.version = "1.1.0" s.version = "1.1.1"
s.default_executable = "github_changelog_generator" s.default_executable = "github_changelog_generator"
s.required_ruby_version = '>= 1.9.3' s.required_ruby_version = '>= 1.9.3'

View File

@@ -80,12 +80,7 @@ class ChangelogGenerator
log += self.generate_log_for_all_tags log += self.generate_log_for_all_tags
end end
log += "\n\n\\* *This changelog was generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*"
if @options[:verbose]
puts log
end
log += "\n\n* *This changelog was generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*"
output_filename = "#{@options[:output]}" output_filename = "#{@options[:output]}"
File.open(output_filename, 'w') { |file| file.write(log) } File.open(output_filename, 'w') { |file| file.write(log) }
@@ -228,7 +223,7 @@ class ChangelogGenerator
# Generate pull requests: # Generate pull requests:
if pull_requests if pull_requests
pull_requests.each { |dict| pull_requests.each { |dict|
merge = "#{dict[:title]} [\\##{dict[:number]}](https://github.com/#{@options[:user]}/#{@options[:project]}/pull/#{dict[:number]})\n\n" merge = "#{@options[:merge_prefix]}#{dict[:title]} [\\##{dict[:number]}](#{dict.html_url})\n\n"
log += "- #{merge}" log += "- #{merge}"
} }
end end
@@ -237,6 +232,22 @@ class ChangelogGenerator
if @options[:issues] if @options[:issues]
# Generate issues: # Generate issues:
if issues if issues
issues.sort! { |x, y|
if x.labels.any? && y.labels.any?
x.labels[0].name <=> y.labels[0].name
else
if x.labels.any?
1
else
if y.labels.any?
-1
else
0
end
end
end
}.reverse!
end
issues.each { |dict| issues.each { |dict|
is_bug = false is_bug = false
is_enhancement = false is_enhancement = false
@@ -258,13 +269,10 @@ class ChangelogGenerator
intro = 'Implemented enhancement' intro = 'Implemented enhancement'
end end
merge = "*#{intro}:* #{dict[:title]} [\\##{dict[:number]}](https://github.com/#{@options[:user]}/#{@options[:project]}/issues/#{dict[:number]})\n\n" merge = "*#{intro}:* #{dict[:title]} [\\##{dict[:number]}](#{dict.html_url})\n\n"
log += "- #{merge}" log += "- #{merge}"
} }
end end
end
log log
end end
@@ -286,15 +294,31 @@ class ChangelogGenerator
def get_all_issues def get_all_issues
all_issues = [] all_issues = []
@options[:labels].each { |label|
issues = @github.issues.list user: @options[:user], repo: @options[:project], state: 'closed', filter: 'all', labels: label issues_req = @github.issues.list user: @options[:user], repo: @options[:project], state: 'closed', filter: 'all', labels: nil
all_issues = all_issues.concat(issues.body)
filtered_issues = issues_req.body.select { |issues|
#compare is there any labels from @options[:labels] array
(issues.labels.map { |issue| issue.name } & @options[:labels]).any?
} }
if @options[:add_issues_wo_labels]
issues_wo_labels = issues_req.body.select {
|issues| !issues.labels.map { |issue| issue.name }.any?
}
filtered_issues.concat(issues_wo_labels)
end
# remove pull request from issues:
filtered_issues.select! { |x|
x.pull_request == nil
}
if @options[:verbose] if @options[:verbose]
puts "Receive all closed issues with labels #{@options[:labels]}: #{all_issues.count} issues" puts "Receive all closed issues with labels #{@options[:labels]}: #{all_issues.count} issues"
end end
all_issues filtered_issues
end end

View File

@@ -3,7 +3,7 @@ require 'optparse'
class Parser class Parser
def self.parse_options def self.parse_options
options = {:tag1 => nil, :tag2 => nil, :format => '%d/%m/%y', :output => 'CHANGELOG.md', :labels => %w(bug enhancement), :pulls => true, :issues => true, :verbose => true} options = {:tag1 => nil, :tag2 => nil, :format => '%d/%m/%y', :output => 'CHANGELOG.md', :labels => %w(bug enhancement), :pulls => true, :issues => true, :verbose => true, :add_issues_wo_labels => true, :merge_prefix => '*Merged pull-request:* ' }
parser = OptionParser.new { |opts| parser = OptionParser.new { |opts|
opts.banner = 'Usage: changelog_generator [options]' opts.banner = 'Usage: changelog_generator [options]'
@@ -20,12 +20,15 @@ class Parser
puts opts puts opts
exit exit
end end
opts.on('-v', '--[no-]verbose', 'Run verbosely') do |v| opts.on('-v', '--[no-]verbose', 'Run verbosely. Default is true') do |v|
options[:verbose] = v options[:verbose] = v
end end
opts.on('--[no-]issues', 'Include closed issues to changelog. Default is true') do |v| opts.on('--[no-]issues', 'Include closed issues to changelog. Default is true') do |v|
options[:issues] = v options[:issues] = v
end end
opts.on('--[no-]issues-without-labels', 'Include closed issues without any labels to changelog. Default is true') do |v|
options[:add_issues_wo_labels] = v
end
opts.on('--[no-]pull-requests', 'Include pull-requests to changelog. Default is true') do |v| opts.on('--[no-]pull-requests', 'Include pull-requests to changelog. Default is true') do |v|
options[:pulls] = v options[:pulls] = v
end end