rubysmith 7.2.0 → 7.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.adoc +89 -7
  4. data/lib/rubysmith/builders/bundler.rb +1 -1
  5. data/lib/rubysmith/builders/dev_container/compose.rb +22 -0
  6. data/lib/rubysmith/builders/dev_container/configuration.rb +22 -0
  7. data/lib/rubysmith/builders/dev_container/dockerfile.rb +22 -0
  8. data/lib/rubysmith/builders/docker/build.rb +24 -0
  9. data/lib/rubysmith/builders/docker/console.rb +24 -0
  10. data/lib/rubysmith/builders/docker/entrypoint.rb +24 -0
  11. data/lib/rubysmith/builders/docker/file.rb +21 -0
  12. data/lib/rubysmith/builders/docker/ignore.rb +21 -0
  13. data/lib/rubysmith/cli/actions/bootsnap.rb +22 -0
  14. data/lib/rubysmith/cli/actions/circle_ci.rb +1 -1
  15. data/lib/rubysmith/cli/actions/dcoo.rb +22 -0
  16. data/lib/rubysmith/cli/actions/dev_container.rb +22 -0
  17. data/lib/rubysmith/cli/actions/docker.rb +22 -0
  18. data/lib/rubysmith/cli/actions/funding.rb +1 -1
  19. data/lib/rubysmith/cli/actions/git_hub.rb +1 -1
  20. data/lib/rubysmith/cli/actions/git_hub_ci.rb +1 -1
  21. data/lib/rubysmith/cli/actions/maximum.rb +1 -1
  22. data/lib/rubysmith/cli/actions/minimum.rb +1 -1
  23. data/lib/rubysmith/cli/commands/build.rb +14 -2
  24. data/lib/rubysmith/configuration/contract.rb +6 -0
  25. data/lib/rubysmith/configuration/defaults.yml +5 -0
  26. data/lib/rubysmith/configuration/model.rb +8 -0
  27. data/lib/rubysmith/container.rb +1 -0
  28. data/lib/rubysmith/extensions/pragmater.rb +14 -1
  29. data/lib/rubysmith/extensions/tocer.rb +2 -1
  30. data/lib/rubysmith/templates/%project_name%/.devcontainer/Dockerfile.erb +1 -0
  31. data/lib/rubysmith/templates/%project_name%/.devcontainer/compose.yaml.erb +35 -0
  32. data/lib/rubysmith/templates/%project_name%/.devcontainer/devcontainer.json.erb +17 -0
  33. data/lib/rubysmith/templates/%project_name%/.dockerignore.erb +36 -0
  34. data/lib/rubysmith/templates/%project_name%/.github/workflows/ci.yml.erb +5 -0
  35. data/lib/rubysmith/templates/%project_name%/Dockerfile.erb +60 -0
  36. data/lib/rubysmith/templates/%project_name%/Gemfile.erb +3 -0
  37. data/lib/rubysmith/templates/%project_name%/LICENSE-fair.adoc.erb +75 -0
  38. data/lib/rubysmith/templates/%project_name%/LICENSE-fair.md.erb +75 -0
  39. data/lib/rubysmith/templates/%project_name%/README.adoc.erb +4 -0
  40. data/lib/rubysmith/templates/%project_name%/README.md.erb +4 -0
  41. data/lib/rubysmith/templates/%project_name%/bin/docker/build.erb +15 -0
  42. data/lib/rubysmith/templates/%project_name%/bin/docker/console.erb +14 -0
  43. data/lib/rubysmith/templates/%project_name%/bin/docker/entrypoint.erb +8 -0
  44. data/lib/rubysmith.rb +1 -0
  45. data/rubysmith.gemspec +1 -1
  46. data.tar.gz.sig +0 -0
  47. metadata +24 -2
  48. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9fdd8d0d5d95ffa934cc1530482d7be79e42d5ed191657a8bcd2d5a32156603
4
- data.tar.gz: 91540e827a5d4a19ddee56f73070d6ab51a300109d3e293aabf7a01921bae108
3
+ metadata.gz: 1529b428758e620a07651f58648e9347d6285ae658c5ba7f4e60ec445958b279
4
+ data.tar.gz: 7efa1cd58738e11138bc31209ee0b6a2b0ab30a710f54016b8ad3c17b8f6a993
5
5
  SHA512:
6
- metadata.gz: ce755310287dcb66dc60075580d96cd98f88a56c83f3f230bddda9ddd53be759871fd52c849ee4a4eea2cbdcc0ee628f827cd82fc82fb8d0abd907f1fee1d5af
7
- data.tar.gz: 2e35bec0244e5d15ae4c50ec6a9504587855709e217011217731034c05f0c4a4a6da54a25c92ddfd8f0989588c41fd4cc111b75e94efb8579bc4c415bd9ee3b7
6
+ metadata.gz: bb59f4e7490b4e8298a9c14d31923f8e46d1f1ed28cc2ae0f6778d8269d4ee08eab8c304aef3c276439eb447ae5fb43d9b63cf6f9239d64a6e17bfaf70f81a7c
7
+ data.tar.gz: 51d8e56f5b799df3b03a9a20c8331004d5f44f0bbdf4371c8299f8a8f75a17719c74c11d2d9d4bc9159cd535f0c3bf26c86e6c1d93ece452a18d149490f490c6
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -2,8 +2,10 @@
2
2
  :toclevels: 5
3
3
  :figure-caption!:
4
4
 
5
- :gemsmith_link: link:https://alchemists.io/projects/gemsmith[Gemsmith]
6
5
  :bundler_inline_link: link:https://alchemists.io/articles/ruby_bundler_inline[Bundler Inline]
6
+ :development_containers_link: link:https://containers.dev[Development Containers]
7
+ :docker_link: link:https://www.docker.com[Docker]
8
+ :gemsmith_link: link:https://alchemists.io/projects/gemsmith[Gemsmith]
7
9
  :string_formats_link: link:https://docs.ruby-lang.org/en/3.3/format_specifications_rdoc.html[String Formats]
8
10
 
9
11
  = Rubysmith
@@ -26,6 +28,8 @@ toc::[]
26
28
  * Supports link:https://orcid.org[Citations (ORCID)].
27
29
  * Supports console script for local development.
