gem_toys 0.6.1 → 0.7.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: 4618c51d0060981f796f40c91b6e746f6cc9860adcdbae6b291e9740b4f617df
4
- data.tar.gz: 42efd278a9c5821c85eb776dae8f1dde46ac957d1c98842c716f5f769de313f0
3
+ metadata.gz: 1b8a68d7567f6698b428f46a2f69694259e066412bedb21b55eda4585b76c70b
4
+ data.tar.gz: 74cfd96138c6e0a10eacec2235500f775d5f02b0f3ab215f88b0c911a8cf33a2
5
5
  SHA512:
6
- metadata.gz: 1a8a580cb0ec036fcd80c6c27ef1ecf289c9d87e5696d044b585bcf2ffe05c6ef22c96fee1f2836aa0f9e9f875545b2b3cb501b5d1d3b75fd4bca4edf78b5ac9
7
- data.tar.gz: 0ae8062f7f01ed27afdf635dbc06a25495a6d6039470a469e6ea5213eecaa66301afce1a9561bc87bd3401822f98e5c6b2443a249926ca8d0eecf0bcf18f70cf
6
+ metadata.gz: 98da90d85c1cb6f361bdef8d7a0ec42d5c0ba500121f3fc9655dacb24f160f9a9c21599afb01bf9ed3672a954c9ef27df384e988b8ad382e505cb1bedb1e1cab
7
+ data.tar.gz: d236a46c35fcedeb008aafbb4f1836e497c39d2b001b125634a60b114b555fd567b4236aa2294b50f708869a80dd416bf1998a585494c3854ba545128a0729a4
data/CHANGELOG.md CHANGED
@@ -2,8 +2,13 @@
2
2
 
3
3
  ## master (unreleased)
4
4
 
5
+ ## 0.7.0 (2021-03-04)
6
+
5
7
  ## 0.6.1 (2021-02-10)
6
8
 
9
+ * Gently abort when `unreleased_title` not found.
10
+ * Improve documentation about `:unreleased_title` option.
11
+
7
12
  ## 0.6.0 (2021-02-10)
8
13
 
9
14
  * Support Ruby 3.
data/README.md CHANGED
@@ -36,7 +36,14 @@ gem install gem_toys
36
36
  # .toys.rb
37
37
  require 'gem_toys'
38
38
  expand GemToys::Template,
39
- unreleased_title: '## Unreleased' ## default is `## master (unreleased)`
39
+ ## default is `CHANGELOG.md`
40
+ changelog_file_name: 'ChangeLog.md',
41
+ ## default is `## master (unreleased)`
42
+ unreleased_title: '## Unreleased',
43
+ ## default is `"lib/#{project_name_with_slashes_instead_dashes}/version.rb"`
44
+ version_file_path: 'lib/my-awesome_gem.rb',
45
+ ## default is `v`, so tags are like `v4.1.0`
46
+ version_tag_prefix: ''
40
47
 
41
48
  # `gem` namespace created, aliases are optional, but handful
42
49
  alias_tool :g, :gem
@@ -9,10 +9,17 @@ module GemToys
9
9
  class Template
10
10
  include Toys::Template
11
11
 
12
- attr_reader :version_file_path, :unreleased_title
13
-
14
- def initialize(version_file_path: nil, unreleased_title: '## master (unreleased)')
12
+ attr_reader :changelog_file_name, :version_file_path, :version_tag_prefix, :unreleased_title
13
+
14
+ def initialize(
15
+ changelog_file_name: 'CHANGELOG.md',
16
+ version_file_path: nil,
17
+ version_tag_prefix: 'v',
18
+ unreleased_title: '## master (unreleased)'
19
+ )
20
+ @changelog_file_name = changelog_file_name
15
21
  @version_file_path = version_file_path
22
+ @version_tag_prefix = version_tag_prefix
16
23
  @unreleased_title = unreleased_title
17
24
  end
18
25
 
@@ -65,7 +72,9 @@ module GemToys
65
72
 
66
73
  require_relative 'template/release'
67
74
  expand Template::Release,
75
+ changelog_file_name: template.changelog_file_name,
68
76
  version_file_path: template.version_file_path,
