gemsmith 18.1.0 → 18.3.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: 28fb66ba1ffc978d88dad82d5b14e898581da78cb8c599c9ba702b6a68c6ad21
4
- data.tar.gz: 8cb98c3f67fcbc64cac58706430431b14429a7a5ad0399f14d03db04eb3f9215
3
+ metadata.gz: 338623748228d9c9d9560b315ca568e01b2aa0e261f83215d3b55dc0eae22074
4
+ data.tar.gz: 07cc383d025d2dc06574fb6e5b5b9b6784bea87f8108387bcb6a0fff1e0c7599
5
5
  SHA512:
6
- metadata.gz: afe90b17b858eae6e574b1f41af7b5ed9f7b95b421ff52a4726ce2a837116a3ceb759ab610e2a5eef06a088070773c96ce7467449e18ac3f6354a86efef18fbb
7
- data.tar.gz: 47302fcdba57685e3c5b1f46cc082974194eb81217e350960aed20fd696c75a0741dc795cea271b1266955035b86e8c719ea5d1ef56fcbbf1842e9fb71654b63
6
+ metadata.gz: cb882950b11cb0b27a74e4ecffe3b48038b538a94fe02c4e5b68c5e501004b5e8439860efd6aba51dd634197d6062a7808daef84217b23bce83a961c14d2741b
7
+ data.tar.gz: 181b13d0cd991d906c4e92f4668ee0b2ca27aa47de3b84fefa1ecdf5d0a0dfeb1f5d64998d33ccd9221c2abc653def248508261f9907b0e09bb41f7ec9a38b2f
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -25,15 +25,6 @@ toc::[]
25
25
  . link:https://www.ruby-lang.org[Ruby].
26
26
  . link:https://rubygems.org[RubyGems].
27
27
 
28
- == Setup
29
-
30
- To install, run:
31
-
32
- [source,bash]
33
- ----
34
- gem install gemsmith
35
- ----
36
-
37
28
  == Upgrade
38
29
 
39
30
  If upgrading from 17.0.0 to 18.0.0, you'll want to be aware of the following changes:
@@ -43,6 +34,15 @@ If upgrading from 17.0.0 to 18.0.0, you'll want to be aware of the following cha
43
34
  ability to sign tags has been removed (this happens dynamically based on your Git configuration
44
35
  which gives you more flexibility).
45
36
 
37
+ == Setup
38
+
39
+ To install, run:
40
+
41
+ [source,bash]
42
+ ----
43
+ gem install gemsmith
44
+ ----
45
+
46
46
  == Usage
47
47
 
48
48
  === Command Line Interface (CLI)
@@ -222,6 +222,20 @@ the following:
222
222
  Feel free to take the combined Rubysmith + Gemsmith configuration, modify, and save as your own
223
223
  custom `configuration.yml`.
224
224
 
225
+ It is recommended that you provide URLs for your project which would be all keys found in this
226
+ section:
227
+
228
+ [source,yaml]
229
+ ----
230
+ :project:
231
+ :url:
232
+ # Add sub-key values here.
233
+ ----
234
+
235
+ When these values exist, you'll benefit from having this information added to your generated
236
+ `gemspec` and project documentation. Otherwise -- if these values are empty -- they are removed from
237
+ new gem generation.
238
+
225
239
  === Workflows
226
240
 
227
241
  When building/testing your gem locally, a typical workflow is:
@@ -324,7 +338,7 @@ specification and RubyGems credentials.
324
338
 
325
339
  === Gem Specification Metadata
326
340
 
327
- Add the following metadata to your gemspec:
341
+ Add the following gemspec metadata to privately publish new versions of your gem:
328
342
 
329
343
  [source,ruby]
330
344
  ----
@@ -365,10 +379,10 @@ to our private server. This is important because this is how we link our gem spe
365
379
  to our private credentials. To illustrate further, here are both files truncated and shown together:
366
380
 
367
381
  ....
368
- # Gem specification metadata which defines the private host to publish to.
382
+ # Gem Specification: The metadata which defines the private host to publish to.
369
383
  spec.metadata = {"allowed_push_host" => "https://private.example.com"}
370
384
 
371
- # Gem credentials where the URL value above becomes the key which enables authentication.
385
+ # Gem Credentials: The URL value -- shown above -- which becomes the key for enabling authentication.
372
386
  https://private.example.com: Basic dXNlcjpwYXNzd29yZA==
373
387
  ....
374
388
 