28
30
  * Supports link:https://github.com/ruby/debug[Debug].
31
+ * Supports {development_containers_link}.
32
+ * Supports {docker_link}.
29
33
  * Supports link:https://git-scm.com[Git].
30
34
  * Supports link:https://github.com[GitHub].
31
35
  * Supports link:https://alchemists.io/projects/git-lint[Git Lint].
@@ -46,6 +50,7 @@ toc::[]
46
50
  ** Security
47
51
  ** Code of Conduct
48
52
  ** Contributions
53
+ ** Developer Certificate of Origin
49
54
  ** Communities
50
55
 
51
56
  == Requirements
@@ -135,6 +140,11 @@ link:https://github.com/amazing-print/amazing_print[Amazing Print] gem for debug
135
140
  a handy debugging tool when inspecting your Ruby objects and printing details in a quick to read
136
141
  format.
137
142
 
143
+ ===== Bootsnap
144
+
145
+ The `--bootsnap` option allows you to build your project with the
146
+ link:https://github.com/Shopify/bootsnap[Bootsnap] gem for improved performance. This is best used for pure, non-gem, Ruby projects and/or web applications in general.
147
+
138
148
  ===== Caliber
139
149
 
140
150
  The `--caliber` option allows you to build your project with the
@@ -175,12 +185,26 @@ loaded.
175
185
  The `--contributions` option allows you to link to contributing documentation so people know to
176
186
  contribute back to your work.
177
187
 
188
+ ===== Developer Certificate of Origin
189
+
190
+ The `--dcoo` option allows to you add link:https://developercertificate.org[Developer Certificate of Origin] documentation so all contributors are aware of how their contributions are applied in terms of ownership, copyright, and licensing.
191
+
192
+ ℹ️ This is disabled by default but will be enabled by default in the next major version.
193
+
178
194
  ===== Debug
179
195
 
180
196
  The `--debug` option allows you add the link:https://github.com/ruby/debug[Debug] gem to your
181
197
  project for debugging your code by setting breakpoints, remotely connecting to running code, and
182
198
  much more.
183
199
 
200
+ ===== Docker
201
+
202
+ The `--docker` option allows you add {docker_link} to your project so you can build and deploy to production.
203
+
204
+ ===== Development Containers
205
+
206
+ The `--devcontainer` option allows you add {development_containers_link} support to your project so you can develop locally by running your project within a {docker_link} container.
207
+
184
208
  ===== Funding
185
209
 
186
210
  The `--funding` option allows you add a link:https://github.com[GitHub] funding configuration to
@@ -299,6 +323,7 @@ author:
299
323
  uri: "%<organization_uri>s/team/%<author_handle>s"
300
324
  build:
301
325
  amazing_print: true
326
+ bootsnap: false
302
327
  caliber: true
303
328
  circle_ci: false
304
329
  citation: true
@@ -307,7 +332,10 @@ build:
307
332
  conduct: true
308
333
  console: true
309
334
  contributions: true
335
+ dcoo: false
310
336
  debug: true
337
+ devcontainer: false
338
+ docker: false
311
339
  funding: false
312
340
  git: true
313
341
  git_hub: false
@@ -344,6 +372,7 @@ project:
344
372
  community: "%<organization_uri>s/community"
345
373
  conduct: "%<organization_uri>s/policies/code_of_conduct"
346
374
  contributions: "%<organization_uri>s/policies/contributions"
375
+ dcoo: "%<organization_uri>s/policies/developer_certificate_of_origin"
347
376
  download: "https://rubygems.org/gems/%<project_name>s"
348
377
  funding: "%<repository_uri>s/sponsors/%<repository_handle>s"
349
378
  home: "%<organization_uri>s/projects/%<project_name>s"
@@ -404,17 +433,68 @@ following options are available:
404
433
 
405
434
  ==== License
406
435
 
407
- Use this section to define the license you want to use for your project. The following are available:
436
+ Use this section to define the license you want to use for your project. When picking a license, you can supply the appropriate `label` and `version` in addition to the `name`. The `name` is the only value you _can't_ customize. The following details all supported licenses.
437
+
438
+ ===== Apache
408
439
 
409
- * `apache`: Uses the link:https://www.apache.org/licenses/LICENSE-2.0[Apache] license.
410
- * `hippocratic`: Uses the link:https://firstdonoharm.dev[Hippocratic] license.
411
- * `mit`: Uses the link:https://mit-license.org[MIT] license.
440
+ To use the link:https://www.apache.org/licenses/LICENSE-2.0[Apache] license, apply this configuration:
412
441
 
413
- When picking a license, you can also supply the appropriate label and version in addition to the name.
442
+ [source,yaml]
443
+ ----
444
+ license:
445
+ label: "Apache"
446
+ name: "apache"
447
+ version: "2.0"
448
+ ----
449
+
450
+ ===== Fair Source
451
+
452
+ To use the link:https://fsl.software[Fair Source] license, apply this configuration:
453
+
454
+ [source,yaml]
455
+ ----
456
+ license:
457
+ label: "Fair Source"
458
+ name: "fair"
459
+ version: "FSL-1.1-Apache-2.0"
460
+ ----
461
+
462
+ ===== Hippocratic
463
+
464
+ To use the link:https://firstdonoharm.dev[Hippocratic] license, apply this configuration:
465
+
466
+ [source,yaml]
467
+ ----
468
+ license:
469
+ label: "Hippocratic"
470
+ name: "hippocratic"
471
+ version: "2.1"
472
+ ----
473
+
474
+ ℹ️ This is the default license unless you customize.
475
+
476
+ ===== MIT
477
+
478
+ To use the link:https://mit-license.org[MIT] license, apply this configuration:
479
+
480
+ [source,yaml]
481
+ ----
482
+ license:
483
+ label: "MIT"
484
+ name: "mit"
485
+ version: ""
486
+ ----
414
487
 
415
488
  ==== Organization
416
489
 
417
- Use this section to define URI information that points to your organization. This is useful for information that isn't project specific but related to all projects within your organization. You'll want to customize this URI especially for documentation purposes.
490
+ Use this section to define organization specific information. This is useful for information that isn't project specific but related to all projects within your organization. You'll want -- highly recommended -- to supply configuration details. For example, here's what a fictional organization might look like:
491
+
492
+ [source,yaml]
493
+ ----
494
+ organization:
495
+ label: ACME
496
+ uri: https://acme.io
497
+ ----
418
498
 
