rubysmith 7.3.0 → 7.4.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: 1529b428758e620a07651f58648e9347d6285ae658c5ba7f4e60ec445958b279
4
- data.tar.gz: 7efa1cd58738e11138bc31209ee0b6a2b0ab30a710f54016b8ad3c17b8f6a993
3
+ metadata.gz: 852415a9cd9eba19692d24330fb641cf6d19f039dbe1b90709e6c88881b844cf
4
+ data.tar.gz: 2d398b6d843ea06f0f9a6896b26eab8cc18caadcd2f6cc616a10609bbfaef907
5
5
  SHA512:
6
- metadata.gz: bb59f4e7490b4e8298a9c14d31923f8e46d1f1ed28cc2ae0f6778d8269d4ee08eab8c304aef3c276439eb447ae5fb43d9b63cf6f9239d64a6e17bfaf70f81a7c
7
- data.tar.gz: 51d8e56f5b799df3b03a9a20c8331004d5f44f0bbdf4371c8299f8a8f75a17719c74c11d2d9d4bc9159cd535f0c3bf26c86e6c1d93ece452a18d149490f490c6
6
+ metadata.gz: 749891117987d624f28fef062d8b319df088a20c592b3fb17dd7ccc4ed1508a9841b7ca827c7073847bf8871a848c18feea57c364669e1240baf9f192c2c9c51
7
+ data.tar.gz: 5f9049b2774b91a3faab55f12fcd1fc1332425d514d8508f614ee18f8944fcdfc5dc2972ab737815b299d157159409329efe47d3b1ece6c87de7312cf0540cca
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -4,9 +4,12 @@
4
4
 
5
5
  :bundler_inline_link: link:https://alchemists.io/articles/ruby_bundler_inline[Bundler Inline]
6
6
  :development_containers_link: link:https://containers.dev[Development Containers]
7
+ :docker_alpine_ruby_link: link:https://alchemists.io/projects/docker-alpine-ruby[Docker Alpine Ruby]
7
8
  :docker_link: link:https://www.docker.com[Docker]
8
9
  :gemsmith_link: link:https://alchemists.io/projects/gemsmith[Gemsmith]
10
+ :runcom_link: link:https://alchemists.io/projects/runcom[Runcom]
9
11
  :string_formats_link: link:https://docs.ruby-lang.org/en/3.3/format_specifications_rdoc.html[String Formats]
12
+ :xdg_link: link:https://alchemists.io/projects/xdg[XDG]
10
13
 
11
14
  = Rubysmith
12
15
 
@@ -103,19 +106,16 @@ options, you can use `--no-*` prefixes. Example:
103
106
  rubysmith build --name demo --no-debug --no-reek
104
107
  ----
105
108
 
106
- With the above example, both Debug and Reek support would have been disabled when building the
107
- `demo` project. Taking this a step further, you can also use the `--min` option to generate a
108
- project with bare minimum of options. Example:
109
+ With the above example, both Debug and Reek support would have been disabled when building the `demo` project. Taking this a step further, you can also use the `--min` option to generate a project with bare minimum of options. Example:
109
110
 
110
111
  [source,bash]
111
112
  ----
112
113
  rubysmith build --name demo --min
113
114
  ----
114
115
 
115
- The above is essentially the same as building with _all_ options disabled. This is handy in situations where you need to quickly script something up for sharing with others yet still want to avoid using a {bundler_inline_link} script so gem dependencies are not installed each time the code is run.
116
+ The above is the same as building with _all options disabled_. This is handy in situations where you need to quickly script something up for sharing with others yet still want to avoid using a {bundler_inline_link} script so gem dependencies are not installed each time the code is run.
116
117
 
117
- As shown earlier, you can combine options but be aware that order matters. Take the following, for
118
- example, where both minimum and maximum options are used in conjunction with other options:
118
+ As shown earlier, you can combine options but be aware that order matters. Take the following, for example, where both minimum and maximum options are used in conjunction with other options:
119
119
 
120
120
  [source,bash]
121
121
  ----
@@ -123,15 +123,9 @@ rubysmith build --name demo --min --zeitwerk
123
123
  rubysmith build --name demo --max --no-debug
124
124
  ----
125
125
 