@@ -397,6 +411,49 @@ Lastly, should you need to delete a credential (due to a bad login/password for
397
411
  open the `$HOME/.gem/credentials` in your default editor and remove the line(s) you don't need. Upon
398
412
  next publish of your gem, you'll be prompted for the missing credentials.
399
413
 
414
+ === Bundler Configuration
415
+
416
+ So far, I've shown how to privately _publish_ a gem but now we need to teach Bundler how to install
417
+ the gem as dependency within your upstream project. For demonstration purposes, I'm going to assume
418
+ you are using GitHub Packages as your private gem server. You should be able to quickly translate
419
+ this documentation if using an alternate private gem server, though.
420
+
421
+ The first step is to create your own GitHub Personal Access Token (PAT) which is fast to do by
422
+ following GitHub's own
423
+ link:https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token[documentation].
424
+ At a minimum, you'll need to enable _repo_ and _packages_ scopes with read/write access.
425
+
426
+ With your PAT in hand, you'll need to ensure link:https://bundler.io[Bundler] can authenticate to
427
+ the private GitHub Packages gem server by running the following:
428
+
429
+ [source,bash]
430
+ ----
431
+ bundle config set --global rubygems.pkg.github.com <your GitHub handle>:<PAT>
432
+ # Example: bundle config set --global rubygems.pkg.github.com jdoe:ghp_c5b8d394abefebbf45c7b27b379c74978923
433
+ ----
434
+
435
+ 💡 Using Bundler's `--global` flag ensures you only have to define these credentials once for _all_
436
+ projects which reduces maintenance burden on you. The path to this global configuration can be found
437
+ here: `$HOME/.config/bundler/configuration.yml`.
438
+
439
+ Lastly, you can add this gem to your `Gemfile` as follows:
440
+
441
+ [source,ruby]
442
+ ----
443
+ source "https://rubygems.pkg.github.com/alchemists" do
444
+ gem "demo", "~> 0.0"
445
+ end
446
+ ----
447
+
448
+ At this point -- if you run `bundle install` -- you should see the following in your console:
449
+
450
+ ....
451
+ Fetching gem metadata from https://rubygems.pkg.github.com/alchemists/...
452
+ Resolving dependencies...Fetching gem metadata from https://rubygems.org/.....
453
+ ....
454
+
455
+ If so, you're all set!
456
+
400
457
  === GitHub Actions/Packages Automation
401
458
 
402
459
  Earlier, I hinted at using GitHub Packages but what if you could automate the entire publishing
data/gemsmith.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "gemsmith"
5
- spec.version = "18.1.0"
5
+ spec.version = "18.3.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://www.alchemists.io/projects/gemsmith"
@@ -23,16 +23,16 @@ Gem::Specification.new do |spec|
23
23
  spec.cert_chain = [Gem.default_cert_path]
24
24
 
25
25
  spec.required_ruby_version = "~> 3.1"
26
- spec.add_dependency "auto_injector", "~> 0.4"
27
- spec.add_dependency "cogger", "~> 0.0"
26
+ spec.add_dependency "auto_injector", "~> 0.5"
27
+ spec.add_dependency "cogger", "~> 0.1"
28
28
  spec.add_dependency "dry-container", "~> 0.9"
29
29
  spec.add_dependency "dry-monads", "~> 1.4"
30
30
  spec.add_dependency "milestoner", "~> 14.0"
31
- spec.add_dependency "refinements", "~> 9.2"
32
- spec.add_dependency "rubysmith", "~> 3.1"
33
- spec.add_dependency "runcom", "~> 8.2"
34
- spec.add_dependency "spek", "~> 0.2"
35
- spec.add_dependency "versionaire", "~> 10.0"
31
+ spec.add_dependency "refinements", "~> 9.4"
32
+ spec.add_dependency "rubysmith", "~> 3.3"
33
+ spec.add_dependency "runcom", "~> 8.4"
34
+ spec.add_dependency "spek", "~> 0.3"
35
+ spec.add_dependency "versionaire", "~> 10.3"
36
36
  spec.add_dependency "zeitwerk", "~> 2.5"
37
37
 
38
38
  spec.bindir = "exe"
@@ -20,6 +20,8 @@ module Gemsmith
20
20
 
21
21
  builder.call(config)
22
22
  .render
23
+ .replace(" \n", "")
24
+ .replace(" ", " ")
23
25
  .replace(" \n", "")
24
26
  .replace(" spec", " spec")
25
27
  .replace(/\}\s+s/m, "}\n\n s")
@@ -5,6 +5,8 @@ module Gemsmith
5
5
  module Actions
6
6
  # Handles the build action.
7
7
  class Build
8
+ include Gemsmith::Import[:logger]
9
+
8
10
  # Order is important.
9
11
  BUILDERS = [
10
12
  Rubysmith::Builders::Core,
@@ -40,15 +42,22 @@ module Gemsmith
40
42
  Builders::Git::Commit
41
43
  ].freeze
42
44
 
43
- def initialize builders: BUILDERS
45
+ def initialize builders: BUILDERS, **dependencies
46
+ super(**dependencies)
44
47
  @builders = builders
45
48
  end
46
49
 
47
- def call(configuration) = builders.each { |builder| builder.call configuration }
50
+ def call configuration
51
+ log_info "Building project skeleton: #{configuration.project_name}..."
52
+ builders.each { |builder| builder.call configuration }
53
+ log_info "Project skeleton complete!"
54
+ end
48
55
 
49
56
  private
50
57
 
51
- attr_reader :configuration, :builders
58
+ attr_reader :builders
59
+
60
+ def log_info(message) = logger.info { message }
52
61
  end
53
62
  end
54
63
  end