419
499
  ==== Project
420
500
 
@@ -477,6 +557,8 @@ bin/rake
477
557
 
478
558
  == link:https://alchemists.io/policies/contributions[Contributions]
479
559
 
560
+ == link:https://alchemists.io/policies/developer_certificate_of_origin[Developer Certificate of Origin]
561
+
480
562
  == link:https://alchemists.io/projects/rubysmith/versions[Versions]
481
563
 
482
564
  == link:https://alchemists.io/community[Community]
@@ -13,7 +13,7 @@ module Rubysmith
13
13
  .render
14
14
  .replace(/\n\s+group/, "\n\ngroup")
15
15
  .replace(/\n\s+gem/, "\n gem")
16
- .replace(/ (?=.+(refinements|zeitwerk))/, "")
16
+ .replace(/ (?=.+(bootsnap|refinements|zeitwerk))/, "")
17
17
  .replace(/(\n+|\s+)end/, "\nend")
18
18
  .replace(/\n\ngroup :(quality|development|test|tools) do\nend/, "")
19
19
  .replace(/org"\n+/, "org\"\n\n")
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "refinements/struct"
4
+
5
+ module Rubysmith
6
+ module Builders
7
+ module DevContainer
8
+ # Builds Docker Compose configuration for container.
9
+ class Compose < Abstract
10
+ using Refinements::Struct
11
+
12
+ def call
13
+ return false unless settings.build_devcontainer
14
+
15
+ path = "%project_name%/.devcontainer/compose.yaml.erb"
16
+ builder.call(settings.merge(template_path: path)).render
17
+ true
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "refinements/struct"
4
+
5
+ module Rubysmith
6
+ module Builders
7
+ module DevContainer
8
+ # Builds container configuration.
9
+ class Configuration < Abstract
10
+ using Refinements::Struct
11
+
12
+ def call
13
+ return false unless settings.build_devcontainer
14
+
15
+ path = "%project_name%/.devcontainer/devcontainer.json.erb"
16
+ builder.call(settings.merge(template_path: path)).render
17
+ true
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "refinements/struct"
4
+
5
+ module Rubysmith
6
+ module Builders
7
+ module DevContainer
8
+ # Builds Dockerfile for container.
9
+ class Dockerfile < Abstract
10
+ using Refinements::Struct
11
+
12
+ def call
13
+ return false unless settings.build_devcontainer
14
+
15
+ builder.call(settings.merge(template_path: "%project_name%/.devcontainer/Dockerfile.erb"))
16
+ .render
17
+ true
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "refinements/struct"
4
+
5
+ module Rubysmith
6
+ module Builders
7
+ module Docker
8
+ # Builds Docker build script.
9
+ class Build < Abstract
10
+ using Refinements::Struct
11
+
12
+ def call
13
+ return false unless settings.build_docker
14
+
15
+ builder.call(settings.merge(template_path: "%project_name%/bin/docker/build.erb"))
16
+ .render
17
+ .permit 0o755
18
+
19
+ true
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "refinements/struct"
4
+
5
+ module Rubysmith
6
+ module Builders
7
+ module Docker
8
+ # Builds Docker console script.
9
+ class Console < Abstract
10
+ using Refinements::Struct
11
+
12
+ def call
13
+ return false unless settings.build_docker
14
+
15
+ builder.call(settings.merge(template_path: "%project_name%/bin/docker/console.erb"))
16
+ .render
17
+ .permit 0o755
18
+
19
+ true
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "refinements/struct"
4
+
5
+ module Rubysmith
6
+ module Builders
7
+ module Docker
8
+ # Builds Docker entrypoint script.
9
+ class Entrypoint < Abstract
10
+ using Refinements::Struct
11
+
12
+ def call
13
+ return false unless settings.build_docker
14
+
15
+ builder.call(settings.merge(template_path: "%project_name%/bin/docker/entrypoint.erb"))
16
+ .render
17
+ .permit 0o755
18
+
19
+ true
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "refinements/struct"
4
+
5
+ module Rubysmith
6
+ module Builders
7
+ module Docker
8
+ # Builds Dockerfile configuration.
9
+ class File < Abstract
10
+ using Refinements::Struct
11
+
12
+ def call
13
+ return false unless settings.build_docker
14
+
15
+ builder.call(settings.merge(template_path: "%project_name%/Dockerfile.erb")).render
16
+ true
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "refinements/struct"
4
+
5
+ module Rubysmith
6
+ module Builders
7
+ module Docker
8
+ # Builds Docker ignore configuration.
9
+ class Ignore < Abstract
10
+ using Refinements::Struct
11
+
12
+ def call
13
+ return false unless settings.build_git
14
+
15
+ builder.call(settings.merge(template_path: "%project_name%/.dockerignore.erb")).render
16
+ true
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "sod"
4
+
5
+ module Rubysmith
6
+ module CLI
7
+ module Actions
8
+ # Stores Bootsnap flag.
9
+ class Bootsnap < Sod::Action
10
+ include Import[:settings]
11
+
12
+ description "Add Bootsnap gem."
13
+
14
+ on "--[no-]bootsnap"
15
+
16
+ default { Container[:settings].build_bootsnap }
17
+
18
+ def call(boolean) = settings.build_bootsnap = boolean
19
+ end
20
+ end
21
+ end
22
+ end
@@ -9,7 +9,7 @@ module Rubysmith
9
9
  class CircleCI < Sod::Action
10
10
  include Import[:settings]
11
11
 
12
- description "Add Circle CI settings."
12
+ description "Add Circle CI support."
13
13
 
14
14
  on "--[no-]circle_ci"