126
- With the above examples, the first line will _disable_ all options except Zeitwerk while the second
127
- line will _enable_ all options except Debug. This can be a handy way to build a new project with all
128
- options either disabled or enabled with only a few select options modified. To have specific options
129
- enabled/disabled _every time_ you build a new Ruby project, you can edit your global configuration
130
- for making these settings permanent (see below for details).
126
+ With the above examples, the first line will _disable all options_ except Zeitwerk while the second line will _enable all options_ except Debug. This can be a handy way to build a new project with all options either disabled or enabled with only a few select options modified. To have specific options enabled/disabled _every time_, you can edit your global configuration for making these settings permanent (see below for details).
131
127
 
132
- There is a lot of flexibility when building a new project through the various build options. I'll
133
- walk you through each so you can better understand why you'd want to enable or disable any one of
134
- them.
128
+ There is a lot of flexibility when building a new project through the various build options. I'll walk you through each so you can better understand why you'd want to enable or disable them.
135
129
 
136
130
  ===== Amazing Print
137
131
 
@@ -150,44 +144,66 @@ link:https://github.com/Shopify/bootsnap[Bootsnap] gem for improved performance.
150
144
  The `--caliber` option allows you to build your project with the
151
145
  link:https://alchemists.io/projects/caliber[Caliber] gem so you have an immediate working -- and
152
146
  high quality -- link:https://docs.rubocop.org/rubocop[RuboCop] configuration. Read the Caliber
153
- documentation for further customization.
147
+ documentation for further customization. This adds the following files when enabled:
148
+
149
+ ....
150
+ ├── bin
151
+ │ ├── rubocop
152
+ ├── .config
153
+ │ └── rubocop
154
+ │ └── config.yml
155
+ ....
154
156
 
155
157
  ===== Circle CI
156
158
 
157
159
  The `--circle_ci` option allows you to build your project with link:https://circleci.com[Circle CI]
158
- configured so you can get your project building as quickly as possible.
160
+ configured so you can get your project building as quickly as possible. This adds the following file when enabled:
161
+
162
+ ....
163
+ ├── .circleci
164
+ │ └── config.yml
165
+ ....
159
166
 
160
167
  ===== Citation
161
168
 
162
169
  The `--citation` option allows you to add a link:https://citation-file-format.github.io[citation]
163
170
  file to your project so you can help the research community cite your work in their studies if your
164
- project is used.
171
+ project is used. This adds the following file when enabled:
172
+
173
+ ....
174
+ ├── CITATION.cff
175
+ ....
165
176
 
166
177
  ===== Community
167
178
 
168
179
  The `--community` option allows you to link to your open source community, organization, or group
169
- chat to help with community engagement of your work.
180
+ chat to help with community engagement of your work. The link is added to the `README` file when enabled.
170
181
 
171
182
  ===== Code of Conduct
172
183
 
173
184
  The `--conduct` option allows you to link to your link:https://www.contributor-covenant.org[Code of
174
185
  Conduct] to encourage good community participation. Regardless of whether you have a community or
175
- not, the code of conduct is good to encourage in general.
186
+ not, the code of conduct is good to encourage in general. The link is added to the `README` file when enabled.
176
187
 
177
188
  ===== Console
178
189
 
179
190
  The `--console` option allows you to add a `console` script for local development. So instead of
180
191
  typing `irb`, you can type `bin/console` and get an IRB session with all of your project's code
181
- loaded.
192
+ loaded. This adds the following file when enabled:
193
+
194
+ ....
195
+ ├── bin
196
+ │ ├── console
197
+ ....
182
198
 
183
199
  ===== Contributions
184
200
 
185
201
  The `--contributions` option allows you to link to contributing documentation so people know to
186
- contribute back to your work.
202
+ contribute back to your work. The link is added to the `README` file when enabled.
187
203
 
188
204
  ===== Developer Certificate of Origin
189
205
 
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.
206
+ 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. The link is added to the `README` file when enabled.
191
207
 
192
208
  ℹ️ This is disabled by default but will be enabled by default in the next major version.
193
209
 
@@ -199,17 +215,41 @@ much more.
199
215
 
200
216
  ===== Docker
201
217
 
