gem_comet 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +21 -0
- data/Gemfile.lock +1 -1
- data/lib/gem_comet.rb +9 -0
- data/lib/gem_comet/bundle_updater.rb +14 -0
- data/lib/gem_comet/changelog.rb +7 -17
- data/lib/gem_comet/changelog/generator.rb +22 -17
- data/lib/gem_comet/changelog/initializer.rb +24 -0
- data/lib/gem_comet/cli.rb +17 -12
- data/lib/gem_comet/open_github_pulls_page.rb +18 -0
- data/lib/gem_comet/release.rb +1 -0
- data/lib/gem_comet/release/release_pr.rb +1 -1
- data/lib/gem_comet/release/update_pr.rb +3 -6
- data/lib/gem_comet/repository_url.rb +25 -0
- data/lib/gem_comet/service_abstract.rb +2 -2
- data/lib/gem_comet/version.rb +1 -1
- data/lib/gem_comet/version_history.rb +66 -0
- data/template/.gem_comet.yml.erb +3 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b13645ee861e799d64559a1d4b41de38fe7e11061073387bece2f18c9f6d595f
|
4
|
+
data.tar.gz: 7d83a76d83b2812cb74afbcc7dd406d0980a6ad000caa9901395e0f8e9671ad2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57d0c128ffe107140aafb153bd8ec3e858bd7643fbd878348bb3f7e0531163e60da7884f1e56116f948523b85d8f4d530ebee3a4e079528db82e4f700ea5c8d9
|
7
|
+
data.tar.gz: 59dd23a66be1ac4fec13fd6fb2d2c7f92edbeae79ce7d02ae4e31e465e10c92babfe25e2bff52380188fc4adf1cd8bba2a8c9bcac14a7eb5ba3eb9f56ab86520
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,26 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## v0.4.0 (Oct 27, 2019)
|
4
|
+
|
5
|
+
### Feature
|
6
|
+
|
7
|
+
* Modify to display gem versions sorted by tagged date ([#32](https://github.com/ryz310/gem_comet/pull/32))
|
8
|
+
* Add the legend to creating pull requests ([#33](https://github.com/ryz310/gem_comet/pull/33))
|
9
|
+
* Open the GitHub pull request page at release ([#36](https://github.com/ryz310/gem_comet/pull/36))
|
10
|
+
|
11
|
+
### Bugfix
|
12
|
+
|
13
|
+
* Fix broken links included by the modified change log ([#34](https://github.com/ryz310/gem_comet/pull/34))
|
14
|
+
|
15
|
+
### Breaking Change
|
16
|
+
|
17
|
+
* Changelog initializer ([#35](https://github.com/ryz310/gem_comet/pull/35))
|
18
|
+
* The `$ gem_comet changelog` command options has changed:
|
19
|
+
* Before:
|
20
|
+
* `$ gem_comet changelog --from=0.1.0 --to=0.1.1`
|
21
|
+
* After:
|
22
|
+
* `$ gem_comet changelog --version=v0.1.1`
|
23
|
+
|
3
24
|
## 0.3.0 (Oct 19, 2019)
|
4
25
|
|
5
26
|
### Feature
|
data/Gemfile.lock
CHANGED
data/lib/gem_comet.rb
CHANGED
@@ -8,11 +8,20 @@ require 'yaml'
|
|
8
8
|
require 'gem_comet/version'
|
9
9
|
require 'gem_comet/service_abstract'
|
10
10
|
require 'gem_comet/config'
|
11
|
+
require 'gem_comet/bundle_updater'
|
11
12
|
require 'gem_comet/version_editor'
|
13
|
+
require 'gem_comet/version_history'
|
12
14
|
require 'gem_comet/changelog'
|
15
|
+
require 'gem_comet/changelog/initializer'
|
13
16
|
require 'gem_comet/changelog/editor'
|
14
17
|
require 'gem_comet/changelog/generator'
|
18
|
+
require 'gem_comet/open_github_pulls_page'
|
19
|
+
require 'gem_comet/repository_url'
|
15
20
|
require 'gem_comet/release'
|
16
21
|
require 'gem_comet/release/update_pr'
|
17
22
|
require 'gem_comet/release/release_pr'
|
18
23
|
require 'gem_comet/cli'
|
24
|
+
|
25
|
+
module GemComet
|
26
|
+
LEGEND = 'Generated by [gem_comet](https://github.com/ryz310/gem_comet)'
|
27
|
+
end
|
data/lib/gem_comet/changelog.rb
CHANGED
@@ -3,29 +3,19 @@
|
|
3
3
|
module GemComet
|
4
4
|
# Generates changelog from git log
|
5
5
|
class Changelog < ServiceAbstract
|
6
|
-
# @param
|
7
|
-
#
|
8
|
-
#
|
9
|
-
|
10
|
-
# The end of version number to create a changelog.
|
11
|
-
# Default is specified `HEAD`.
|
12
|
-
# @param append [Boolean]
|
13
|
-
# Appends execution result to CHANGELOG.md.
|
14
|
-
# @param prepend [Boolean]
|
15
|
-
# Prepends execution result to CHANGELOG.md.
|
16
|
-
def initialize(from_version: nil, to_version: nil, append: false, prepend: false)
|
17
|
-
@version_editor = VersionEditor.new
|
6
|
+
# @param version [String] The version number to create a changelog.
|
7
|
+
# @param append [Boolean] Appends execution result to CHANGELOG.md.
|
8
|
+
# @param prepend [Boolean] Prepends execution result to CHANGELOG.md.
|
9
|
+
def initialize(version:, append: false, prepend: false)
|
18
10
|
@changelog_editor = Changelog::Editor.new
|
19
|
-
@
|
20
|
-
@to_version = to_version
|
11
|
+
@version = version
|
21
12
|
@append = append
|
22
13
|
@prepend = prepend
|
23
14
|
end
|
24
15
|
|
25
16
|
private
|
26
17
|
|
27
|
-
attr_reader :
|
28
|
-
:from_version, :to_version, :append, :prepend
|
18
|
+
attr_reader :changelog_editor, :version, :append, :prepend
|
29
19
|
|
30
20
|
# Displays changelogs. If specified a `append` or `prepend` option, updates
|
31
21
|
# CHANGELOG.md with generated changelog.
|
@@ -44,7 +34,7 @@ module GemComet
|
|
44
34
|
#
|
45
35
|
# @return [String] Ganalated changelog
|
46
36
|
def changelog
|
47
|
-
@changelog ||= Generator.call(
|
37
|
+
@changelog ||= Generator.call(version: version)
|
48
38
|
end
|
49
39
|
end
|
50
40
|
end
|
@@ -4,17 +4,14 @@ module GemComet
|
|
4
4
|
class Changelog
|
5
5
|
# Generates changelog from git log
|
6
6
|
class Generator < ServiceAbstract
|
7
|
-
attr_reader :
|
8
|
-
|
9
|
-
# @param
|
10
|
-
# @param
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
@from = "v#{from_version}"
|
16
|
-
@to = to_version.nil? ? 'HEAD' : "v#{to_version}"
|
17
|
-
@new_version = new_version || to
|
7
|
+
attr_reader :version, :title, :origin_url
|
8
|
+
|
9
|
+
# @param version [String] The end of version number to create a changelog.
|
10
|
+
# @param title [String] Next version of your gem
|
11
|
+
def initialize(version:, title: nil)
|
12
|
+
@version = version
|
13
|
+
@title = title || version
|
14
|
+
@origin_url = RepositoryUrl.call
|
18
15
|
end
|
19
16
|
|
20
17
|
private
|
@@ -24,10 +21,11 @@ module GemComet
|
|
24
21
|
# Returns changelogs as markdown format from current version to HEAD commit.
|
25
22
|
#
|
26
23
|
# @return [String] Changelogs as markdown format
|
24
|
+
# @raise [RuntimeError] The specified version cannot be found
|
27
25
|
def call
|
28
26
|
<<~MARKDOWN
|
29
27
|
|
30
|
-
## #{
|
28
|
+
## #{title} (#{versioning_date})
|
31
29
|
|
32
30
|
### Feature
|
33
31
|
### Bugfix
|
@@ -38,6 +36,13 @@ module GemComet
|
|
38
36
|
MARKDOWN
|
39
37
|
end
|
40
38
|
|
39
|
+
# Returns the versioning date
|
40
|
+
#
|
41
|
+
# @return [String] The versioning date. e.g. "Oct 26, 2019"
|
42
|
+
def versioning_date
|
43
|
+
VersionHistory.new.versioning_date_of(version).strftime('%b %d, %Y')
|
44
|
+
end
|
45
|
+
|
41
46
|
# Returns array of changelogs as markdown format.
|
42
47
|
#
|
43
48
|
# @return [Array<String>] Array of changelogs as markdown format
|
@@ -98,14 +103,14 @@ module GemComet
|
|
98
103
|
#
|
99
104
|
# @return [String] Get only merge commit logs
|
100
105
|
def merge_commit_log
|
101
|
-
@merge_commit_log ||= `git log --merges #{
|
106
|
+
@merge_commit_log ||= `git log --merges #{prev_version}..#{version}`
|
102
107
|
end
|
103
108
|
|
104
|
-
#
|
109
|
+
# Get a previous version number from the specified version number
|
105
110
|
#
|
106
|
-
# @
|
107
|
-
def
|
108
|
-
@
|
111
|
+
# @raise [RuntimeError] The specified version cannot be found
|
112
|
+
def prev_version
|
113
|
+
@prev_version ||= VersionHistory.new.previous_version_from(version)
|
109
114
|
end
|
110
115
|
end
|
111
116
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GemComet
|
4
|
+
class Changelog
|
5
|
+
# Initializes the CHANGELOG.md to append past version change-logs
|
6
|
+
class Initializer < ServiceAbstract
|
7
|
+
def initialize
|
8
|
+
@changelog_editor = Changelog::Editor.new
|
9
|
+
@version_history = VersionHistory.new
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
attr_reader :changelog_editor, :version_history
|
15
|
+
|
16
|
+
def call
|
17
|
+
version_history.versions.each do |version|
|
18
|
+
changelog = Changelog::Generator.call(version: version)
|
19
|
+
changelog_editor.prepend!(content: changelog)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/gem_comet/cli.rb
CHANGED
@@ -14,24 +14,26 @@ module GemComet
|
|
14
14
|
template '../../template/.gem_comet.yml.erb', '.gem_comet.yml',
|
15
15
|
version: GemComet::Config::CURRENT_VERSION
|
16
16
|
template '../../template/CHANGELOG.md.erb', 'CHANGELOG.md'
|
17
|
+
Changelog::Initializer.call
|
18
|
+
rescue StandardError => e
|
19
|
+
puts e.message
|
17
20
|
end
|
18
21
|
|
19
22
|
desc 'release VERSION', 'Creates update PR and release PR'
|
20
23
|
def release(version)
|
21
24
|
Release.call(version: version)
|
25
|
+
rescue StandardError => e
|
26
|
+
puts e.message
|
22
27
|
end
|
23
28
|
|
24
29
|
desc 'changelog', 'Displays changelogs'
|
25
|
-
option :
|
30
|
+
option :version,
|
26
31
|
type: :string,
|
27
|
-
aliases: :
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
aliases: :t,
|
33
|
-
desc: 'The end of version number to create a changelog. ' \
|
34
|
-
'Default is specified `HEAD`.'
|
32
|
+
aliases: :v,
|
33
|
+
default: 'HEAD',
|
34
|
+
desc: 'The version number to create a changelog. ' \
|
35
|
+
'Default is specified `HEAD`.',
|
36
|
+
banner: 'v1.2.3'
|
35
37
|
option :append,
|
36
38
|
type: :boolean,
|
37
39
|
aliases: :a,
|
@@ -44,16 +46,19 @@ module GemComet
|
|
44
46
|
desc: 'Prepends execution result to CHANGELOG.md.'
|
45
47
|
def changelog
|
46
48
|
puts Changelog.call(
|
47
|
-
|
48
|
-
to_version: options[:to],
|
49
|
+
version: options[:version],
|
49
50
|
append: options[:append],
|
50
51
|
prepend: options[:prepend]
|
51
52
|
)
|
53
|
+
rescue StandardError => e
|
54
|
+
puts e.message
|
52
55
|
end
|
53
56
|
|
54
57
|
desc 'versions', 'Displays version numbers of your gem.'
|
55
58
|
def versions
|
56
|
-
puts
|
59
|
+
puts VersionHistory.new.versions
|
60
|
+
rescue StandardError => e
|
61
|
+
puts e.message
|
57
62
|
end
|
58
63
|
|
59
64
|
desc 'version', 'Shows current version'
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GemComet
|
4
|
+
# Creates pull requests for gem release and that preparation
|
5
|
+
class OpenGithubPullsPage < ServiceAbstract
|
6
|
+
attr_reader :origin_url
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@origin_url = RepositoryUrl.call
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def call
|
15
|
+
`open #{origin_url}/pulls`
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/gem_comet/release.rb
CHANGED
@@ -24,10 +24,7 @@ module GemComet
|
|
24
24
|
|
25
25
|
def update_changelog
|
26
26
|
pr_comet.commit ':comet: Update CHANGELOG.md' do
|
27
|
-
changelog = Changelog::Generator.call(
|
28
|
-
from_version: version_editor.current_version,
|
29
|
-
new_version: version
|
30
|
-
)
|
27
|
+
changelog = Changelog::Generator.call(version: 'HEAD', title: "v#{version}")
|
31
28
|
changelog_editor.prepend!(content: changelog)
|
32
29
|
end
|
33
30
|
end
|
@@ -39,11 +36,11 @@ module GemComet
|
|
39
36
|
end
|
40
37
|
|
41
38
|
def bundle_update
|
42
|
-
pr_comet.commit(':comet: $ bundle update') {
|
39
|
+
pr_comet.commit(':comet: $ bundle update') { BundleUpdater.call }
|
43
40
|
end
|
44
41
|
|
45
42
|
def create_pull_request
|
46
|
-
pr_comet.create!(title: "Update v#{version}", body:
|
43
|
+
pr_comet.create!(title: "Update v#{version}", body: LEGEND)
|
47
44
|
end
|
48
45
|
end
|
49
46
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GemComet
|
4
|
+
# Gets the repository URL on the GitHub
|
5
|
+
class RepositoryUrl < ServiceAbstract
|
6
|
+
def initialize; end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
# Returns the git origin URL via git command.
|
11
|
+
#
|
12
|
+
# @return [String] The origin URL
|
13
|
+
def call
|
14
|
+
if git_remote_command =~ /git@github.com:(.+).git/
|
15
|
+
"https://github.com/#{Regexp.last_match(1)}"
|
16
|
+
else
|
17
|
+
git_remote_command.sub('.git', '').chomp
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def git_remote_command
|
22
|
+
@git_remote_command ||= `git remote get-url --push origin`
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/gem_comet/version.rb
CHANGED
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GemComet
|
4
|
+
# Reads versions by `git tag` command
|
5
|
+
class VersionHistory
|
6
|
+
# Gets all version numbers
|
7
|
+
#
|
8
|
+
# @return [Array<String>] An array of version numbers
|
9
|
+
def versions
|
10
|
+
array_of_version_and_date.map(&:first).push('HEAD')
|
11
|
+
end
|
12
|
+
|
13
|
+
# Gets a previous version number from the specified version number
|
14
|
+
#
|
15
|
+
# @param version [String] Any version number
|
16
|
+
# @return [String] A previous version number
|
17
|
+
# @raise [RuntimeError] The specified version cannot be found
|
18
|
+
def previous_version_from(version)
|
19
|
+
index = find_version_index(version)
|
20
|
+
return nil if index.zero?
|
21
|
+
|
22
|
+
versions.at(index - 1)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Gets the verioning date of the version number
|
26
|
+
#
|
27
|
+
# @param version [String] Any version number
|
28
|
+
# @return [Date] The verioning date
|
29
|
+
# @raise [RuntimeError] The specified version cannot be found
|
30
|
+
def versioning_date_of(version)
|
31
|
+
return Date.today if version == 'HEAD'
|
32
|
+
|
33
|
+
index = find_version_index(version)
|
34
|
+
Date.parse(array_of_version_and_date[index].last)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
# Processes `git tag` command result
|
40
|
+
#
|
41
|
+
# @return [Array<Array<String>>] An array of versions and date
|
42
|
+
# e.g. [['v0.1.0', '2019-07-15'], ['v0.2.0', '2019-10-14']]
|
43
|
+
def array_of_version_and_date
|
44
|
+
@array_of_version_and_date ||= git_tag_list.lines.map(&:chomp).map(&:split).sort_by(&:last)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Finds an index of the specified version number
|
48
|
+
#
|
49
|
+
# @param version [String] Any version number
|
50
|
+
# @return [Integer] The index of the specified version number
|
51
|
+
# @raise [RuntimeError] The specified version cannot be found
|
52
|
+
def find_version_index(version)
|
53
|
+
index = versions.index(version)
|
54
|
+
raise 'The specified version cannot be found' if index.nil?
|
55
|
+
|
56
|
+
index
|
57
|
+
end
|
58
|
+
|
59
|
+
# Executes `git tag` command
|
60
|
+
#
|
61
|
+
# @return [String] Output result
|
62
|
+
def git_tag_list
|
63
|
+
`git tag --list 'v*' --format='%(tag) %(taggerdate:short)'`
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/template/.gem_comet.yml.erb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem_comet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ryz310
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pr_comet
|
@@ -219,17 +219,22 @@ files:
|
|
219
219
|
- exe/gem_comet
|
220
220
|
- gem_comet.gemspec
|
221
221
|
- lib/gem_comet.rb
|
222
|
+
- lib/gem_comet/bundle_updater.rb
|
222
223
|
- lib/gem_comet/changelog.rb
|
223
224
|
- lib/gem_comet/changelog/editor.rb
|
224
225
|
- lib/gem_comet/changelog/generator.rb
|
226
|
+
- lib/gem_comet/changelog/initializer.rb
|
225
227
|
- lib/gem_comet/cli.rb
|
226
228
|
- lib/gem_comet/config.rb
|
229
|
+
- lib/gem_comet/open_github_pulls_page.rb
|
227
230
|
- lib/gem_comet/release.rb
|
228
231
|
- lib/gem_comet/release/release_pr.rb
|
229
232
|
- lib/gem_comet/release/update_pr.rb
|
233
|
+
- lib/gem_comet/repository_url.rb
|
230
234
|
- lib/gem_comet/service_abstract.rb
|
231
235
|
- lib/gem_comet/version.rb
|
232
236
|
- lib/gem_comet/version_editor.rb
|
237
|
+
- lib/gem_comet/version_history.rb
|
233
238
|
- template/.gem_comet.yml.erb
|
234
239
|
- template/CHANGELOG.md.erb
|
235
240
|
homepage: https://github.com/ryz310/gem_comet
|