gem_comet 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|