15
15
 
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "sod"
4
+
5
+ module Rubysmith
6
+ module CLI
7
+ module Actions
8
+ # Stores Developer Certificate of Origin flag.
9
+ class DCOO < Sod::Action
10
+ include Import[:settings]
11
+
12
+ description "Add Developer Certificate of Origin documentation."
13
+
14
+ on "--[no-]dcoo"
15
+
16
+ default { Container[:settings].build_dcoo }
17
+
18
+ def call(boolean) = settings.build_dcoo = boolean
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "sod"
4
+
5
+ module Rubysmith
6
+ module CLI
7
+ module Actions
8
+ # Stores Development Container flag.
9
+ class DevContainer < Sod::Action
10
+ include Import[:settings]
11
+
12
+ description "Add Development Container support."
13
+
14
+ on "--[no-]devcontainer"
15
+
16
+ default { Container[:settings].build_devcontainer }
17
+
18
+ def call(boolean) = settings.build_devcontainer = boolean
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "sod"
4
+
5
+ module Rubysmith
6
+ module CLI
7
+ module Actions
8
+ # Stores Docker flag.
9
+ class Docker < Sod::Action
10
+ include Import[:settings]
11
+
12
+ description "Add Docker support."
13
+
14
+ on "--[no-]docker"
15
+
16
+ default { Container[:settings].build_docker }
17
+
18
+ def call(boolean) = settings.build_docker = boolean
19
+ end
20
+ end
21
+ end
22
+ end
@@ -9,7 +9,7 @@ module Rubysmith
9
9
  class Funding < Sod::Action
10
10
  include Import[:settings]
11
11
 
12
- description "Add GitHub funding settings."
12
+ description "Add GitHub funding."
13
13
 
14
14
  on "--[no-]funding"
15
15
 
@@ -9,7 +9,7 @@ module Rubysmith
9
9
  class GitHub < Sod::Action
10
10
  include Import[:settings]
11
11
 
12
- description "Add GitHub templates."
12
+ description "Add GitHub code review and issue templates."
13
13
 
14
14
  on "--[no-]git_hub"
15
15
 
@@ -9,7 +9,7 @@ module Rubysmith
9
9
  class GitHubCI < Sod::Action
10
10
  include Import[:settings]
11
11
 
12
- description "Add GitHub continuous integration."
12
+ description "Add GitHub continuous integration support."
13
13
 
14
14
  on "--[no-]git_hub_ci"
15
15
 
@@ -12,7 +12,7 @@ module Rubysmith
12
12
 
13
13
  using ::Refinements::Struct
14
14
 
15
- description "Use maximum options."
15
+ description "Use maximum configuration."
16
16
 
17
17
  on "--max"
18
18
 
@@ -12,7 +12,7 @@ module Rubysmith
12
12
 
13
13
  using ::Refinements::Struct
14
14
 
15
- description "Use minimum options."
15
+ description "Use minimum configuration."
16
16
 
17
17
  on "--min"
18
18
 
@@ -37,6 +37,14 @@ module Rubysmith
37
37
  Builders::RSpec::Context.new,
38
38
  Builders::RSpec::Helper.new,
39
39
  Builders::Caliber.new,
40
+ Builders::DevContainer::Dockerfile.new,
41
+ Builders::DevContainer::Compose.new,
42
+ Builders::DevContainer::Configuration.new,
43
+ Builders::Docker::Build.new,
44
+ Builders::Docker::Console.new,
45
+ Builders::Docker::Entrypoint.new,
46
+ Builders::Docker::File.new,
47
+ Builders::Docker::Ignore.new,
40
48
  Extensions::Bundler.new,
41
49
  Extensions::Pragmater.new,
42
50
  Extensions::Tocer.new,
@@ -50,14 +58,18 @@ module Rubysmith
50
58
 
51
59
  on Actions::Name
52
60
  on Actions::AmazingPrint
61
+ on Actions::Bootsnap
53
62
  on Actions::Caliber
54
- on Actions::Console
55
- on Actions::Contributions
56
63
  on Actions::CircleCI
57
64
  on Actions::Citation
58
65
  on Actions::Community
59
66
  on Actions::Conduct
67
+ on Actions::Console
68
+ on Actions::Contributions
69
+ on Actions::DCOO
60
70
  on Actions::Debug
71
+ on Actions::DevContainer
72
+ on Actions::Docker
61
73
  on Actions::Funding
62
74
  on Actions::Git
63
75
  on Actions::GitHub
@@ -14,6 +14,7 @@ module Rubysmith
14
14
  required(:author_handle).filled :string
15
15
  required(:author_uri).filled :string
16
16
  required(:build_amazing_print).filled :bool
17
+ required(:build_bootsnap).filled :bool
17
18
  required(:build_caliber).filled :bool
18
19
  required(:build_circle_ci).filled :bool
19
20
  required(:build_citation).filled :bool
@@ -22,7 +23,10 @@ module Rubysmith
22
23
  required(:build_conduct).filled :bool
23
24
  required(:build_console).filled :bool
24
25
  required(:build_contributions).filled :bool
26
+ required(:build_dcoo).filled :bool
25
27
  required(:build_debug).filled :bool
28
+ required(:build_devcontainer).filled :bool
29
+ required(:build_docker).filled :bool
26
30
  required(:build_funding).filled :bool
27
31
  required(:build_git).filled :bool
28
32
  required(:build_git_hub).filled :bool
@@ -52,11 +56,13 @@ module Rubysmith
52
56
  required(:license_label).filled :string
53
57
  required(:license_name).filled :string
54
58
  required(:license_version).filled :string
59
+ optional(:organization_label).filled :string
55
60
  required(:organization_uri).filled :string
56
61
  optional(:project_name).filled :string
57
62
  optional(:project_uri_community).filled :string
58
63
  optional(:project_uri_conduct).filled :string
59
64
  optional(:project_uri_contributions).filled :string
65
+ optional(:project_uri_dcoo).filled :string
60
66
  optional(:project_uri_download).filled :string
61
67
  optional(:project_uri_funding).filled :string
62
68
  optional(:project_uri_home).filled :string
@@ -3,6 +3,7 @@ author:
3
3
  uri: "%<organization_uri>s/team/%<author_handle>s"
4
4
  build:
5
5
  amazing_print: true
6
+ bootsnap: false
6
7
  caliber: true
7
8
  circle_ci: false
8
9
  citation: true
@@ -11,7 +12,10 @@ build:
11
12
  conduct: true
12
13
  console: true
13
14
  contributions: true
15
+ dcoo: false
14
16
  debug: true