77
+ version_tag_prefix: template.version_tag_prefix,
69
78
  unreleased_title: template.unreleased_title
70
79
  end
71
80
  end
@@ -31,12 +31,8 @@ module GemToys
31
31
  version_file_content.match(/VERSION = '(.+)'/)[1]
32
32
  end
33
33
 
34
- memoize def changelog_file_name
35
- 'CHANGELOG.md'
36
- end
37
-
38
34
  memoize def changelog_file_path
39
- File.join context_directory, changelog_file_name
35
+ File.join context_directory, @template.changelog_file_name
40
36
  end
41
37
 
42
38
  memoize def gem_file_name
@@ -75,7 +71,7 @@ module GemToys
75
71
 
76
72
  versions.each do |version|
77
73
  created_at = begin
78
- DateTime.parse(version[:created_at]).strftime('%b %e %Y %R')
74
+ DateTime.parse(version[:created_at]).strftime('%F %R')
79
75
  rescue Date::Error
80
76
  version[:created_at]
81
77
  end
@@ -1,20 +1,33 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'release/changelog'
4
+ require_relative 'release/git'
5
+
3
6
  module GemToys
4
7
  class Template
5
8
  ## Template with gem release tool, expanding internally
6
9
  class Release
7
10
  include Toys::Template
8
11
 
9
- attr_reader :version_file_path, :unreleased_title
12
+ attr_reader :changelog_file_name, :version_file_path, :version_tag_prefix, :unreleased_title
10
13
 
11
- def initialize(version_file_path:, unreleased_title:)
14
+ def initialize(
15
+ changelog_file_name:,
16
+ version_file_path:,
17
+ version_tag_prefix:,
18
+ unreleased_title:
19
+ )
20
+ @changelog_file_name = changelog_file_name
12
21
  @version_file_path = version_file_path
22
+ @version_tag_prefix = version_tag_prefix
13
23
  @unreleased_title = unreleased_title
14
24
  end
15
25
 
16
26
  on_expand do |template|
17
27
  tool :release do
28
+ include Release::Changelog
29
+ include Release::Git
30
+
18
31
  required_arg :new_version
19
32
 
20
33
  to_run do
@@ -36,22 +49,8 @@ module GemToys
36
49
 
37
50
  wait_for_manual_check
38
51
 
39
- ## Checkout to a new git branch, required for protected `master` with CI
40
- # sh "git switch -c v#{@new_version}"
41
-
42
- commit_changes
43
-
44
- ## Tag commit
45
- puts 'Tagging the commit...'
46
- sh "git tag -a v#{@new_version} -m 'Version #{@new_version}'"
47
-
48
- ## Push commit
49
- puts 'Pushing commit...'
50
- sh 'git push'
51
-
52
- ## Push tags
53
- puts 'Pushing tags...'
54
- sh 'git push --tags'
52
+ ## Commit, tag, push
53
+ process_git
55
54
 
56
55
  puts 'Pushing gem...'
57
56
  sh "gem push #{current_gem_file}"
@@ -100,50 +99,6 @@ module GemToys
100
99
  )
101
100
  end
102
101
 
