gem_toys 0.7.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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