17
+ devcontainer: false
18
+ docker: false
15
19
  funding: false
16
20
  git: true
17
21
  git_hub: false
@@ -48,6 +52,7 @@ project:
48
52
  community: "%<organization_uri>s/community"
49
53
  conduct: "%<organization_uri>s/policies/code_of_conduct"
50
54
  contributions: "%<organization_uri>s/policies/contributions"
55
+ dcoo: "%<organization_uri>s/policies/developer_certificate_of_origin"
51
56
  download: "https://rubygems.org/gems/%<project_name>s"
52
57
  funding: "%<repository_uri>s/sponsors/%<repository_handle>s"
53
58
  home: "%<organization_uri>s/projects/%<project_name>s"
@@ -15,6 +15,7 @@ module Rubysmith
15
15
  :author_handle,
16
16
  :author_uri,
17
17
  :build_amazing_print,
18
+ :build_bootsnap,
18
19
  :build_caliber,
19
20
  :build_circle_ci,
20
21
  :build_citation,
@@ -23,7 +24,10 @@ module Rubysmith
23
24
  :build_conduct,
24
25
  :build_console,
25
26
  :build_contributions,
27
+ :build_dcoo,
26
28
  :build_debug,
29
+ :build_devcontainer,
30
+ :build_docker,
27
31
  :build_funding,
28
32
  :build_git,
29
33
  :build_git_hub,
@@ -53,11 +57,13 @@ module Rubysmith
53
57
  :license_name,
54
58
  :license_version,
55
59
  :loaded_at,
60
+ :organization_label,
56
61
  :organization_uri,
57
62
  :project_name,
58
63
  :project_uri_community,
59
64
  :project_uri_conduct,
60
65
  :project_uri_contributions,
66
+ :project_uri_dcoo,
61
67
  :project_uri_download,
62
68
  :project_uri_funding,
63
69
  :project_uri_home,
@@ -103,6 +109,8 @@ module Rubysmith
103
109
 
104
110
  def computed_project_uri_contributions = format_uri(__method__)
105
111
 
112
+ def computed_project_uri_dcoo = format_uri(__method__)
113
+
106
114
  def computed_project_uri_download = format_uri(__method__)
107
115
 
108
116
  def computed_project_uri_funding = format_uri(__method__)
@@ -25,6 +25,7 @@ module Rubysmith
25
25
  .add_transformer(:format, :project_uri_community)
26
26
  .add_transformer(:format, :project_uri_conduct)
27
27
  .add_transformer(:format, :project_uri_contributions)
28
+ .add_transformer(:format, :project_uri_dcoo)
28
29
  .add_transformer(:format, :project_uri_download, :project_name)
29
30
  .add_transformer(:format, :project_uri_funding)
30
31
  .add_transformer(:format, :project_uri_home, :project_name)