103
- def update_changelog_file
104
- puts 'Updating changelog file...'
105
-
106
- @changelog_lines = File.readlines(changelog_file_path)
107
-
108
- existing_line = @changelog_lines.find { |line| line.start_with? "## #{@new_version} " }
109
-
110
- if existing_line
111
- return if (existing_date = existing_line.match(/\((.*)\)/)[1]) == @today
112
-
113
- abort "There is already #{version} version with date #{existing_date}"
114
- end
115
-
116
- File.write changelog_file_path, new_changelog_content
117
- end
118
-
119
- def new_changelog_content
120
- unreleased_title = @template.unreleased_title
121
-
122
- unreleased_title_index = @changelog_lines.index("#{unreleased_title}\n")
123
-
124
- abort_without_unreleased_title unless unreleased_title_index
125
-
126
- @changelog_lines.insert(
127
- unreleased_title_index + 2,
128
- '#' * unreleased_title.scan(/^#+/).first.size + " #{@new_version} (#{@today})\n\n"
129
- ).join
130
- end
131
-
132
- def abort_without_unreleased_title
133
- abort <<~TEXT
134
- `#{@template.unreleased_title}` not found in the `#{changelog_file_name}` as the title for unreleased changes.
135
- Please, use `:unreleased_title` option if you have non-default one.
136
- TEXT
137
- end
138
-
139
- def commit_changes
140
- puts 'Committing changes...'
141
-
142
- sh "git add #{version_file_path} #{changelog_file_path}"
143
-
144
- sh "git commit -m 'Update version to #{@new_version}'"
145
- end
146
-
147
102
  def wait_for_manual_check
148
103
  $stdout.puts
149
104
  sh "git diff #{version_file_path} #{changelog_file_path}"
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GemToys
4
+ class Template
5
+ class Release
6
+ ## Helper module with methods about CHANGELOG file for `release` tool
7
+ module Changelog
8
+ private
9
+
10
+ def update_changelog_file
11
+ puts 'Updating changelog file...'
12
+
13
+ @changelog_lines = File.readlines(changelog_file_path)
14
+
15
+ existing_line = @changelog_lines.find { |line| line.start_with? "## #{@new_version} " }
16
+
17
+ if existing_line
18
+ return if (existing_date = existing_line.match(/\((.*)\)/)[1]) == @today
19
+
20
+ abort "There is already #{version} version with date #{existing_date}"
21
+ end
22
+
23
+ File.write changelog_file_path, new_changelog_content
24
+ end
25
+
26
+ def new_changelog_content
27
+ unreleased_title = @template.unreleased_title
28
+
29
+ unreleased_title_index = @changelog_lines.index("#{unreleased_title}\n")
30
+
31
+ abort_without_unreleased_title unless unreleased_title_index
32
+
33
+ @changelog_lines.insert(
34
+ unreleased_title_index + 2,
35
+ '#' * unreleased_title.scan(/^#+/).first.size + " #{@new_version} (#{@today})\n\n"
36
+ ).join
37
+ end
38
+
39
+ def abort_without_unreleased_title
40
+ abort <<~TEXT
41
+ `#{@template.unreleased_title}` not found in the `#{@template.changelog_file_name}` as the title for unreleased changes.
42
+ Please, use `:unreleased_title` option if you have non-default one.
43
+ TEXT
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GemToys
4
+ class Template
5
+ class Release
6
+ ## Helper module with methods about `git` for `release` tool
7
+ module Git
8
+ private
9
+
10
+ def process_git
11
+ new_version_git_tag = "#{@template.version_tag_prefix}#{@new_version}"
12
+
13
+ ## Checkout to a new git branch, required for protected `master` with CI
14
+ # sh "git switch -c #{new_version_git_tag}"
15
+
16
+ commit_changes
17
+
18
+ ## Tag commit
19
+ puts 'Tagging the commit...'
20
+ sh "git tag -a #{new_version_git_tag} -m 'Version #{@new_version}'"
21
+
22
+ ## Push commit
23
+ puts 'Pushing commit...'
24
+ sh 'git push'
25
+
26
+ ## Push tags
27
+ puts 'Pushing tags...'
28
+ sh 'git push --tags'
29
+ end
30
+
31
+ def commit_changes
32
+ puts 'Committing changes...'
33
+
34
+ sh "git add #{version_file_path} #{changelog_file_path}"
35
+
36
+ sh "git commit -m 'Update version to #{@new_version}'"
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemToys
4
- VERSION = '0.6.1'
4
+ VERSION = '0.7.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.6.1
4
+ version: 0.7.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-02-09 00:00:00.000000000 Z
11
+ date: 2021-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: alt_memery
@@ -194,6 +194,8 @@ files:
194
194
  - lib/gem_toys/template.rb
195
195
  - lib/gem_toys/template/common_code.rb
196
196
  - lib/gem_toys/template/release.rb
197
+ - lib/gem_toys/template/release/changelog.rb
198
+ - lib/gem_toys/template/release/git.rb
197
199
  - lib/gem_toys/template/versions.rb
198
200
  - lib/gem_toys/version.rb
199
201
  homepage: https://github.com/AlexWayfer/gem_toys