202
- The `--docker` option allows you add {docker_link} to your project so you can build and deploy to production.
218
+ The `--docker` option allows you add {docker_link} to your project so you can build and deploy a production image of your software. When enabled, these files will appear in your project:
219
+
220
+ ....
221
+ ├── bin
222
+ │ ├── docker
223
+ │ │ ├── build # Use to build your production image for local use.
224
+ │ │ ├── console # Use to interact with your production image.
225
+ │ │ └── entrypoint # Conditionally enables jemalloc support.
226
+ ├── .dockerignore # Defines the files/folders Docker should ignore.
227
+ ├── Dockerfile # Defines how to build your production image.
228
+ ....
203
229
 
204
230
  ===== Development Containers
205
231
 
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.
232
+ 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. When enabled, these files will be added to your project:
233
+
234
+ ....
235
+ ├── .devcontainer
236
+ │ ├── compose.yaml # Your Docker Compose configuration.
237
+ │ ├── devcontainer.json # Your Developer Container configuration.
238
+ │ └── Dockerfile # The steps for building your development environment.
239
+ ....
240
+
241
+ ℹ️ The `Dockerfile` uses the {docker_alpine_ruby_link} base image so you have a small but functional image. This base image can be easily be swapped out with a base image you prefer.
207
242
 
208
243
  ===== Funding
209
244
 
210
245
  The `--funding` option allows you add a link:https://github.com[GitHub] funding configuration to
211
246
  your project so you can attract link:https://docs.github.com/en/sponsors[sponsors]. This option
212
- doesn't require use of the `--git_hub` option but is encouraged.
247
+ doesn't require use of the `--git_hub` option but is encouraged. This adds the following file when enabled:
248
+
249
+ ....
250
+ ├── .github
251
+ │ ├── FUNDING.yml
252
+ ....
213
253
 
214
254
  ===== Git
215
255
 
@@ -218,11 +258,23 @@ The `--git` option allows you add link:https://git-scm.com[Git] repository suppo
218
258
  ===== GitHub
219
259
 
220
260
  The `--git_hub` option allows you add link:https://github.com[GitHub] templates to your project for
221
- issues and pull requests.
261
+ issues and pull requests. This adds the following fhile when enabled:
262
+
263
+ ....
264
+ ├── .github
265
+ │ ├── ISSUE_TEMPLATE.md
266
+ │ └── PULL_REQUEST_TEMPLATE.md
267
+ ....
222
268
 
223
269
  ===== GitHub CI
224
270
 
225
- The `--git_hub_ci` option allows you to build your project with link:https://docs.github.com/en/actions[GitHub Actions] configured so you can get your project building as quickly as possible.
271
+ The `--git_hub_ci` option allows you to build your project with link:https://docs.github.com/en/actions[GitHub Actions] configured so you can get your project building as quickly as possible. This adds the following file when enabled:
272
+
273
+ ....
274
+ ├── .github
275
+ │ ├── workflows
276
+ │ │ └── ci.yml
277
+ ....
226
278
 
227
279
  ===== Git Lint
228
280
 
@@ -247,17 +299,23 @@ The `--license` option ensures you build your project with a license.
247
299
 
248
300
  ===== Maximum
249
301
 
250
- The `--max` option allows you to build your project with _all_ options _enabled_. This is a quick way
251
- to build a new project with all options enabled without having to pick and choose.
302
+ The `--max` option allows you to build your project with _all options enabled_. This is a quick way
303
+ to build a new project without having to pick and choose.
252
304
 
253
305
  ===== Minimum
254
306
 
255
- The `--min` option allows you to build your project with _all_ options _disabled_. This is a quick way to build a new project with the bare minimum of support which is a one step above reaching for a {bundler_inline_link} script.
307
+ The `--min` option allows you to build your project with _all options disabled_. This is a quick way to build a new project with the bare minimum of support which is a one step above reaching for a {bundler_inline_link} script.
256
308
 
257
309
  ===== Rake
258
310
 
259
311
  The `--rake` option allows you to add the link:https://github.com/ruby/rake[Rake] gem for quickly
260
- crafting build scripts.
312
+ crafting build scripts. This adds the following files to your project:
313
+
314
+ ....
315
+ ├── bin
316
+ │ ├── rake
317
+ ├── Rakefile
318
+ ....
261
319
 
262
320
  ===== Readme
263
321
 
