gem_toys 0.1.0 → 0.2.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: 8fc9bcdb919f2a0f201a81e39147393ae2fb8b3a6caa37cd38944770cef390de
4
- data.tar.gz: ad694499de8f8a2db342c748ada96842cfb3396dc53ed33b35d1928ca89b078c
3
+ metadata.gz: 5f12dea34e3f97cd2d22bbe74577876988d63b14135f3881688adffb0aa1fe27
4
+ data.tar.gz: 3e7133b5a0c2b082d8108b63fcc403b86c52360c32faf4764eb569ae07052aa4
5
5
  SHA512:
6
- metadata.gz: 3100babf6998a170b6d51c5e9f33a71e1e11742cd915a106d43a017190e21f9c7b629984c6729271f4f3c38f8b5024d6e696e0c448594e8ec48166edbdbcbee7
7
- data.tar.gz: 36e525c0564e2685e4c404cc3f8f7aaf0ec03f04486b0fc4470bd1c69f752ddd4bd37a2ac130cf9d6701eebf9fc84747c705792a1fba261aef8a2242de737516
6
+ metadata.gz: 846247b5a5f1b69e4fde49feda00a66494a3ee4f6ca867dfd564723772749bcf25184560ae07e86c58f78a1b6beb07eb15562abfd925e8d58d5397a58c6916c5
7
+ data.tar.gz: 2587c1b34d42976accf1ef5b63b53b35ca068f4d26a89620d9ed349f215e01630d072fc520ac484b199cb264045dfc067e3ec89d644c32bcb3adda6ed1d057bf
@@ -2,6 +2,14 @@
2
2
 
3
3
  ## master (unreleased)
4
4
 
5
+ ## 0.2.0 (2020-07-09)
6
+
7
+ * Add `:version_file_path` and `:unreleased_title` options
8
+ * Change the order of tasks: check (manually) before committing.
9
+ * Include `:exec` only unless already included.
10
+ * Improve usage documentation.
11
+ * Add output of process steps.
12
+
5
13
  ## 0.1.0 (2020-07-08)
6
14
 
7
15
  * Initial commit
data/README.md CHANGED
@@ -41,6 +41,20 @@ expand GemToys::Template
41
41
  alias_tool :g, :gem
42
42
  ```
43
43
 
44
+ At invocation it will:
45
+
46
+ 1. Update `lib/*gem_name*/version.rb` file.
47
+ Can be refined with `:version_file_path` option on `expand`.
48
+ 2. Insert Markdown title with changes from `## master (unreleased)` in a `CHANGELOG.md` file.
49
+ Can be refined with `:unreleased_title` option on `expand`.
50
+ 3. Execute `gem build`.
51
+ 4. Ask you for manual check, if you want (print anything of OK).
52
+ You also can change manually a content of `CHANGELOG.md`, for example, before committing.
53
+ 5. Commit these files.
54
+ 6. Tag this commit with `vX.Y.Z`.
55
+ 7. Push git commit and tag.
56
+ 8. Push the new gem.
57
+
44
58
  ## Development
45
59
 
46
60
  After checking out the repo, run `bundle install` to install dependencies.
@@ -3,58 +3,34 @@
3
3
  require 'date'
4
4
  require 'toys-core'
5
5
 
6
+ require_relative 'template/common_code'
7
+
6
8
  module GemToys
7
9
  ## Template with gem tools, should be expanded in toys file
8
10
  class Template
9
11
  include Toys::Template
10
12
 
11
- ## Module for common code between nested tools
12
- module CommonCode
13
- private
14
-
15
- def project_name
16
- @project_name ||= File.basename context_directory
17
- end
18
-
19
- def version_file_path
20
- project_path = project_name.tr '-', '/'
21
- @version_file_path ||= File.join context_directory, 'lib', project_path, 'version.rb'
22
- end
23
-
24
- def version_file_content
25
- File.read version_file_path
26
- end
27
-
28
- def current_version
29
- @current_version ||= version_file_content.match(/VERSION = '(.+)'/)[1]
30
- end
13
+ attr_reader :version_file_path, :unreleased_title
31
14
 
32
- def changelog_file_path
33
- @changelog_file_path ||= File.join context_directory, 'CHANGELOG.md'
34
- end
35
-
36
- def gem_file_name
37
- @gem_file_name ||= "#{project_name}-#{current_version}.gem"
38
- end
39
-
40
- def pkg_directory
41
- @pkg_directory ||= "#{context_directory}/pkg"
42
- end
43
-
44
- def current_gem_file
45
- "#{pkg_directory}/#{gem_file_name}"
46
- end
15
+ def initialize(version_file_path: nil, unreleased_title: '## master (unreleased)')
16
+ @version_file_path = version_file_path
17
+ @unreleased_title = unreleased_title
47
18
  end
48
19
 
49
- on_expand do
20
+ on_expand do |template|
50
21
  tool :gem do
51
22
  subtool_apply do
52
- include :exec, exit_on_nonzero_status: true, log_level: Logger::UNKNOWN
23
+ unless include? :exec
24
+ include :exec, exit_on_nonzero_status: true, log_level: Logger::UNKNOWN
25
+ end
26
+
53
27
  include CommonCode
54
28
  end
55
29
 
56
30
  tool :build do
57
- def run
31
+ to_run do
32
+ @template = template
33
+
58
34
  sh 'gem build'
59
35
  FileUtils.mkdir_p pkg_directory
60
36
  FileUtils.mv "#{context_directory}/#{gem_file_name}", current_gem_file
