gem_toys 0.7.0 → 0.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b8a68d7567f6698b428f46a2f69694259e066412bedb21b55eda4585b76c70b
4
- data.tar.gz: 74cfd96138c6e0a10eacec2235500f775d5f02b0f3ab215f88b0c911a8cf33a2
3
+ metadata.gz: be3b572d39236cf68b7d1c1a56e4a68792176a594047af91302799954898dab3
4
+ data.tar.gz: 2073632a59bb127935d67114d0f7753db0c12606a30f67db6fe704b70bba06a4
5
5
  SHA512:
6
- metadata.gz: 98da90d85c1cb6f361bdef8d7a0ec42d5c0ba500121f3fc9655dacb24f160f9a9c21599afb01bf9ed3672a954c9ef27df384e988b8ad382e505cb1bedb1e1cab
7
- data.tar.gz: d236a46c35fcedeb008aafbb4f1836e497c39d2b001b125634a60b114b555fd567b4236aa2294b50f708869a80dd416bf1998a585494c3854ba545128a0729a4
6
+ metadata.gz: c11e21b77d865010227986b4b96d5b3291cc447edff5f7df60e6572c2e2e96cb83b983c718d7c1b00b4ad328c3a921da9dba2fc23f7ad6a1d5b02e9da7ca6c16
7
+ data.tar.gz: 7f9a2d20007c1d2d4a097de4f378eceb19401254e16583cbd2b46fdab50777d5972b62efd9026cde51f3c171574cdd134f14adf6c5ee346259d515f6235dbc25
data/CHANGELOG.md CHANGED
@@ -1,9 +1,39 @@
1
1
  # Changelog
2
2
 
3
- ## master (unreleased)
3
+ ## Unreleased
4
+
5
+ ## 0.10.0 (2021-10-15)
6
+
7
+ * Process cases with non-JSON String from RubyGems.org.
8
+ * Update development dependencies.
9
+ * Resolve new offenses from RuboCop.
10
+ * Change default for unreleased in Changelog.
11
+
12
+ ## 0.9.0 (2021-08-26)
13
+
14
+ * Fix built gem version after `refresh` answer.
15
+ * Update development dependencies.
16
+ * Lock RuboCop version better.
17
+ * Resolve new RuboCop offenses.
18
+
19
+ ## 0.8.0 (2021-04-16)
20
+
21
+ * Add `refresh` answer for release confirmation.
22
+
23
+ ## 0.7.1 (2021-03-04)
24
+
25
+ * Fix error about non-renamed `version` in one of aborts.
26
+ * Improve Regexp for date of existing release.
27
+ Catch only content inside the last parentheses.
4
28
 
5
29
  ## 0.7.0 (2021-03-04)
6
30
 
31
+ * Add `:changelog_file_name` option.
32
+ * Add `:version_tag_prefix` option.
33
+ * Change date format for `versions` tool.
34
+ * Add documentation about `:version_file_path` option.
35
+ * Split `release` tool into modules for RuboCop satisfaction.
36
+
7
37
  ## 0.6.1 (2021-02-10)
8
38
 
9
39
  * Gently abort when `unreleased_title` not found.
data/README.md CHANGED
@@ -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).
@@ -51,13 +51,21 @@ module GemToys
51
51
  require 'faraday'
52
52
  require 'faraday_middleware'
53
53
 
54
- Faraday.new 'https://rubygems.org/api/v1' do |conn|
55
- conn.response :json, parser_options: { symbolize_names: true }
54
+ Faraday.new 'https://rubygems.org/api/v1' do |connection|
55
+ connection.response :json,
56
+ content_type: /\bjson$/,
57
+ parser_options: { symbolize_names: true }
56
58
  end
57
59
  end
58
60
 
59
61
  memoize def rubygems_versions
60
- rubygems_connection.get("versions/#{project_name}.json").body
62
+ response = rubygems_connection.get("versions/#{project_name}.json").body
63
+
64
+ return response if response.is_a?(Array)
65
+
66
+ return [] if response == 'This rubygem could not be found.'
67
+
68
+ raise "Unexpected response from RubyGems.org: #{response.inspect}"
61
69
  end
62
70
 
63
71
  def current_version_hash
@@ -15,9 +15,9 @@ module GemToys
15
15
  existing_line = @changelog_lines.find { |line| line.start_with? "## #{@new_version} " }
16
16
 
17
17
  if existing_line
18
- return if (existing_date = existing_line.match(/\((.*)\)/)[1]) == @today
18
+ return if (existing_date = existing_line.scan(/\(([^()]+)\)/).last.first) == @today
19
19
 
20
- abort "There is already #{version} version with date #{existing_date}"
20
+ abort "There is already #{new_version} version with date #{existing_date}"
21
21
  end
22
22
 
23
23
  File.write changelog_file_path, new_changelog_content
@@ -32,7 +32,7 @@ module GemToys
32
32
 
33
33
  @changelog_lines.insert(
34
34
  unreleased_title_index + 2,
35
- '#' * unreleased_title.scan(/^#+/).first.size + " #{@new_version} (#{@today})\n\n"
35
+ ('#' * unreleased_title.scan(/^#+/).first.size) + " #{@new_version} (#{@today})\n\n"
36
36
  ).join
37
37
  end
38
38
 
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'highline'
4
+
3
5
  require_relative 'release/changelog'
4
6
  require_relative 'release/git'
5
7
 
@@ -44,11 +46,11 @@ module GemToys
44
46
  ## Update CHANGELOG
45
47
  update_changelog_file
46
48
 
49
+ wait_for_manual_check
50
+
47
51
  ## Build new gem file
48
52
  exec_tool 'gem build'
49
53
 
50
- wait_for_manual_check
51
-
52
54
  ## Commit, tag, push
53
55
  process_git
54
56
 
@@ -100,12 +102,30 @@ module GemToys
100
102
  end
101
103
 
102
104
  def wait_for_manual_check
105
+ print_files_diff
106
+
107
+ manual_check_menu
108
+ end
109
+
110
+ def print_files_diff
103
111
  $stdout.puts
104
112
  sh "git diff #{version_file_path} #{changelog_file_path}"
105
113
  $stdout.puts
106
- $stdout.puts 'Please, validate files before committing and pushing!'
107
- $stdout.puts 'Press anything to continue, Ctrl+C to cancel.'
108
- $stdin.gets
114
+ end
115
+
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
128
+ end
109
129
  end
110
130
  end
111
131
  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.7.0'
4
+ VERSION = '0.10.0'
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.7.0
4
+ version: 0.10.0
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-03-03 00:00:00.000000000 Z
11
+ date: 2021-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: alt_memery
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: highline
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: pry-byebug
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -86,28 +100,28 @@ dependencies:
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 0.11.0
103
+ version: 0.12.0
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 0.11.0
110
+ version: 0.12.0
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: codecov
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.4.2
117
+ version: 0.6.0
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.4.2
124
+ version: 0.6.0
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: rspec
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +156,14 @@ dependencies:
142
156
  requirements:
143
157
  - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: '1.2'
159
+ version: 1.21.0
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: '1.2'
166
+ version: 1.21.0
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: rubocop-performance
155
169
  requirement: !ruby/object:Gem::Requirement
@@ -223,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
237
  - !ruby/object:Gem::Version
224
238
  version: '0'
225
239
  requirements: []
226
- rubygems_version: 3.2.3
240
+ rubygems_version: 3.2.22
227
241
  signing_key:
228
242
  specification_version: 4
229
243
  summary: Toys template for gems