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
## [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)
#### 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)
- *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)
- *Merged pull-request:* Fix parsing date of pull request [\#3](https://github.com/skywinder/Github-Changelog-Generator/pull/3)
- *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)
#### 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)
#### 06/11/14
@@ -24,4 +36,4 @@
#### 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|
s.name = "github_changelog_generator"
s.version = "1.1.0"
s.version = "1.1.1"
s.default_executable = "github_changelog_generator"
s.required_ruby_version = '>= 1.9.3'

View File

@@ -80,12 +80,7 @@ class ChangelogGenerator
log += self.generate_log_for_all_tags
end
if @options[:verbose]
puts log
end
log += "\n\n* *This changelog was generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*"
log += "\n\n\\* *This changelog was generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*"
output_filename = "#{@options[:output]}"
File.open(output_filename, 'w') { |file| file.write(log) }
@@ -228,7 +223,7 @@ class ChangelogGenerator
# Generate pull requests:
if pull_requests
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}"
}
end
@@ -237,34 +232,47 @@ class ChangelogGenerator
if @options[:issues]
# Generate issues:
if issues
issues.each { |dict|
is_bug = false
is_enhancement = false
dict.labels.each { |label|
if label.name == 'bug'
is_bug = true
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
if label.name == 'enhancement'
is_enhancement = true
end
}
intro = 'Closed issue'
if is_bug
intro = 'Fixed bug'
end
if is_enhancement
intro = 'Implemented enhancement'
end
merge = "*#{intro}:* #{dict[:title]} [\\##{dict[:number]}](https://github.com/#{@options[:user]}/#{@options[:project]}/issues/#{dict[:number]})\n\n"
log += "- #{merge}"
}
}.reverse!
end
issues.each { |dict|
is_bug = false
is_enhancement = false
dict.labels.each { |label|
if label.name == 'bug'
is_bug = true
end
if label.name == 'enhancement'
is_enhancement = true
end
}
intro = 'Closed issue'
if is_bug
intro = 'Fixed bug'
end
if is_enhancement
intro = 'Implemented enhancement'
end
merge = "*#{intro}:* #{dict[:title]} [\\##{dict[:number]}](#{dict.html_url})\n\n"
log += "- #{merge}"
}
end
log
end
@@ -286,15 +294,31 @@ class ChangelogGenerator
def get_all_issues
all_issues = []
@options[:labels].each { |label|
issues = @github.issues.list user: @options[:user], repo: @options[:project], state: 'closed', filter: 'all', labels: label
all_issues = all_issues.concat(issues.body)
issues_req = @github.issues.list user: @options[:user], repo: @options[:project], state: 'closed', filter: 'all', labels: nil
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]
puts "Receive all closed issues with labels #{@options[:labels]}: #{all_issues.count} issues"
end
all_issues
filtered_issues
end

View File

@@ -3,7 +3,7 @@ require 'optparse'
class Parser
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|
opts.banner = 'Usage: changelog_generator [options]'
@@ -20,12 +20,15 @@ class Parser
puts opts
exit
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
end
opts.on('--[no-]issues', 'Include closed issues to changelog. Default is true') do |v|
options[:issues] = v
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|
options[:pulls] = v
end