@@ -62,7 +38,9 @@ module GemToys
62
38
  end
63
39
 
64
40
  tool :install do
65
- def run
41
+ to_run do
42
+ @template = template
43
+
66
44
  exec_tool 'gem build'
67
45
  sh "gem install #{current_gem_file}"
68
46
  end
@@ -71,43 +49,53 @@ module GemToys
71
49
  tool :release do
72
50
  required_arg :version
73
51
 
74
- def run
52
+ to_run do
53
+ @template = template
54
+
75
55
  update_version_file
76
56
 
77
57
  ## Update CHANGELOG
78
58
  update_changelog_file
79
59
 
60
+ ## Build new gem file
61
+ exec_tool 'gem build'
62
+
63
+ wait_for_manual_check
64
+
80
65
  ## Checkout to a new git branch, required for protected `master` with CI
81
66
  # sh "git switch -c v#{version}"
82
67
 
83
68
  commit_changes
84
69
 
85
70
  ## Tag commit
71
+ puts 'Tagging the commit...'
86
72
  sh "git tag -a v#{version} -m 'Version #{version}'"
87
73
 
88
- ## Build new gem file
89
- exec_tool 'gem build'
90
-
91
- wait_for_manual_check
92
-
93
74
  ## Push commit
75
+ puts 'Pushing commit...'
94
76
  sh 'git push'
95
77
 
96
78
  ## Push tags
79
+ puts 'Pushing tags...'
97
80
  sh 'git push --tags'
98
81
 
82
+ puts 'Pushing gem...'
99
83
  sh "gem push #{current_gem_file}"
100
84
  end
101
85
 
102
86
  private
103
87
 
104
88
  def update_version_file
89
+ puts 'Updating version file...'
90
+
105
91
  File.write version_file_path, version_file_content.sub(/'.+'/, "'#{version}'")
106
92
  end
107
93
 
108
94
  TODAY = Date.today.to_s
109
95
 
110
96
  def update_changelog_file
97
+ puts 'Updating changelog file...'
98
+
111
99
  @changelog_lines = File.readlines(changelog_file_path)
112
100
 
113
101
  existing_line = find_version_line_in_changelog_file
@@ -126,12 +114,16 @@ module GemToys
126
114
  end
127
115
 
128
116
  def new_changelog_content
117
+ unreleased_title = @template.unreleased_title
129
118
  @changelog_lines.insert(
130
- @changelog_lines.index("## master (unreleased)\n") + 2, "## #{version} (#{TODAY})\n\n"
119
+ @changelog_lines.index("#{unreleased_title}\n") + 2,
120
+ '#' * unreleased_title.scan(/^#+/).first.size + " #{version} (#{TODAY})\n\n"
131
121
  ).join
132
122
  end
133
123
 
134
124
  def commit_changes
125
+ puts 'Committing changes...'
126
+
135
127
  sh "git add #{version_file_path} #{changelog_file_path}"
136
128
 
137
129
  sh "git commit -m 'Update version to #{version}'"
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GemToys
4
+ ## Template with gem tools, should be expanded in toys file
5
+ class Template
6
+ ## Module for common code between nested tools
7
+ module CommonCode
8
+ private
9
+
10
+ def project_name
11
+ @project_name ||= File.basename context_directory
12
+ end
13
+
14
+ def version_file_path
15
+ @version_file_path ||=
16
+ @template.version_file_path ||
17
+ begin
18
+ project_path = project_name.tr '-', '/'
19
+ File.join context_directory, 'lib', project_path, 'version.rb'
20
+ end
21
+ end
22
+
23
+ def version_file_content
24
+ File.read version_file_path
25
+ end
26
+
27
+ def current_version
28
+ @current_version ||= version_file_content.match(/VERSION = '(.+)'/)[1]
29
+ end
30
+
31
+ def changelog_file_path
32
+ @changelog_file_path ||= File.join context_directory, 'CHANGELOG.md'
33
+ end
34
+
35
+ def gem_file_name
36
+ @gem_file_name ||= "#{project_name}-#{current_version}.gem"
37
+ end
38
+
39
+ def pkg_directory
40
+ @pkg_directory ||= "#{context_directory}/pkg"
41
+ end
42
+
43
+ def current_gem_file
44
+ "#{pkg_directory}/#{gem_file_name}"
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemToys
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.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.1.0
4
+ version: 0.2.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: 2020-07-07 00:00:00.000000000 Z
11
+ date: 2020-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry-byebug
@@ -59,6 +59,9 @@ dependencies:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 0.1.0
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: 0.1.18
62
65
  type: :development
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
@@ -66,6 +69,9 @@ dependencies:
66
69
  - - "~>"
67
70
  - !ruby/object:Gem::Version
68
71
  version: 0.1.0
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.1.18
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: rspec
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +106,14 @@ dependencies:
100
106
  requirements:
101
107
  - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: 0.86.0
109
+ version: 0.87.0
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
114
  - - "~>"
109
115
  - !ruby/object:Gem::Version
110
- version: 0.86.0
116
+ version: 0.87.0
111
117
  - !ruby/object:Gem::Dependency
112
118
  name: rubocop-performance
113
119
  requirement: !ruby/object:Gem::Requirement
@@ -150,6 +156,7 @@ files:
150
156
  - README.md
151
157
  - lib/gem_toys.rb
152
158
  - lib/gem_toys/template.rb
159
+ - lib/gem_toys/template/common_code.rb
153
160
  - lib/gem_toys/version.rb
154
161
  homepage: https://github.com/AlexWayfer/gem_toys
155
162
  licenses: