gemsmith 18.0.2 → 18.1.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.adoc +67 -10
- data/gemsmith.gemspec +3 -2
- data/lib/gemsmith/templates/%project_name%/%project_name%.gemspec.erb +1 -0
- data.tar.gz.sig +0 -0
- metadata +6 -5
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28fb66ba1ffc978d88dad82d5b14e898581da78cb8c599c9ba702b6a68c6ad21
|
4
|
+
data.tar.gz: 8cb98c3f67fcbc64cac58706430431b14429a7a5ad0399f14d03db04eb3f9215
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afe90b17b858eae6e574b1f41af7b5ed9f7b95b421ff52a4726ce2a837116a3ceb759ab610e2a5eef06a088070773c96ce7467449e18ac3f6354a86efef18fbb
|
7
|
+
data.tar.gz: 47302fcdba57685e3c5b1f46cc082974194eb81217e350960aed20fd696c75a0741dc795cea271b1266955035b86e8c719ea5d1ef56fcbbf1842e9fb71654b63
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/README.adoc
CHANGED
@@ -71,6 +71,7 @@ BUILD OPTIONS:
|
|
71
71
|
--[no-]console Add console script. Default: true.
|
72
72
|
--[no-]contributions Add contributions documentation. Default: true.
|
73
73
|
--[no-]debug Add Debug gem. Default: true.
|
74
|
+
--[no-]funding Add GitHub funding configuration. Default: false.
|
74
75
|
--[no-]git Add Git. Default: true.
|
75
76
|
--[no-]git_hub Add GitHub templates. Default: false.
|
76
77
|
--[no-]git-lint Add Git Lint gem. Default: true.
|
@@ -290,8 +291,8 @@ gem cert --build you@example.com
|
|
290
291
|
chmod 600 gem-*.pem
|
291
292
|
----
|
292
293
|
|
293
|
-
The resulting
|
294
|
-
|
294
|
+
The resulting `.pem` key files can be referenced via the `signing_key` and `cert_chain` of your
|
295
|
+
`.gemspec` which Gemsmith provides for you via the `--security` build option. Example:
|
295
296
|
|
296
297
|
[source,ruby]
|
297
298
|
----
|
@@ -332,7 +333,7 @@ Gem::Specification.new do |spec|
|
|
332
333
|
end
|
333
334
|
----
|
334
335
|
|
335
|
-
💡 The gemspec metadata _must_ be strings per the
|
336
|
+
💡 The gemspec metadata (i.e. keys and values) _must_ be strings per the
|
336
337
|
link:https://guides.rubygems.org/specification-reference/#metadata[RubyGems Specification].
|
337
338
|
|
338
339
|
Use of the `allowed_push_host` key provides two important capabilities:
|
@@ -360,8 +361,8 @@ https://private.example.com: Basic dXNlcjpwYXNzd29yZA==
|
|
360
361
|
|
361
362
|
Notice how the first line contains credentials for the public RubyGems server while the second line
|
362
363
|
is for our private example server. You'll also notice that the key is not a symbol but a URL string
|
363
|
-
to our private server. This is important
|
364
|
-
our private credentials. To illustrate further, here are both files truncated and shown together:
|
364
|
+
to our private server. This is important because this is how we link our gem specification metadata
|
365
|
+
to our private credentials. To illustrate further, here are both files truncated and shown together:
|
365
366
|
|
366
367
|
....
|
367
368
|
# Gem specification metadata which defines the private host to publish to.
|
@@ -371,8 +372,8 @@ spec.metadata = {"allowed_push_host" => "https://private.example.com"}
|
|
371
372
|
https://private.example.com: Basic dXNlcjpwYXNzd29yZA==
|
372
373
|
....
|
373
374
|
|
374
|
-
When the above are linked together
|
375
|
-
|
375
|
+
When the above are linked together, you enable Gemsmith to publish your gem using only the following
|
376
|
+
command:
|
376
377
|
|
377
378
|
[source,bash]
|
378
379
|
----
|
@@ -380,8 +381,9 @@ gemsmith --publish
|
|
380
381
|
----
|
381
382
|
|
382
383
|
This is especially powerful when publishing to
|
383
|
-
link:https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry[GitHub
|
384
|
-
Packages
|
384
|
+
link:https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry[GitHub
|
385
|
+
Packages] which would look like this when properly configured (truncated for brevity while using
|
386
|
+
fake data):
|
385
387
|
|
386
388
|
....
|
387
389
|
# Gem specification
|
@@ -395,6 +397,62 @@ Lastly, should you need to delete a credential (due to a bad login/password for
|
|
395
397
|
open the `$HOME/.gem/credentials` in your default editor and remove the line(s) you don't need. Upon
|
396
398
|
next publish of your gem, you'll be prompted for the missing credentials.
|
397
399
|
|
400
|
+
=== GitHub Actions/Packages Automation
|
401
|
+
|
402
|
+
Earlier, I hinted at using GitHub Packages but what if you could automate the entire publishing
|
403
|
+
process? Well, good news, you can by using GitHub Actions to publish your packages. Here's the YAML
|
404
|
+
necessary to accomplish this endeavor:
|
405
|
+
|
406
|
+
``` yaml
|
407
|
+
name: Gemsmith
|
408
|
+
|
409
|
+
on:
|
410
|
+
push:
|
411
|
+
branches: main
|
412
|
+
|
413
|
+
jobs:
|
414
|
+
build:
|
415
|
+
runs-on: ubuntu-latest
|
416
|
+
container:
|
417
|
+
image: ruby:latest
|
418
|
+
permissions:
|
419
|
+
contents: write
|
420
|
+
packages: write
|
421
|
+
|
422
|
+
steps:
|
423
|
+
- name: Checkout
|
424
|
+
uses: actions/checkout@v3
|
425
|
+
with:
|
426
|
+
fetch-depth: '0'
|
427
|
+
ref: ${{github.head_ref}}
|
428
|
+
- name: Setup
|
429
|
+
run: |
|
430
|
+
git config user.email "engineering@example.com"
|
431
|
+
git config user.name "Gemsmith Publisher"
|
432
|
+
mkdir -p $HOME/.gem
|
433
|
+
printf "%s\n" "https://rubygems.pkg.github.com/example: Bearer ${{secrets.GITHUB_TOKEN}}" > $HOME/.gem/credentials
|
434
|
+
chmod 0600 $HOME/.gem/credentials
|
435
|
+
- name: Install
|
436
|
+
run: gem install gemsmith
|
437
|
+
- name: Publish
|
438
|
+
run: |
|
439
|
+
if git describe --tags --abbrev=0 > /dev/null 2>&1; then
|
440
|
+
gemsmith --publish
|
441
|
+
else
|
442
|
+
printf "%s\n" "First gem version must be manually created. Skipping."
|
443
|
+
fi
|
444
|
+
```
|
445
|
+
|
446
|
+
The above will ensure the following:
|
447
|
+
|
448
|
+
* Only the first version requires manual publishing (hence the check for existing Git tags).
|
449
|
+
* Duplicate versions are always skipped.
|
450
|
+
* Only when a new version is detected (by changing your gemspec version) and you are on the `main`
|
451
|
+
branch will a new version be automatically published.
|
452
|
+
|
453
|
+
This entire workflow is explained in my
|
454
|
+
link:https://www.alchemists.io/talks/ruby_git_hub_packages[talk] on this exact subject too.
|
455
|
+
|
398
456
|
== Promotion
|
399
457
|
|
400
458
|
Once your gem is released, let the world know about your accomplishment by posting an update to
|
@@ -402,7 +460,6 @@ these sites:
|
|
402
460
|
|
403
461
|
* link:https://rubyflow.com[RubyFlow]
|
404
462
|
* link:https://ruby.libhunt.com[Ruby Library Hunt]
|
405
|
-
* link:https://rubydaily.org[RubyDaily]
|
406
463
|
* link:https://awesome-ruby.com[Awesome Ruby]
|
407
464
|
* link:https://www.ruby-toolbox.com[Ruby Toolbox]
|
408
465
|
* link:https://www.ruby-lang.org/en/community[Ruby Community]
|
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.0
|
5
|
+
spec.version = "18.1.0"
|
6
6
|
spec.authors = ["Brooke Kuhlmann"]
|
7
7
|
spec.email = ["brooke@alchemists.io"]
|
8
8
|
spec.homepage = "https://www.alchemists.io/projects/gemsmith"
|
@@ -13,6 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
"bug_tracker_uri" => "https://github.com/bkuhlmann/gemsmith/issues",
|
14
14
|
"changelog_uri" => "https://www.alchemists.io/projects/gemsmith/versions",
|
15
15
|
"documentation_uri" => "https://www.alchemists.io/projects/gemsmith",
|
16
|
+
"funding_uri" => "https://github.com/sponsors/bkuhlmann",
|
16
17
|
"label" => "Gemsmith",
|
17
18
|
"rubygems_mfa_required" => "true",
|
18
19
|
"source_code_uri" => "https://github.com/bkuhlmann/gemsmith"
|
@@ -28,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
28
29
|
spec.add_dependency "dry-monads", "~> 1.4"
|
29
30
|
spec.add_dependency "milestoner", "~> 14.0"
|
30
31
|
spec.add_dependency "refinements", "~> 9.2"
|
31
|
-
spec.add_dependency "rubysmith", "~> 3.
|
32
|
+
spec.add_dependency "rubysmith", "~> 3.1"
|
32
33
|
spec.add_dependency "runcom", "~> 8.2"
|
33
34
|
spec.add_dependency "spek", "~> 0.2"
|
34
35
|
spec.add_dependency "versionaire", "~> 10.0"
|
@@ -11,6 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
"bug_tracker_uri" => "<%= configuration.computed_project_url_issues %>",
|
12
12
|
"changelog_uri" => "<%= configuration.computed_project_url_versions %>",
|
13
13
|
"documentation_uri" => "<%= configuration.computed_project_url_home %>",
|
14
|
+
"funding_uri" => "<%= configuration.computed_project_url_funding %>",
|
14
15
|
"label" => "<%= configuration.project_label %>",
|
15
16
|
"rubygems_mfa_required" => "true",
|
16
17
|
"source_code_uri" => "<%= configuration.computed_project_url_source %>"
|
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.0
|
4
|
+
version: 18.1.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-
|
31
|
+
date: 2022-04-30 00:00:00.000000000 Z
|
32
32
|
dependencies:
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: auto_injector
|
@@ -120,14 +120,14 @@ dependencies:
|
|
120
120
|
requirements:
|
121
121
|
- - "~>"
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: '3.
|
123
|
+
version: '3.1'
|
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.
|
130
|
+
version: '3.1'
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: runcom
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -261,6 +261,7 @@ metadata:
|
|
261
261
|
bug_tracker_uri: https://github.com/bkuhlmann/gemsmith/issues
|
262
262
|
changelog_uri: https://www.alchemists.io/projects/gemsmith/versions
|
263
263
|
documentation_uri: https://www.alchemists.io/projects/gemsmith
|
264
|
+
funding_uri: https://github.com/sponsors/bkuhlmann
|
264
265
|
label: Gemsmith
|
265
266
|
rubygems_mfa_required: 'true'
|
266
267
|
source_code_uri: https://github.com/bkuhlmann/gemsmith
|
@@ -279,7 +280,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
279
280
|
- !ruby/object:Gem::Version
|
280
281
|
version: '0'
|
281
282
|
requirements: []
|
282
|
-
rubygems_version: 3.3.
|
283
|
+
rubygems_version: 3.3.12
|
283
284
|
signing_key:
|
284
285
|
specification_version: 4
|
285
286
|
summary: A command line interface for smithing Ruby gems.
|
metadata.gz.sig
CHANGED
Binary file
|