@@ -8,13 +8,25 @@ Gem::Specification.new do |spec|
8
8
  spec.license = "<%= configuration.license_label_version %>"
9
9
 
10
10
  spec.metadata = {
11
- "bug_tracker_uri" => "<%= configuration.computed_project_url_issues %>",
12
- "changelog_uri" => "<%= configuration.computed_project_url_versions %>",
13
- "documentation_uri" => "<%= configuration.computed_project_url_home %>",
14
- "funding_uri" => "<%= configuration.computed_project_url_funding %>",
11
+ <% unless configuration.computed_project_url_issues.empty? %>
12
+ "bug_tracker_uri" => "<%= configuration.computed_project_url_issues %>",
13
+ <% end %>
14
+ <% unless configuration.computed_project_url_versions.empty? %>
15
+ "changelog_uri" => "<%= configuration.computed_project_url_versions %>",
16
+ <% end %>
17
+ <% unless configuration.computed_project_url_home.empty? %>
18
+ "documentation_uri" => "<%= configuration.computed_project_url_home %>",
19
+ <% end %>
20
+ <% unless configuration.computed_project_url_funding.empty? %>
21
+ "funding_uri" => "<%= configuration.computed_project_url_funding %>",
22
+ <% end %>
15
23
  "label" => "<%= configuration.project_label %>",
16
- "rubygems_mfa_required" => "true",
17
- "source_code_uri" => "<%= configuration.computed_project_url_source %>"
24
+ <% if configuration.computed_project_url_source.empty? %>
25
+ "rubygems_mfa_required" => "true"
26
+ <% else %>
27
+ "rubygems_mfa_required" => "true",
28
+ "source_code_uri" => "<%= configuration.computed_project_url_source %>"
29
+ <% end %>
18
30
  }
19
31
 
20
32
  <% if configuration.build_security %>
@@ -24,19 +36,19 @@ Gem::Specification.new do |spec|
24
36
 
25
37
  spec.required_ruby_version = "~> <%= RUBY_VERSION[/\d+\.\d+/] %>"
26
38
  <% if configuration.build_cli %>
27
- spec.add_dependency "auto_injector", "~> 0.4"
39
+ spec.add_dependency "auto_injector", "~> 0.5"
28
40
  <% end %>
29
41
  <% if configuration.build_cli %>
30
42
  spec.add_dependency "dry-container", "~> 0.9"
31
43
  <% end %>
32
44
  <% if configuration.build_refinements %>
33
- spec.add_dependency "refinements", "~> 9.2"
45
+ spec.add_dependency "refinements", "~> 9.4"
34
46
  <% end %>
35
47
  <% if configuration.build_cli %>
36
- spec.add_dependency "runcom", "~> 8.2"
48
+ spec.add_dependency "runcom", "~> 8.4"
37
49
  <% end %>
38
50
  <% if configuration.build_cli %>
39
- spec.add_dependency "spek", "~> 0.2"
51
+ spec.add_dependency "spek", "~> 0.3"
40
52
  <% end %>
41
53
  <% if configuration.build_zeitwerk %>
42
54
  spec.add_dependency "zeitwerk", "~> 2.5"
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemsmith
3
3
  version: !ruby/object:Gem::Version
4
- version: 18.1.0
4
+ version: 18.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -28,7 +28,7 @@ cert_chain:
28
28
  CxDe2+VuChj4I1nvIHdu+E6XoEVlanUPKmSg6nddhkKn2gC45Kyzh6FZqnzH/CRp
29
29
  RFE=
30
30
  -----END CERTIFICATE-----
31
- date: 2022-04-30 00:00:00.000000000 Z
31
+ date: 2022-05-28 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: auto_injector
@@ -36,28 +36,28 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.4'
39
+ version: '0.5'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.4'
46
+ version: '0.5'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: cogger
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.0'
53
+ version: '0.1'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '0.0'
60
+ version: '0.1'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: dry-container
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -106,70 +106,70 @@ dependencies:
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '9.2'
109
+ version: '9.4'
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '9.2'
116
+ version: '9.4'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: rubysmith
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '3.1'
123
+ version: '3.3'
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '3.1'
130
+ version: '3.3'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: runcom
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: '8.2'
137
+ version: '8.4'
138
138
  type: :runtime
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: '8.2'
144
+ version: '8.4'
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: spek
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '0.2'
151
+ version: '0.3'
152
152
  type: :runtime
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: '0.2'
158
+ version: '0.3'
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: versionaire
161
161
  requirement: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: '10.0'
165
+ version: '10.3'
166
166
  type: :runtime
167
167
  prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: '10.0'
172
+ version: '10.3'
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: zeitwerk
175
175
  requirement: !ruby/object:Gem::Requirement
@@ -280,7 +280,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
280
280
  - !ruby/object:Gem::Version
281
281
  version: '0'
282
282
  requirements: []
283
- rubygems_version: 3.3.12
283
+ rubygems_version: 3.3.14
284
284
  signing_key:
285
285
  specification_version: 4
286
286
  summary: A command line interface for smithing Ruby gems.
metadata.gz.sig CHANGED
Binary file