@@ -266,7 +324,7 @@ The `--readme` option allows you to add README documentation to your project.
266
324
  ===== Reek
267
325
 
268
326
  The `--reek` option allows you add the link:https://github.com/troessner/reek[Reek] gem to your
269
- project for code smell and code quality support.
327
+ project for code smell and code quality support. This adds the `.reek.yml` configuration to your project.
270
328
 
271
329
  ===== Refinements
272
330
 
@@ -277,7 +335,19 @@ Ruby core objects without monkey patching your code.
277
335
  ===== RSpec
278
336
 
279
337
  The `--rspec` option allows you add the link:https://rspec.info[RSpec] gem to your project for
280
- defining your project specifications and have a framework for testing your code.
338
+ defining your project specifications and have a framework for testing your code. This adds the following files to your project:
339
+
340
+ ....
341
+ ├── bin
342
+ │ ├── rspec
343
+ ├── spec
344
+ │ ├── lib
345
+ │ │ └── <your project name>_spec.rb
346
+ │ ├── support
347
+ │ │ └── shared_contexts
348
+ │ │ └── temp_dir.rb
349
+ │ └── spec_helper.rb
350
+ ....
281
351
 
282
352
  ===== Repl Type Completor (RTC)
283
353
 
@@ -286,13 +356,17 @@ The `--rtc` option allows you add the link:https://github.com/ruby/repl_type_com
286
356
  ===== Setup
287
357
 
288
358
  The `--setup` option allows you to configure you project with automated setup instructions so anyone
289
- new to your project can quickly get started by running the `bin/setup` script.
359
+ new to your project can quickly get started by running the `bin/setup` script. This adds the following file to your project:
360
+
361
+ ....
362
+ │ └── setup
363
+ ....
290
364
 
291
365
  ===== SimpleCov
292
366
 
293
367
  The `--simple_cov` option allows you add the
294
368
  link:https://github.com/simplecov-ruby/simplecov[SimpleCov] gem to your project to provide full
295
- analysis of what your quality of code is for the project.
369
+ analysis of your project's code quality and/or find code that is unused.
296
370
 
297
371
  ===== Versions
298
372
 
@@ -313,8 +387,7 @@ This gem can be configured via a global configuration:
313
387
  $HOME/.config/rubysmith/configuration.yml
314
388
  ....
315
389
 
316
- It can also be configured via link:https://alchemists.io/projects/xdg[XDG] environment
317
- variables. The default configuration is as follows:
390
+ It can also be configured via {xdg_link}/{runcom_link} environment variables. The default configuration is as follows:
318
391
 
319
392
  [source,yaml]
320
393
  ----
@@ -358,6 +431,7 @@ build:
358
431
  versions: true
359
432
  zeitwerk: true
360
433
  citation:
434
+ affiliation: "%<organization_label>s"
361
435
  message: Please use the following metadata when citing this project in your work.
362
436
  documentation:
363
437
  format: "adoc"
@@ -387,11 +461,11 @@ repository:
387
461
  uri: https://github.com
388
462
  ----
389
463
 
390
- By customizing your configuration, you can change Rubysmith's default behavior when building projects. This is a great way to define your own specialized settings other than what is provide for you by default. This is also a handy way to provide additional information needed for some of the build options.
464
+ By customizing your configuration, you can change Rubysmith's default behavior when building projects. This is a great way to define your own specialized settings other than what is provided by default. This is also a handy way to provide additional information needed for some of the build options.
391
465
 
392
466
  You'll also notice some of the values use {string_formats_link} which means you can use any fully qualified key as a string specifier for supported keys like those found in the `author` and `project` sections.
393
467
 
394
- The next sections will walk you through each configuration so you can learn more.
468
+ Each section of the configuration is explained below.
395
469
 
396
470
  ==== Author
397
471
 
@@ -404,6 +478,7 @@ author:
404
478
  email: jsmith@example.com
405
479
  family_name: Smith
406
480
  given_name: Jill
481
+ author_uri: # Requires being supplied.
407
482
  ----
408
483
 
409
484
  If your global link:https://git-scm.com[Git] configuration is properly configured, your given name;
@@ -421,15 +496,23 @@ this project.
421
496
 
422
497
  This section allows you to configure your link:https://orcid.org[ORCID]
423
498
  link:https://citation-file-format.github.io[citation] information used by the research community.
