rubysmith 7.3.0 → 7.4.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: 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