gem_toys 0.9.0 → 0.12.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0b023bf7a74055e177396b6f315eda52ed9737d2d18de86c0213d7a740c5089f
4
- data.tar.gz: c2ae112eca387b13cead398223022eb219e2900ae4ce3ef2b7c8b9116ef78728
3
+ metadata.gz: fea5af09163d451da7c5b9f23bae4050be9485ba4eddf0c119740502ac6feafc
4
+ data.tar.gz: 4dc42971cbaa2706969aab2f7bf6c246c36a5f51211921a44d0079008cede0d1
5
5
  SHA512:
6
- metadata.gz: 73979e0c344259f99b1605680e9369121bd7fbbb740ba1af6019e2b48d56596b76691d096ec3a7433de04bd60aea9c9769fe74c9059b8a10bb650d92bb0d513a
7
- data.tar.gz: bf1432b40babf5b2c8c2d21a3d2e4689327545a3589435a818fcef98c81c037e1a9f76a5f5b5d03cd196b09e5c0fc14b8b6284d15d8435e837b2ced68e086ceb
6
+ metadata.gz: 336ff0b6d142324b6d37db1dc106864f120dd4cae1952bce715a0a3570b57534826ae687a70e789dea1bea5eacae7c3699b5a8e05c9f9ee86f45d21d4b6d9e4d
7
+ data.tar.gz: 4543e8537c06d8551d37a1bc02e2f99e861200e9359d7a5e20aa7ae6c039703de8025119b62ddc1149dc109e0e1e04c9229954019648b8fa4f93406a582d2371
data/CHANGELOG.md CHANGED
@@ -1,6 +1,41 @@
1
1
  # Changelog
2
2
 
3
- ## master (unreleased)
3
+ ## Unreleased
4
+
5
+ ## 0.12.1 (2022-02-07)
6
+
7
+ * Drop Ruby 2.5 support.
8
+ * Add Ruby 3.1 support.
9
+
10
+ ## 0.12.0 (2022-02-07)
11
+
12
+ * Update Faraday to version 2.
13
+ * Update development dependencies.
14
+
15
+ ## 0.11.3 (2021-11-10)
16
+
17
+ * Resolve RuboCop offense, take out manual check menu choices.
18
+
19
+ ## 0.11.2 (2021-11-07)
20
+
21
+ * Fix version for gem staff after manual refresh too.
22
+
23
+ ## 0.11.1 (2021-11-07)
24
+
25
+ * Fix new version for git staff after manual refresh.
26
+
27
+ ## 0.11.0 (2021-10-29)
28
+
29
+ * Revert version and changelog files changes at rejection.
30
+ * Revert version file changes at changelog fails.
31
+ * Update development dependencies.
32
+
33
+ ## 0.10.0 (2021-10-15)
34
+
35
+ * Process cases with non-JSON String from RubyGems.org.
36
+ * Update development dependencies.
37
+ * Resolve new offenses from RuboCop.
38
+ * Change default for unreleased in Changelog.
4
39
 
5
40
  ## 0.9.0 (2021-08-26)
6
41
 
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Gem Toys
2
2
 