424
- You should definitely fill this in. Your author information, detailed above, will also be used when building this file.
499
+ [source,yaml]
500
+ ----
501
+ citation:
502
+ affiliation: # Defaults to organization label (see above).
503
+ message: # Defaults to supplied message (see above).
504
+ orcid: # Defaults to https://orcid.org/ when no ID is supplied.
505
+ ----
506
+
507
+ Your author, project, and license information will be used when building this file.
425
508
 
426
509
  ==== Documentation
427
510
 
428
511
  Use this section to define the kind of documentation you want generated for your project. The
429
512
  following options are available:
430
513
 
431
- * `adoc` - Uses link:https://asciidoctor.org[ASCII Doc] format.
432
- * `md` - Uses link:https://asciidoctor.org[Markdown] format.
514
+ * `adoc`: Uses link:https://asciidoctor.org[ASCII Doc] format.
515
+ * `md`: Uses link:https://daringfireball.net/projects/markdown[Markdown] format.
433
516
 
434
517
  ==== License
435
518
 
@@ -520,7 +603,13 @@ As for the `version` key, this defines the default version of newly created proj
520
603
 
521
604
  ==== Repository
522
605
 
523
- Your repisotry handle is the handle you setup when creating your account (i.e. `+https://github.com/<your_handle>+`). This information is used for template, funding, and/or URI construction purposes.
606
+ Your repository handle is the handle you setup when creating your account (i.e. `+https://github.com/<your_handle>+`). This information is used for template, funding, and/or URI construction purposes. These are the defaults but you'll want to customize to reflect the service you are using:
607
+
608
+ ``` yaml
609
+ repository:
610
+ handle: undefined
611
+ uri: https://github.com
612
+ ```
524
613
 
525
614
  == Development
526
615
 
@@ -34,7 +34,7 @@ module Rubysmith
34
34
  end
35
35
 
36
36
  def delete
37
- log_debug "Deleting: #{relative_build_path}"
37
+ log_info "Deleting: #{relative_build_path}"
38
38
  build_path.delete
39
39
  self
40
40
  end
@@ -52,7 +52,7 @@ module Rubysmith
52
52
  end
53
53
 
54
54
  def make_path
55
- log_debug "Creating path: #{relative_build_path}"
55
+ log_info "Making: #{relative_build_path}"
56
56
  build_path.make_path
57
57
  self
58
58
  end
@@ -76,7 +76,7 @@ module Rubysmith
76
76
  end
77
77
 
78
78
  def render
79
- log_debug "Rendering: #{relative_build_path}"
79
+ log_info "Rendering: #{relative_build_path}"
80
80
 
81
81
  pathway.start_path.read.then do |content|
82
82
  build_path.make_ancestors.write renderer.call(content)
@@ -92,7 +92,7 @@ module Rubysmith
92
92
  end
93
93
 
94
94
  def run *command
95
- log_debug "Running: #{command}"
95
+ log_info "Running: #{command}"
96
96
  execute(*command)
97
97
  self
98
98
  rescue StandardError => error
@@ -100,7 +100,7 @@ module Rubysmith
100
100
  end
101
101
 
102
102
  def touch
103
- log_debug "Touching: #{relative_build_path}"
103
+ log_info "Touching: #{relative_build_path}"
104
104
  build_path.deep_touch
105
105
  self
106
106
  end
@@ -132,6 +132,8 @@ module Rubysmith
132
132
 
133
133
  def pathway = settings.pathway
134
134
 
135
+ def log_info(message) = logger.info { message }
136
+
135
137
  def log_debug(message) = logger.debug { message }
136
138
 
137
139
  def log_error(message) = logger.error { message }
@@ -4,10 +4,10 @@ module Rubysmith
4
4
  module Builders
5
5
  # Provides default implementation from which builders can inherit from.
6
6
  class Abstract
7
- include Import[:settings]
7
+ include Import[:settings, :logger]
8
8
 
9
9
  def initialize(builder: Builder, **)
10
- @builder = builder
10
+ @builder = -> settings, **keywords { builder.new settings, logger:, **keywords }
11
11
  super(**)
12
12
  end
13
13
 
@@ -10,7 +10,7 @@ module Rubysmith
10
10
  using Refinements::Struct