@@ -14,7 +14,20 @@ module Rubysmith
14
14
  CLIENT = ::Pragmater::Inserter.new(
15
15
  settings: ::Pragmater::Configuration::Model[
16
16
  comments: ["# frozen_string_literal: true"],
17
- patterns: %w[**/*.rake **/*.rb *.gemspec exe/* bin/* config.ru *file]
17
+ patterns: %w[
18
+ **/*.rake
19
+ **/*.rb
20
+ *.gemspec
21
+ exe/*
22
+ bin/console
23
+ bin/rake
24
+ bin/rspec
25
+ bin/rubocop
26
+ bin/setup
27
+ config.ru
28
+ Gemfile
29
+ Rakefile
30
+ ]
18
31
  ]
19
32
  ).freeze
20
33
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "refinements/pathname"
4
+ require "stringio"
4
5
  require "tocer"
5
6
 
6
7
  module Rubysmith
@@ -11,7 +12,7 @@ module Rubysmith
11
12
 
12
13
  using Refinements::Pathname
13
14
 
14
- def initialize(client: ::Tocer::Runner.new, **)
15
+ def initialize(client: ::Tocer::Runner.new(io: StringIO.new), **)
15
16
  @client = client
16
17
  super(**)
17
18
  end
@@ -0,0 +1 @@
1
+ FROM bkuhlmann/alpine-ruby:latest
@@ -0,0 +1,35 @@
1
+ name: "<%= settings.project_name %>"
2
+
3
+ services:
4
+ app:
5
+ build:
6
+ context: ..
7
+ dockerfile: .devcontainer/Dockerfile
8
+ volumes:
9
+ - ../..:/workspaces:cached
10
+ environment:
11
+ DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres
12
+ command: sleep infinity
13
+ depends_on:
14
+ - postgres
15
+ - redis
16
+
17
+ postgres:
18
+ image: postgres:latest
19
+ restart: unless-stopped
20
+ volumes:
21
+ - postgres-data:/var/lib/postgresql/data
22
+ environment:
23
+ POSTGRES_USER: postgres
24
+ POSTGRES_DB: postgres
25
+ POSTGRES_PASSWORD: postgres
26
+
27
+ redis:
28
+ image: redis:latest
29
+ restart: unless-stopped
30
+ volumes:
31
+ - redis-data:/data
32
+
33
+ volumes:
34
+ postgres-data:
35
+ redis-data:
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "<%= settings.project_name %>",
3
+ "dockerComposeFile": "compose.yaml",
4
+ "service": "app",
5
+ "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
6
+ "features": {
7
+ "ghcr.io/devcontainers/features/github-cli:1": {}
8
+ },
9
+ "containerEnv": {
10
+ "CAPYBARA_SERVER_PORT": "45678",
11
+ "REDIS_URL": "redis://redis:6379/1"
12
+ },
13
+ "forwardPorts": [2300, 3000, 5432, 6379],
14
+ <% if settings.build_setup %>
15
+ "postCreateCommand": "bin/setup"
16
+ <% end %>
17
+ }
@@ -0,0 +1,36 @@
1
+ # Assets
2
+ /node_modules/
3
+
4
+ # Bin
5
+ /bin
6
+ !/bin/console
7
+ !/bin/docker/entrypoint
8
+
9
+ # Bundler
10
+ /.bundle
11
+
12
+ # Development
13
+ /.devcontainer
14
+
15
+ # Docker
16
+ /.dockerignore
17
+ /Dockerfile*
18
+
19
+ # Environment
20
+ /.env*
21
+
22
+ # Git
23
+ /.git/
24
+ /.gitignore
25
+
26
+ # GitHub
27
+ /.github
28
+
29
+ # Log
30
+ /log/
31
+
32
+ # Temp
33
+ /tmp/
34
+
35
+ # XDG
36
+ /.config
@@ -8,6 +8,11 @@ jobs:
8
8
  runs-on: ubuntu-latest
9
9
 
10
10
  steps:
11
+ - name: System Update
12
+ run: |
13
+ sudo apt-get update
14
+ sudo apt-get install --no-install-recommends -y curl libjemalloc2
15
+
11
16
  - name: Checkout
12
17
  uses: actions/checkout@v4
13
18
 
@@ -0,0 +1,60 @@
1
+ # syntax = docker/dockerfile:1.4
2
+
3
+ ARG RUBY_VERSION=<%= RUBY_VERSION %>
4
+
5
+ FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base
6
+
7
+ LABEL description="<%= [settings.organization_label, "Application"].compact.join " " %>"
8
+ LABEL maintainer="<%= settings.author_name %> <<%= settings.author_email %>>"
9
+
10
+ WORKDIR /app
11
+
12
+ RUN <<STEPS
13
+ apt-get update -qq \
14
+ && apt-get install --no-install-recommends -y curl libjemalloc2 \
15
+ && rm -rf /var/lib/apt/lists /var/cache/apt/archives
16
+ STEPS
17
+
18
+ ENV RACK_ENV=production
19
+ ENV BUNDLE_DEPLOYMENT=1
20
+ ENV BUNDLE_PATH=/usr/local/bundle
21
+ ENV BUNDLE_WITHOUT="development:quality:test:tools"
22
+
23
+ FROM base AS build
24
+
25
+ RUN <<STEPS
26
+ apt-get update -qq \
27
+ && apt-get install --no-install-recommends -y build-essential git pkg-config \
28
+ && rm -rf /var/lib/apt/lists /var/cache/apt/archives
29
+ STEPS
30
+
31
+ COPY .ruby-version Gemfile Gemfile.lock ./
32
+
33
+ RUN <<STEPS
34
+ bundle install
35
+ rm -rf "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git
36
+ <% if settings.build_bootsnap %>
37
+ bundle exec bootsnap precompile --gemfile
38
+ <% end %>
39
+ STEPS
40
+
41
+ COPY . .
42
+ <% if settings.build_bootsnap %>
43
+ RUN bundle exec bootsnap precompile app/ lib/ slices/
44
+ <% end %>
45
+ FROM base
46
+ COPY --from=build "${BUNDLE_PATH}" "${BUNDLE_PATH}"
47
+ COPY --from=build /app /app
48
+
49
+ RUN <<STEPS
50
+ mkdir -p /app/log
51
+ mkdir -p /app/tmp
52
+ STEPS
53
+
54
+ RUN groupadd --system --gid 1000 app && \
55
+ useradd app --uid 1000 --gid 1000 --create-home --shell /bin/bash && \
56
+ chown -R app:app log tmp
57
+
58
+ USER 1000:1000
59
+
60
+ ENTRYPOINT ["/app/bin/docker/entrypoint"]
@@ -2,6 +2,9 @@ ruby file: ".ruby-version"
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
+ <% if settings.build_bootsnap %>
6
+ gem "bootsnap", "~> 1.18"
7
+ <% end %>
5
8
  <% if settings.build_refinements %>
6
9
  gem "refinements", "~> 12.7"
7
10
  <% end %>
@@ -0,0 +1,75 @@
1
+ = Functional Source License, Version 1.1, Apache 2.0 Future License
2
+
3
+ == Abbreviation
4
+
5
+ FSL-1.1-Apache-2.0
6
+
7
+ == Notice
8
+
9
+ Copyright <%= settings.loaded_at.strftime "%Y" %> link:<%= settings.author_uri %>[<%= settings.author_name %>]
10
+
11
+ == Terms and Conditions
12
+
13
+ === Licensor ("We")
14
+
15
+ The party offering the Software under these Terms and Conditions.
16
+
17
+ === The Software
18
+
19
+ The "Software" is each version of the software that we make available under these Terms and Conditions, as indicated by our inclusion of these Terms and Conditions with the Software.
20
+
21
+ === License Grant
22
+
23
+ Subject to your compliance with this License Grant and the Patents, Redistribution and Trademark clauses below, we hereby grant you the right to use, copy, modify, create derivative works, publicly perform, publicly display and redistribute the Software for any Permitted Purpose identified below.
24
+
25
+ === Permitted Purpose
26
+
27
+ A Permitted Purpose is any purpose other than a Competing Use. A Competing Use means making the Software available to others in a commercial product or service that:
28
+
29
+ 1. substitutes for the Software;
30
+
31
+ 2. substitutes for any other product or service we offer using the Software that exists as of the date we make the Software available; or
32
+
33
+ 3. offers the same or substantially similar functionality as the Software.
34
+
35
+ Permitted Purposes specifically include using the Software:
36
+
37
+ 1. for your internal use and access;
38
+
39
+ 2. for non-commercial education;
40
+
41
+ 3. for non-commercial research; and
42
+
43
+ 4. in connection with professional services that you provide to a licensee using the Software in accordance with these Terms and Conditions.
44
+
45
+ === Patents
46
+
47
+ To the extent your use for a Permitted Purpose would necessarily infringe our patents, the license grant above includes a license under our patents. If you make a claim against any party that the Software infringes or contributes to the infringement of any patent, then your patent license to the Software ends immediately.
48
+
49
+ === Redistribution
50
+
51
+ The Terms and Conditions apply to all copies, modifications and derivatives of the Software.
52
+
53
+ If you redistribute any copies, modifications or derivatives of the Software, you must include a copy of or a link to these Terms and Conditions and not remove any copyright notices provided in or with the Software.
54
+
55
+ === Disclaimer
56
+
57
+ THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
58
+
59
+ IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
60
+
61
+ === Trademarks
62
+
63
+ Except for displaying the License Details and identifying us as the origin of the Software, you have no right under these Terms and Conditions to use our trademarks, trade names, service marks or product names.
64
+
65
+ == Grant of Future License
66
+
67
+ We hereby irrevocably grant you an additional license to use the Software under the Apache License, Version 2.0 that is effective on the second anniversary of the date we make the Software available. On or after that date, you may use the Software under the Apache License, Version 2.0, in which case the following will apply:
68
+
69
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
70
+
71
+ You may obtain a copy of the License at
72
+
73
+ http://www.apache.org/licenses/LICENSE-2.0
74
+
75
+ Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
@@ -0,0 +1,75 @@
1
+ # Functional Source License, Version 1.1, Apache 2.0 Future License
2
+
3
+ ## Abbreviation
4
+
5
+ FSL-1.1-Apache-2.0
6
+
7
+ ## Notice
8
+
9
+ Copyright <%= settings.loaded_at.strftime "%Y" %> [<%= settings.author_name %>](<%= settings.author_uri %>)
10
+
11
+ ## Terms and Conditions
12
+
13
+ ### Licensor ("We")
14
+
15
+ The party offering the Software under these Terms and Conditions.
16
+
17
+ ### The Software
18
+
19
+ The "Software" is each version of the software that we make available under these Terms and Conditions, as indicated by our inclusion of these Terms and Conditions with the Software.
20
+
21
+ ### License Grant
22
+
23
+ Subject to your compliance with this License Grant and the Patents, Redistribution and Trademark clauses below, we hereby grant you the right to use, copy, modify, create derivative works, publicly perform, publicly display and redistribute the Software for any Permitted Purpose identified below.
24
+
25
+ ### Permitted Purpose
26
+
27
+ A Permitted Purpose is any purpose other than a Competing Use. A Competing Use means making the Software available to others in a commercial product or service that:
28
+
29
+ 1. substitutes for the Software;
30
+
31
+ 2. substitutes for any other product or service we offer using the Software that exists as of the date we make the Software available; or
32
+
33
+ 3. offers the same or substantially similar functionality as the Software.
34
+
35
+ Permitted Purposes specifically include using the Software:
36
+
37
+ 1. for your internal use and access;
38
+
39
+ 2. for non-commercial education;
40
+
41
+ 3. for non-commercial research; and
42
+
43
+ 4. in connection with professional services that you provide to a licensee using the Software in accordance with these Terms and Conditions.
44
+
45
+ ### Patents
46
+
47
+ To the extent your use for a Permitted Purpose would necessarily infringe our patents, the license grant above includes a license under our patents. If you make a claim against any party that the Software infringes or contributes to the infringement of any patent, then your patent license to the Software ends immediately.
48
+
49
+ ### Redistribution
50
+
51
+ The Terms and Conditions apply to all copies, modifications and derivatives of the Software.
52
+
53
+ If you redistribute any copies, modifications or derivatives of the Software, you must include a copy of or a link to these Terms and Conditions and not remove any copyright notices provided in or with the Software.
54
+
55
+ ### Disclaimer
56
+
57
+ THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
58
+
59
+ IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
60
+
61
+ ### Trademarks
62
+
63
+ Except for displaying the License Details and identifying us as the origin of the Software, you have no right under these Terms and Conditions to use our trademarks, trade names, service marks or product names.
64
+
65
+ ## Grant of Future License
66
+
67
+ We hereby irrevocably grant you an additional license to use the Software under the Apache License, Version 2.0 that is effective on the second anniversary of the date we make the Software available. On or after that date, you may use the Software under the Apache License, Version 2.0, in which case the following will apply:
68
+
69
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
70
+
71
+ You may obtain a copy of the License at
72
+
73
+ http://www.apache.org/licenses/LICENSE-2.0
74
+
75
+ Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
@@ -75,6 +75,10 @@ bin/rake
75
75
  == link:<%= settings.computed_project_uri_contributions %>[Contributions]
76
76
  <% end %>
77
77
 
78
+ <% if settings.build_dcoo %>
79
+ == link:<%= settings.computed_project_uri_dcoo %>[Developer Certificate of Origin]
80
+ <% end %>
81
+
78
82
  <% if settings.build_versions %>
79
83
  == link:<%= settings.computed_project_uri_versions %>[Versions]
80
84
  <% end %>
@@ -60,6 +60,10 @@ To test, run:
60
60
  ## [Contributions](<%= settings.computed_project_uri_contributions %>)
61
61
  <% end %>
62
62
 
63
+ <% if settings.build_dcoo %>
64
+ ## [Developer Certificate of Origin](<%= settings.computed_project_uri_dcoo %>)
65
+ <% end %>
66
+
63
67
  <% if settings.build_versions %>
64
68
  ## [Versions](<%= settings.computed_project_uri_versions %>)
65
69
  <% end %>
@@ -0,0 +1,15 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ Bundler.require :tools
5
+
6
+ version = Bundler.root.join(".ruby-version").read.chop
7
+
8
+ system <<~COMMAND
9
+ docker buildx \
10
+ build \
11
+ --load \
12
+ --build-arg RUBY_VERSION=#{version} \
13
+ --tag <%= settings.project_name %>:latest \
14
+ #{Bundler.root}
15
+ COMMAND
@@ -0,0 +1,14 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ Bundler.require :tools
5
+
6
+ system <<~COMMAND
7
+ docker run \
8
+ --disable-content-trust \
9
+ --pull never \
10
+ --interactive \
11
+ --tty \
12
+ --rm <%= settings.project_name %>:latest \
13
+ bash
14
+ COMMAND
@@ -0,0 +1,8 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ $VERBOSE = true
4
+
5
+ path = Dir["/usr/lib/*/libjemalloc.so.2"]
6
+ ENV["LD_PRELOAD"] = path.first unless ENV.key?("LD_PRELOAD") && path.empty?
7
+
8
+ system ARGV.join(" ")
data/lib/rubysmith.rb CHANGED
@@ -6,6 +6,7 @@ Zeitwerk::Loader.new.then do |loader|
6
6
  loader.inflector.inflect "cli" => "CLI",
7
7
  "ci" => "CI",
8
8
  "circle_ci" => "CircleCI",
9
+ "dcoo" => "DCOO",
9
10
  "erb" => "ERB",
10
11
  "git_hub_ci" => "GitHubCI",
11
12
  "irb_kit" => "IRBKit",
data/rubysmith.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "rubysmith"
5
- spec.version = "7.2.0"
5
+ spec.version = "7.3.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://alchemists.io/projects/rubysmith"
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubysmith
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.2.0
4
+ version: 7.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -35,7 +35,7 @@ cert_chain:
35
35
  3n5C8/6Zh9DYTkpcwPSuIfAga6wf4nXc9m6JAw8AuMLaiWN/r/2s4zJsUHYERJEu
36
36
  gZGm4JqtuSg8pYjPeIJxS960owq+SfuC+jxqmRA54BisFCv/0VOJi7tiJVY=
37
37
  -----END CERTIFICATE-----
38
- date: 2024-08-11 00:00:00.000000000 Z
38
+ date: 2024-08-21 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: cogger
@@ -282,6 +282,14 @@ files:
282
282
  - lib/rubysmith/builders/circle_ci.rb
283
283
  - lib/rubysmith/builders/console.rb
284
284
  - lib/rubysmith/builders/core.rb
285
+ - lib/rubysmith/builders/dev_container/compose.rb
286
+ - lib/rubysmith/builders/dev_container/configuration.rb
287
+ - lib/rubysmith/builders/dev_container/dockerfile.rb
288
+ - lib/rubysmith/builders/docker/build.rb
289
+ - lib/rubysmith/builders/docker/console.rb
290
+ - lib/rubysmith/builders/docker/entrypoint.rb
291
+ - lib/rubysmith/builders/docker/file.rb
292
+ - lib/rubysmith/builders/docker/ignore.rb
285
293
  - lib/rubysmith/builders/documentation/citation.rb
286
294
  - lib/rubysmith/builders/documentation/license.rb
287
295
  - lib/rubysmith/builders/documentation/readme.rb
@@ -304,6 +312,7 @@ files:
304
312
  - lib/rubysmith/builders/setup.rb
305
313
  - lib/rubysmith/builders/version.rb
306
314
  - lib/rubysmith/cli/actions/amazing_print.rb
315
+ - lib/rubysmith/cli/actions/bootsnap.rb
307
316
  - lib/rubysmith/cli/actions/caliber.rb
308
317
  - lib/rubysmith/cli/actions/circle_ci.rb
309
318
  - lib/rubysmith/cli/actions/citation.rb
@@ -311,7 +320,10 @@ files:
311
320
  - lib/rubysmith/cli/actions/conduct.rb
312
321
  - lib/rubysmith/cli/actions/console.rb
313
322
  - lib/rubysmith/cli/actions/contributions.rb
323
+ - lib/rubysmith/cli/actions/dcoo.rb
314
324
  - lib/rubysmith/cli/actions/debug.rb
325
+ - lib/rubysmith/cli/actions/dev_container.rb
326
+ - lib/rubysmith/cli/actions/docker.rb
315
327
  - lib/rubysmith/cli/actions/funding.rb
316
328
  - lib/rubysmith/cli/actions/git.rb
317
329
  - lib/rubysmith/cli/actions/git_hub.rb
@@ -354,6 +366,10 @@ files:
354
366
  - lib/rubysmith/renderers/namespace.rb
355
367
  - lib/rubysmith/templates/%project_name%/.circleci/config.yml.erb
356
368
  - lib/rubysmith/templates/%project_name%/.config/rubocop/config.yml.erb
369
+ - lib/rubysmith/templates/%project_name%/.devcontainer/Dockerfile.erb
370
+ - lib/rubysmith/templates/%project_name%/.devcontainer/compose.yaml.erb
371
+ - lib/rubysmith/templates/%project_name%/.devcontainer/devcontainer.json.erb
372
+ - lib/rubysmith/templates/%project_name%/.dockerignore.erb
357
373
  - lib/rubysmith/templates/%project_name%/.github/FUNDING.yml.erb
358
374
  - lib/rubysmith/templates/%project_name%/.github/ISSUE_TEMPLATE.md.erb
359
375
  - lib/rubysmith/templates/%project_name%/.github/PULL_REQUEST_TEMPLATE.md.erb
@@ -362,10 +378,13 @@ files:
362
378
  - lib/rubysmith/templates/%project_name%/.reek.yml.erb
363
379
  - lib/rubysmith/templates/%project_name%/.ruby-version.erb
364
380
  - lib/rubysmith/templates/%project_name%/CITATION.cff.erb
381
+ - lib/rubysmith/templates/%project_name%/Dockerfile.erb
365
382
  - lib/rubysmith/templates/%project_name%/Gemfile.erb
366
383
  - lib/rubysmith/templates/%project_name%/Guardfile.erb
367
384
  - lib/rubysmith/templates/%project_name%/LICENSE-apache.adoc.erb
368
385
  - lib/rubysmith/templates/%project_name%/LICENSE-apache.md.erb
386
+ - lib/rubysmith/templates/%project_name%/LICENSE-fair.adoc.erb
387
+ - lib/rubysmith/templates/%project_name%/LICENSE-fair.md.erb
369
388
  - lib/rubysmith/templates/%project_name%/LICENSE-hippocratic.adoc.erb
370
389
  - lib/rubysmith/templates/%project_name%/LICENSE-hippocratic.md.erb
371
390
  - lib/rubysmith/templates/%project_name%/LICENSE-mit.adoc.erb
@@ -376,6 +395,9 @@ files:
376
395
  - lib/rubysmith/templates/%project_name%/VERSIONS.adoc.erb
377
396
  - lib/rubysmith/templates/%project_name%/VERSIONS.md.erb
378
397
  - lib/rubysmith/templates/%project_name%/bin/console.erb
398
+ - lib/rubysmith/templates/%project_name%/bin/docker/build.erb
399
+ - lib/rubysmith/templates/%project_name%/bin/docker/console.erb
400
+ - lib/rubysmith/templates/%project_name%/bin/docker/entrypoint.erb
379
401
  - lib/rubysmith/templates/%project_name%/bin/guard.erb
380
402
  - lib/rubysmith/templates/%project_name%/bin/rake.erb
381
403
  - lib/rubysmith/templates/%project_name%/bin/rspec.erb
metadata.gz.sig CHANGED
Binary file