3
3
  [![Cirrus CI - Base Branch Build Status](https://img.shields.io/cirrus/github/AlexWayfer/gem_toys?style=flat-square)](https://cirrus-ci.com/github/AlexWayfer/gem_toys)
4
- [![Codecov branch](https://img.shields.io/codecov/c/github/AlexWayfer/gem_toys/master.svg?style=flat-square)](https://codecov.io/gh/AlexWayfer/gem_toys)
4
+ [![Codecov branch](https://img.shields.io/codecov/c/github/AlexWayfer/gem_toys/main.svg?style=flat-square)](https://codecov.io/gh/AlexWayfer/gem_toys)
5
5
  [![Code Climate](https://img.shields.io/codeclimate/maintainability/AlexWayfer/gem_toys.svg?style=flat-square)](https://codeclimate.com/github/AlexWayfer/gem_toys)
6
6
  [![Depfu](https://img.shields.io/depfu/AlexWayfer/benchmark_toys?style=flat-square)](https://depfu.com/repos/github/AlexWayfer/gem_toys)
7
- [![Inline docs](https://inch-ci.org/github/AlexWayfer/gem_toys.svg?branch=master)](https://inch-ci.org/github/AlexWayfer/gem_toys)
8
- [![license](https://img.shields.io/github/license/AlexWayfer/gem_toys.svg?style=flat-square)](https://github.com/AlexWayfer/gem_toys/blob/master/LICENSE.txt)
7
+ [![Inline docs](https://inch-ci.org/github/AlexWayfer/gem_toys.svg?branch=main)](https://inch-ci.org/github/AlexWayfer/gem_toys)
8
+ [![license](https://img.shields.io/github/license/AlexWayfer/gem_toys.svg?style=flat-square)](https://github.com/AlexWayfer/gem_toys/blob/main/LICENSE.txt)
9
9
  [![Gem](https://img.shields.io/gem/v/gem_toys.svg?style=flat-square)](https://rubygems.org/gems/gem_toys)
10
10
 
11
11
  [Toys](https://github.com/dazuma/toys) template for gems, like building, releasing, etc.
@@ -38,8 +38,8 @@ require 'gem_toys'
38
38
  expand GemToys::Template,
39
39
  ## default is `CHANGELOG.md`
40
40
  changelog_file_name: 'ChangeLog.md',
41
- ## default is `## master (unreleased)`
42
- unreleased_title: '## Unreleased',
41
+ ## default is `## Unreleased`
42
+ unreleased_title: '## main (unreleased)',
43
43
  ## default is `"lib/#{project_name_with_slashes_instead_dashes}/version.rb"`
44
44
  version_file_path: 'lib/my-awesome_gem.rb',
45
45
  ## default is `v`, so tags are like `v4.1.0`
@@ -63,7 +63,7 @@ alias_tool :g, :gem
63
63
 
64
64
  1. Update `lib/*gem_name*/version.rb` file.
65
65
  Can be refined with `:version_file_path` option on `expand`.
66
- 2. Insert Markdown title with changes from `## master (unreleased)` in a `CHANGELOG.md` file.
66
+ 2. Insert Markdown title with changes from `## Unreleased` in a `CHANGELOG.md` file.
67
67
  Can be refined with `:unreleased_title` option on `expand`.
68
68
  3. [Builds](#build) a gem.
69
69
  4. Ask you for manual check, if you want (print anything of OK).
@@ -28,6 +28,10 @@ module GemToys
28
28
  end
29
29
 
30
30
  memoize def current_version
31
+ parse_version_from_file
32
+ end
33
+
34
+ def parse_version_from_file
31
35
  version_file_content.match(/VERSION = '(.+)'/)[1]
32
36
  end
33
37
 
@@ -49,15 +53,22 @@ module GemToys
49
53
 
50
54
  memoize def rubygems_connection
51
55
  require 'faraday'
52
- require 'faraday_middleware'
53
56
 
54
- Faraday.new 'https://rubygems.org/api/v1' do |conn|
55
- conn.response :json, parser_options: { symbolize_names: true }
57
+ Faraday.new 'https://rubygems.org/api/v1' do |connection|
58
+ connection.response :json,
59
+ content_type: /\bjson$/,
60
+ parser_options: { symbolize_names: true }
56
61
  end
57
62
  end
58
63
 
59
64
  memoize def rubygems_versions
60
- rubygems_connection.get("versions/#{project_name}.json").body
65
+ response = rubygems_connection.get("versions/#{project_name}.json").body
66
+
67
+ return response if response.is_a?(Array)
68
+
69
+ return [] if response == 'This rubygem could not be found.'
70
+
71
+ raise "Unexpected response from RubyGems.org: #{response.inspect}"
61
72
  end
62
73
 
63
74
  def current_version_hash
@@ -28,11 +28,14 @@ module GemToys
28
28
 
29
29
  unreleased_title_index = @changelog_lines.index("#{unreleased_title}\n")
30
30
 
31
- abort_without_unreleased_title unless unreleased_title_index
31
+ unless unreleased_title_index
32
+ sh "git restore --worktree #{version_file_path}"
33
+ abort_without_unreleased_title
34
+ end
32
35
 
33
36
  @changelog_lines.insert(
34
37
  unreleased_title_index + 2,
35
- '#' * unreleased_title.scan(/^#+/).first.size + " #{@new_version} (#{@today})\n\n"
38
+ ('#' * unreleased_title.scan(/^#+/).first.size) + " #{@new_version} (#{@today})\n\n"
36
39
  ).join
37
40
  end
38
41
 
@@ -8,16 +8,17 @@ module GemToys
8
8
  private
9
9
 
10
10
  def process_git
11
- new_version_git_tag = "#{@template.version_tag_prefix}#{@new_version}"
11
+ ## `current_version` should be refreshed before this method invocation
12
+ version_git_tag = "#{@template.version_tag_prefix}#{current_version}"
12
13
 
13
- ## Checkout to a new git branch, required for protected `master` with CI
14
- # sh "git switch -c #{new_version_git_tag}"
14
+ ## Checkout to a new git branch, required for protected `main` with CI
15
+ # sh "git switch -c #{version_git_tag}"
15
16
 
16
17
  commit_changes
17
18
 
18
19
  ## Tag commit
19
20
  puts 'Tagging the commit...'
20
- sh "git tag -a #{new_version_git_tag} -m 'Version #{@new_version}'"
21
+ sh "git tag -a #{version_git_tag} -m 'Version #{current_version}'"
21
22
 
22
23
  ## Push commit
23
24
  puts 'Pushing commit...'
@@ -33,7 +34,7 @@ module GemToys
33
34
 
34
35
  sh "git add #{version_file_path} #{changelog_file_path}"
35
36
 
36
- sh "git commit -m 'Update version to #{@new_version}'"
37
+ sh "git commit -m 'Update version to #{current_version}'"
37
38
  end
38
39
  end
39
40
  end
@@ -76,8 +76,6 @@ module GemToys
76
76
  else
77
77
  new_version
78
78
  end
79
-
80
- clear_memery_cache! :current_version
81
79
  end
82
80
 
83
81
  def handle_keyword_in_new_version(current_version_parts, version_index)
@@ -101,10 +99,31 @@ module GemToys
101
99
  )
102
100
  end
103
101
 
102
+ self::MANUAL_CHECK_MENU = {
103
+ yes: (proc do
104
+ ## `current_version` is using in `git` and `gem` commands
105
+ clear_memery_cache! :current_version
106
+ end),
107
+ no: (proc do
108
+ handle_refusing_to_continue
109
+ end),
110
+ refresh: (proc do
111
+ wait_for_manual_check
112
+ end)
113
+ }.freeze
114
+
104
115
  def wait_for_manual_check
105
116
  print_files_diff
106
117
 
107
- manual_check_menu
118
+ HighLine.new.choose do |menu|
119
+ menu.layout = :one_line
120
+
121
+ menu.prompt = 'Are these changes correct? '
122
+
123
+ self.class::MANUAL_CHECK_MENU.each do |choice, block|
124
+ menu.choice(choice) { instance_exec(&block) }
125
+ end
126
+ end
108
127
  end
109
128
 
110
129
  def print_files_diff
@@ -113,19 +132,11 @@ module GemToys
113
132
  $stdout.puts
114
133
  end
115
134
 
116
- def manual_check_menu
117
- HighLine.new.choose do |menu|
118
- menu.layout = :one_line
119
-
120
- menu.prompt = 'Are these changes correct? '
121
-
122
- menu.choice(:yes)
123
- menu.choice(:no) { abort }
124
- menu.choice(:refresh) do
125
- handle_new_version
126
- wait_for_manual_check
127
- end
135
+ def handle_refusing_to_continue
136
+ [version_file_path, changelog_file_path].each do |file_path|
137
+ sh "git restore --worktree #{file_path}"
128
138
  end
139
+ abort
129
140
  end
130
141
  end
131
142
  end
@@ -19,7 +19,9 @@ module GemToys
19
19
 
20
20
  versions = rubygems_versions
21
21
 
22
- versions.unshift current_version_hash if current_version != versions.first[:number]
22
+ if versions.empty? || current_version != versions.first[:number]
23
+ versions.unshift current_version_hash
24
+ end
23
25
 
24
26
  puts_versions versions
25
27
  end
@@ -15,7 +15,7 @@ module GemToys
15
15
  changelog_file_name: 'CHANGELOG.md',
16
16
  version_file_path: nil,
17
17
  version_tag_prefix: 'v',
18
- unreleased_title: '## master (unreleased)'
18
+ unreleased_title: '## Unreleased'
19
19
  )
20
20
  @changelog_file_name = changelog_file_name
21
21
  @version_file_path = version_file_path
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemToys
4
- VERSION = '0.9.0'
4
+ VERSION = '0.12.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_toys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Popov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-25 00:00:00.000000000 Z
11
+ date: 2022-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: alt_memery
@@ -30,28 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.0'
41
- - !ruby/object:Gem::Dependency
42
- name: faraday_middleware
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.0'
33
+ version: '2.0'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '1.0'
40
+ version: '2.0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: highline
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +142,14 @@ dependencies:
156
142
  requirements:
157
143
  - - "~>"
158
144
  - !ruby/object:Gem::Version
159
- version: 1.19.0
145
+ version: 1.24.1
160
146
  type: :development
161
147
  prerelease: false
162
148
  version_requirements: !ruby/object:Gem::Requirement
163
149
  requirements:
164
150
  - - "~>"
165
151
  - !ruby/object:Gem::Version
166
- version: 1.19.0
152
+ version: 1.24.1
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: rubocop-performance
169
155
  requirement: !ruby/object:Gem::Requirement
@@ -218,7 +204,8 @@ licenses:
218
204
  metadata:
219
205
  source_code_uri: https://github.com/AlexWayfer/gem_toys
220
206
  homepage_uri: https://github.com/AlexWayfer/gem_toys
221
- changelog_uri: https://github.com/AlexWayfer/gem_toys/blob/master/CHANGELOG.md
207
+ changelog_uri: https://github.com/AlexWayfer/gem_toys/blob/main/CHANGELOG.md
208
+ rubygems_mfa_required: 'true'
222
209
  post_install_message:
223
210
  rdoc_options: []
224
211
  require_paths:
@@ -227,7 +214,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
227
214
  requirements:
228
215
  - - ">="
229
216
  - !ruby/object:Gem::Version
230
- version: '2.5'
217
+ version: '2.6'
231
218
  - - "<"
232
219
  - !ruby/object:Gem::Version
233
220
  version: '4'
@@ -237,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
224
  - !ruby/object:Gem::Version
238
225
  version: '0'
239
226
  requirements: []
240
- rubygems_version: 3.2.22
227
+ rubygems_version: 3.3.3
241
228
  signing_key:
242
229
  specification_version: 4
243
230
  summary: Toys template for gems