11
11
 
12
12
  def call
13
- return false unless settings.build_git
13
+ return false unless settings.build_docker
14
14
 
15
15
  builder.call(settings.merge(template_path: "%project_name%/.dockerignore.erb")).render
16
16
  true
@@ -12,44 +12,44 @@ module Rubysmith
12
12
 
13
13
  # Order is important.
14
14
  BUILDERS = [
15
- Builders::Init.new,
16
- Builders::Core.new,
17
- Builders::Version.new,
18
- Builders::Documentation::Readme.new,
19
- Builders::Documentation::Citation.new,
20
- Builders::Documentation::License.new,
21
- Builders::Documentation::Version.new,
22
- Builders::Git::Setup.new,
23
- Builders::Git::Ignore.new,
24
- Builders::Git::Safe.new,
25
- Builders::Bundler.new,
26
- Builders::Rake::Binstub.new,
27
- Builders::Rake::Configuration.new,
28
- Builders::Console.new,
29
- Builders::CircleCI.new,
30
- Builders::Setup.new,
31
- Builders::GitHub::Template.new,
32
- Builders::GitHub::Funding.new,
33
- Builders::GitHub::CI.new,
34
- Builders::Guard.new,
35
- Builders::Reek.new,
36
- Builders::RSpec::Binstub.new,
37
- Builders::RSpec::Context.new,
38
- Builders::RSpec::Helper.new,
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,
48
- Extensions::Bundler.new,
49
- Extensions::Pragmater.new,
50
- Extensions::Tocer.new,
51
- Extensions::Rubocop.new,
52
- Builders::Git::Commit.new
15
+ Builders::Init,
16
+ Builders::Core,
17
+ Builders::Version,
18
+ Builders::Documentation::Readme,
19
+ Builders::Documentation::Citation,
20
+ Builders::Documentation::License,
21
+ Builders::Documentation::Version,
22
+ Builders::Git::Setup,
23
+ Builders::Git::Ignore,
24
+ Builders::Git::Safe,
25
+ Builders::Bundler,
26
+ Builders::Rake::Binstub,
27
+ Builders::Rake::Configuration,
28
+ Builders::Console,
29
+ Builders::CircleCI,
30
+ Builders::Setup,
31
+ Builders::GitHub::Template,
32
+ Builders::GitHub::Funding,
33
+ Builders::GitHub::CI,
34
+ Builders::Guard,
35
+ Builders::Reek,
36
+ Builders::RSpec::Binstub,
37
+ Builders::RSpec::Context,
38
+ Builders::RSpec::Helper,
39
+ Builders::Caliber,
40
+ Builders::DevContainer::Dockerfile,
41
+ Builders::DevContainer::Compose,
42
+ Builders::DevContainer::Configuration,
43
+ Builders::Docker::Build,
44
+ Builders::Docker::Console,
45
+ Builders::Docker::Entrypoint,
46
+ Builders::Docker::File,
47
+ Builders::Docker::Ignore,
48
+ Extensions::Bundler,
49
+ Extensions::Pragmater,
50
+ Extensions::Tocer,
51
+ Extensions::Rubocop,
52
+ Builders::Git::Commit
53
53
  ].freeze
54
54
 
55
55
  handle "build"
@@ -99,7 +99,7 @@ module Rubysmith
99
99
 
100
100
  def call
101
101
  log_info "Building project skeleton: #{settings.project_name}..."
102
- builders.each(&:call)
102
+ builders.each { |builder| builder.new(settings:, logger:).call }
103
103
  log_info "Project skeleton complete!"
104
104
  end
105
105
 
@@ -38,6 +38,7 @@ build:
38
38
  versions: true
39
39
  zeitwerk: true
40
40
  citation:
41
+ affiliation: "%<organization_label>s"
41
42
  message: Please use the following metadata when citing this project in your work.
42
43
  documentation:
43
44
  format: "adoc"
@@ -22,6 +22,7 @@ module Rubysmith
22
22
  .add_transformer(Configuration::Transformers::TemplateRoot.new)
23
23
  .add_transformer(:root, :target_root)
24
24
  .add_transformer(:format, :author_uri)
25
+ .add_transformer(:format, :citation_affiliation)
25
26
  .add_transformer(:format, :project_uri_community)
26
27
  .add_transformer(:format, :project_uri_conduct)
27
28
  .add_transformer(:format, :project_uri_contributions)
@@ -9,7 +9,7 @@ module Rubysmith
9
9
  module Extensions
10
10
  # Ensures gem dependencies are installed.
11
11
  class Bundler
12
- include Import[:settings]
12
+ include Import[:settings, :logger]
13
13
 
14
14
  using Refinements::IO
15
15
  using Refinements::Pathname
@@ -20,6 +20,17 @@ module Rubysmith
20
20
  end
21
21
 
22
22
  def call
23
+ logger.info { "Installing gem dependencies..." }
24
+ install
25
+ rescue ::Bundler::HTTPError
26
+ log_error
27
+ end
28
+
29
+ private
30
+
31
+ attr_reader :client
32
+
33
+ def install
23
34
  settings.project_root.change_dir do
24
35
  client.start %w[install --quiet]
25
36
  STDOUT.squelch { client.start %w[lock --add-platform x86_64-linux --update] }
@@ -28,9 +39,10 @@ module Rubysmith
28
39
  true
29
40
  end
30
41
 
31
- private
32
-
33
- attr_reader :client
42
+ def log_error
43
+ logger.error { "Unable to install gem dependencies. Is your network stable?" }
44
+ false
45
+ end
34
46
  end
35
47
  end
36
48
  end
@@ -7,7 +7,7 @@ module Rubysmith
7
7
  module Extensions
8
8
  # Ensures project skeleton has pragmas.
9
9
  class Pragmater
10
- include Import[:settings]
10
+ include Import[:settings, :logger]
11
11
 
12
12
  using Refinements::Pathname
13
13
 
@@ -37,6 +37,7 @@ module Rubysmith
37
37
  end
38
38
 
39
39
  def call
40
+ logger.info { "Adding frozen string literal pragmas..." }
40
41
  settings.project_root.change_dir { client.call }
41
42
  true
42
43
  end
@@ -8,7 +8,7 @@ module Rubysmith
8
8
  module Extensions
9
9
  # Ensures project skeleton adheres to style guide.
10
10
  class Rubocop
11
- include Import[:settings]
11
+ include Import[:settings, :logger]
12
12
 
13
13
  using Refinements::IO
14
14
  using Refinements::Pathname
@@ -19,18 +19,22 @@ module Rubysmith
19
19
  end
20
20
 
21
21
  def call
22
- project_root = settings.project_root
23
-
24
- project_root.change_dir do
25
- STDOUT.squelch { client.run ["--autocorrect-all", project_root.to_s] }
26
- end
27
-
22
+ logger.info { "Running RuboCop autocorrect..." }
23
+ autocorrect
28
24
  true
29
25
  end
30
26
 
31
27
  private
32
28
 
33
29
  attr_reader :client
30
+
31
+ def autocorrect
32
+ project_root = settings.project_root
33
+
34
+ project_root.change_dir do
35
+ STDOUT.squelch { client.run ["--autocorrect-all", project_root.to_s] }
36
+ end
37
+ end
34
38
  end
35
39
  end
36
40
  end
@@ -8,7 +8,7 @@ module Rubysmith
8
8
  module Extensions
9
9
  # Ensures project skeleton documentation has table of content.
10
10
  class Tocer
11
- include Import[:settings]
11
+ include Import[:settings, :logger]
12
12
 
13
13
  using Refinements::Pathname
14
14
 
@@ -18,15 +18,18 @@ module Rubysmith
18
18
  end
19
19
 
20
20
  def call
21
- return false unless settings.build_readme
21
+ return false unless settings.build_readme && settings.markdown?
22
22
 
23
- settings.project_root.change_dir { client.call }
23
+ logger.info { "Adding table of contents..." }
24
+ upsert
24
25
  true
25
26
  end
26
27
 
27
28
  private
28
29
 
29
30
  attr_reader :client
31
+
32
+ def upsert = settings.project_root.change_dir { client.call }
30
33
  end
31
34
  end
32
35
  end
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.3.0"
5
+ spec.version = "7.4.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.3.0
4
+ version: 7.4.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-21 00:00:00.000000000 Z
38
+ date: 2024-08-22 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: cogger
metadata.gz.sig CHANGED
Binary file