rubysmith 7.3.0 → 7.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.adoc +133 -52
- data/lib/rubysmith/builder.rb +7 -5
- data/lib/rubysmith/builders/abstract.rb +2 -2
- data/lib/rubysmith/builders/docker/ignore.rb +1 -1
- data/lib/rubysmith/cli/commands/build.rb +39 -39
- data/lib/rubysmith/configuration/defaults.yml +1 -0
- data/lib/rubysmith/container.rb +1 -0
- data/lib/rubysmith/extensions/bundler.rb +16 -4
- data/lib/rubysmith/extensions/pragmater.rb +2 -1
- data/lib/rubysmith/extensions/rubocop.rb +11 -7
- data/lib/rubysmith/extensions/tocer.rb +6 -3
- data/lib/rubysmith/templates/%project_name%/Gemfile.erb +1 -1
- data/rubysmith.gemspec +7 -7
- data.tar.gz.sig +0 -0
- metadata +16 -13
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de2fff14077ff2e68ddbe7764b4cddffdf1faa73e790be34fd6ff16e05a6b10a
|
4
|
+
data.tar.gz: cfa1edcb04628ae3339cbd9facb120c3f4a4321b366c83295abca316d1dbbae7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f7943984c3c3561d26132987f4870741c2cd2f34e027cfb145e08234ecc1571996d09b49237aa19d7ac66443bde511b1a39af7a36847db15ca18b72a02868a3
|
7
|
+
data.tar.gz: af4ccfb4d14653548f944fa5d026cb0f8e041698697ce70e44c2f162429487c33f1451ebf426e1e6b3a9ffef108fca0b99fb841e50dd87b6080e6664dcfd889e
|
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
|
|
@@ -43,15 +46,7 @@ toc::[]
|
|
43
46
|
* Supports link:https://github.com/simplecov-ruby/simplecov[SimpleCov].
|
44
47
|
* Supports link:https://github.com/fxn/zeitwerk[Zeitwerk].
|
45
48
|
* Supports common settings and a structured layout for building projects.
|
46
|
-
* Provides common documentation
|
47
|
-
** README
|
48
|
-
** LICENSE
|
49
|
-
** VERSIONS
|
50
|
-
** Security
|
51
|
-
** Code of Conduct
|
52
|
-
** Contributions
|
53
|
-
** Developer Certificate of Origin
|
54
|
-
** Communities
|
49
|
+
* Provides common documentation.
|
55
50
|
|
56
51
|
== Requirements
|
57
52
|
|
@@ -103,19 +98,16 @@ options, you can use `--no-*` prefixes. Example:
|
|
103
98
|
rubysmith build --name demo --no-debug --no-reek
|
104
99
|
----
|
105
100
|
|
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:
|
101
|
+
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
102
|
|
110
103
|
[source,bash]
|
111
104
|
----
|
112
105
|
rubysmith build --name demo --min
|
113
106
|
----
|
114
107
|
|
115
|
-
The above is
|
108
|
+
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
109
|
|
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:
|
110
|
+
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
111
|
|
120
112
|
[source,bash]
|
121
113
|
----
|
@@ -123,15 +115,9 @@ rubysmith build --name demo --min --zeitwerk
|
|
123
115
|
rubysmith build --name demo --max --no-debug
|
124
116
|
----
|
125
117
|
|
126
|
-
With the above examples, the first line will
|
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).
|
118
|
+
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
119
|
|
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.
|
120
|
+
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
121
|
|
136
122
|
===== Amazing Print
|
137
123
|
|
@@ -150,44 +136,66 @@ link:https://github.com/Shopify/bootsnap[Bootsnap] gem for improved performance.
|
|
150
136
|
The `--caliber` option allows you to build your project with the
|
151
137
|
link:https://alchemists.io/projects/caliber[Caliber] gem so you have an immediate working -- and
|
152
138
|
high quality -- link:https://docs.rubocop.org/rubocop[RuboCop] configuration. Read the Caliber
|
153
|
-
documentation for further customization.
|
139
|
+
documentation for further customization. This adds the following files when enabled:
|
140
|
+
|
141
|
+
....
|
142
|
+
├── bin
|
143
|
+
│ ├── rubocop
|
144
|
+
├── .config
|
145
|
+
│ └── rubocop
|
146
|
+
│ └── config.yml
|
147
|
+
....
|
154
148
|
|
155
149
|
===== Circle CI
|
156
150
|
|
157
151
|
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.
|
152
|
+
configured so you can get your project building as quickly as possible. This adds the following file when enabled:
|
153
|
+
|
154
|
+
....
|
155
|
+
├── .circleci
|
156
|
+
│ └── config.yml
|
157
|
+
....
|
159
158
|
|
160
159
|
===== Citation
|
161
160
|
|
162
161
|
The `--citation` option allows you to add a link:https://citation-file-format.github.io[citation]
|
163
162
|
file to your project so you can help the research community cite your work in their studies if your
|
164
|
-
project is used.
|
163
|
+
project is used. This adds the following file when enabled:
|
164
|
+
|
165
|
+
....
|
166
|
+
├── CITATION.cff
|
167
|
+
....
|
165
168
|
|
166
169
|
===== Community
|
167
170
|
|
168
171
|
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.
|
172
|
+
chat to help with community engagement of your work. The link is added to the `README` file when enabled.
|
170
173
|
|
171
174
|
===== Code of Conduct
|
172
175
|
|
173
176
|
The `--conduct` option allows you to link to your link:https://www.contributor-covenant.org[Code of
|
174
177
|
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.
|
178
|
+
not, the code of conduct is good to encourage in general. The link is added to the `README` file when enabled.
|
176
179
|
|
177
180
|
===== Console
|
178
181
|
|
179
182
|
The `--console` option allows you to add a `console` script for local development. So instead of
|
180
183
|
typing `irb`, you can type `bin/console` and get an IRB session with all of your project's code
|
181
|
-
loaded.
|
184
|
+
loaded. This adds the following file when enabled:
|
185
|
+
|
186
|
+
....
|
187
|
+
├── bin
|
188
|
+
│ ├── console
|
189
|
+
....
|
182
190
|
|
183
191
|
===== Contributions
|
184
192
|
|
185
193
|
The `--contributions` option allows you to link to contributing documentation so people know to
|
186
|
-
contribute back to your work.
|
194
|
+
contribute back to your work. The link is added to the `README` file when enabled.
|
187
195
|
|
188
196
|
===== Developer Certificate of Origin
|
189
197
|
|
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.
|
198
|
+
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
199
|
|
192
200
|
ℹ️ This is disabled by default but will be enabled by default in the next major version.
|
193
201
|
|
@@ -199,17 +207,41 @@ much more.
|
|
199
207
|
|
200
208
|
===== Docker
|
201
209
|
|
202
|
-
The `--docker` option allows you add {docker_link} to your project so you can build and deploy
|
210
|
+
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:
|
211
|
+
|
212
|
+
....
|
213
|
+
├── bin
|
214
|
+
│ ├── docker
|
215
|
+
│ │ ├── build # Use to build your production image for local use.
|
216
|
+
│ │ ├── console # Use to interact with your production image.
|
217
|
+
│ │ └── entrypoint # Conditionally enables jemalloc support.
|
218
|
+
├── .dockerignore # Defines the files/folders Docker should ignore.
|
219
|
+
├── Dockerfile # Defines how to build your production image.
|
220
|
+
....
|
203
221
|
|
204
222
|
===== Development Containers
|
205
223
|
|
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.
|
224
|
+
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:
|
225
|
+
|
226
|
+
....
|
227
|
+
├── .devcontainer
|
228
|
+
│ ├── compose.yaml # Your Docker Compose configuration.
|
229
|
+
│ ├── devcontainer.json # Your Developer Container configuration.
|
230
|
+
│ └── Dockerfile # The steps for building your development environment.
|
231
|
+
....
|
232
|
+
|
233
|
+
ℹ️ 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
234
|
|
208
235
|
===== Funding
|
209
236
|
|
210
237
|
The `--funding` option allows you add a link:https://github.com[GitHub] funding configuration to
|
211
238
|
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.
|
239
|
+
doesn't require use of the `--git_hub` option but is encouraged. This adds the following file when enabled:
|
240
|
+
|
241
|
+
....
|
242
|
+
├── .github
|
243
|
+
│ ├── FUNDING.yml
|
244
|
+
....
|
213
245
|
|
214
246
|
===== Git
|
215
247
|
|
@@ -218,11 +250,23 @@ The `--git` option allows you add link:https://git-scm.com[Git] repository suppo
|
|
218
250
|
===== GitHub
|
219
251
|
|
220
252
|
The `--git_hub` option allows you add link:https://github.com[GitHub] templates to your project for
|
221
|
-
issues and pull requests.
|
253
|
+
issues and pull requests. This adds the following fhile when enabled:
|
254
|
+
|
255
|
+
....
|
256
|
+
├── .github
|
257
|
+
│ ├── ISSUE_TEMPLATE.md
|
258
|
+
│ └── PULL_REQUEST_TEMPLATE.md
|
259
|
+
....
|
222
260
|
|
223
261
|
===== GitHub CI
|
224
262
|
|
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.
|
263
|
+
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:
|
264
|
+
|
265
|
+
....
|
266
|
+
├── .github
|
267
|
+
│ ├── workflows
|
268
|
+
│ │ └── ci.yml
|
269
|
+
....
|
226
270
|
|
227
271
|
===== Git Lint
|
228
272
|
|
@@ -247,17 +291,23 @@ The `--license` option ensures you build your project with a license.
|
|
247
291
|
|
248
292
|
===== Maximum
|
249
293
|
|
250
|
-
The `--max` option allows you to build your project with
|
251
|
-
to build a new project
|
294
|
+
The `--max` option allows you to build your project with _all options enabled_. This is a quick way
|
295
|
+
to build a new project without having to pick and choose.
|
252
296
|
|
253
297
|
===== Minimum
|
254
298
|
|
255
|
-
The `--min` option allows you to build your project with
|
299
|
+
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
300
|
|
257
301
|
===== Rake
|
258
302
|
|
259
303
|
The `--rake` option allows you to add the link:https://github.com/ruby/rake[Rake] gem for quickly
|
260
|
-
crafting build scripts.
|
304
|
+
crafting build scripts. This adds the following files to your project:
|
305
|
+
|
306
|
+
....
|
307
|
+
├── bin
|
308
|
+
│ ├── rake
|
309
|
+
├── Rakefile
|
310
|
+
....
|
261
311
|
|
262
312
|
===== Readme
|
263
313
|
|
@@ -266,7 +316,7 @@ The `--readme` option allows you to add README documentation to your project.
|
|
266
316
|
===== Reek
|
267
317
|
|
268
318
|
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.
|
319
|
+
project for code smell and code quality support. This adds the `.reek.yml` configuration to your project.
|
270
320
|
|
271
321
|
===== Refinements
|
272
322
|
|
@@ -277,7 +327,19 @@ Ruby core objects without monkey patching your code.
|
|
277
327
|
===== RSpec
|
278
328
|
|
279
329
|
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.
|
330
|
+
defining your project specifications and have a framework for testing your code. This adds the following files to your project:
|
331
|
+
|
332
|
+
....
|
333
|
+
├── bin
|
334
|
+
│ ├── rspec
|
335
|
+
├── spec
|
336
|
+
│ ├── lib
|
337
|
+
│ │ └── <your project name>_spec.rb
|
338
|
+
│ ├── support
|
339
|
+
│ │ └── shared_contexts
|
340
|
+
│ │ └── temp_dir.rb
|
341
|
+
│ └── spec_helper.rb
|
342
|
+
....
|
281
343
|
|
282
344
|
===== Repl Type Completor (RTC)
|
283
345
|
|
@@ -286,13 +348,17 @@ The `--rtc` option allows you add the link:https://github.com/ruby/repl_type_com
|
|
286
348
|
===== Setup
|
287
349
|
|
288
350
|
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.
|
351
|
+
new to your project can quickly get started by running the `bin/setup` script. This adds the following file to your project:
|
352
|
+
|
353
|
+
....
|
354
|
+
│ └── setup
|
355
|
+
....
|
290
356
|
|
291
357
|
===== SimpleCov
|
292
358
|
|
293
359
|
The `--simple_cov` option allows you add the
|
294
360
|
link:https://github.com/simplecov-ruby/simplecov[SimpleCov] gem to your project to provide full
|
295
|
-
analysis of
|
361
|
+
analysis of your project's code quality and/or find code that is unused.
|
296
362
|
|
297
363
|
===== Versions
|
298
364
|
|
@@ -313,8 +379,7 @@ This gem can be configured via a global configuration:
|
|
313
379
|
$HOME/.config/rubysmith/configuration.yml
|
314
380
|
....
|
315
381
|
|
316
|
-
It can also be configured via
|
317
|
-
variables. The default configuration is as follows:
|
382
|
+
It can also be configured via {xdg_link}/{runcom_link} environment variables. The default configuration is as follows:
|
318
383
|
|
319
384
|
[source,yaml]
|
320
385
|
----
|
@@ -358,6 +423,7 @@ build:
|
|
358
423
|
versions: true
|
359
424
|
zeitwerk: true
|
360
425
|
citation:
|
426
|
+
affiliation: "%<organization_label>s"
|
361
427
|
message: Please use the following metadata when citing this project in your work.
|
362
428
|
documentation:
|
363
429
|
format: "adoc"
|
@@ -387,11 +453,11 @@ repository:
|
|
387
453
|
uri: https://github.com
|
388
454
|
----
|
389
455
|
|
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
|
456
|
+
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
457
|
|
392
458
|
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
459
|
|
394
|
-
|
460
|
+
Each section of the configuration is explained below.
|
395
461
|
|
396
462
|
==== Author
|
397
463
|
|
@@ -404,6 +470,7 @@ author:
|
|
404
470
|
email: jsmith@example.com
|
405
471
|
family_name: Smith
|
406
472
|
given_name: Jill
|
473
|
+
author_uri: # Requires being supplied.
|
407
474
|
----
|
408
475
|
|
409
476
|
If your global link:https://git-scm.com[Git] configuration is properly configured, your given name;
|
@@ -421,15 +488,23 @@ this project.
|
|
421
488
|
|
422
489
|
This section allows you to configure your link:https://orcid.org[ORCID]
|
423
490
|
link:https://citation-file-format.github.io[citation] information used by the research community.
|
424
|
-
|
491
|
+
[source,yaml]
|
492
|
+
----
|
493
|
+
citation:
|
494
|
+
affiliation: # Defaults to organization label (see above).
|
495
|
+
message: # Defaults to supplied message (see above).
|
496
|
+
orcid: # Defaults to https://orcid.org/ when no ID is supplied.
|
497
|
+
----
|
498
|
+
|
499
|
+
Your author, project, and license information will be used when building this file.
|
425
500
|
|
426
501
|
==== Documentation
|
427
502
|
|
428
503
|
Use this section to define the kind of documentation you want generated for your project. The
|
429
504
|
following options are available:
|
430
505
|
|
431
|
-
* `adoc
|
432
|
-
* `md
|
506
|
+
* `adoc`: Uses link:https://asciidoctor.org[ASCII Doc] format.
|
507
|
+
* `md`: Uses link:https://daringfireball.net/projects/markdown[Markdown] format.
|
433
508
|
|
434
509
|
==== License
|
435
510
|
|
@@ -520,7 +595,13 @@ As for the `version` key, this defines the default version of newly created proj
|
|
520
595
|
|
521
596
|
==== Repository
|
522
597
|
|
523
|
-
Your
|
598
|
+
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:
|
599
|
+
|
600
|
+
``` yaml
|
601
|
+
repository:
|
602
|
+
handle: undefined
|
603
|
+
uri: https://github.com
|
604
|
+
```
|
524
605
|
|
525
606
|
== Development
|
526
607
|
|
data/lib/rubysmith/builder.rb
CHANGED
@@ -34,7 +34,7 @@ module Rubysmith
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def delete
|
37
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
|
@@ -12,44 +12,44 @@ module Rubysmith
|
|
12
12
|
|
13
13
|
# Order is important.
|
14
14
|
BUILDERS = [
|
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
|
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(
|
102
|
+
builders.each { |builder| builder.new(settings:, logger:).call }
|
103
103
|
log_info "Project skeleton complete!"
|
104
104
|
end
|
105
105
|
|
data/lib/rubysmith/container.rb
CHANGED
@@ -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
|
-
|
32
|
-
|
33
|
-
|
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
|
-
|
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
|
-
|
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.
|
5
|
+
spec.version = "7.5.0"
|
6
6
|
spec.authors = ["Brooke Kuhlmann"]
|
7
7
|
spec.email = ["brooke@alchemists.io"]
|
8
8
|
spec.homepage = "https://alchemists.io/projects/rubysmith"
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.metadata = {
|
13
13
|
"bug_tracker_uri" => "https://github.com/bkuhlmann/rubysmith/issues",
|
14
14
|
"changelog_uri" => "https://alchemists.io/projects/rubysmith/versions",
|
15
|
-
"
|
15
|
+
"homepage_uri" => "https://alchemists.io/projects/rubysmith",
|
16
16
|
"funding_uri" => "https://github.com/sponsors/bkuhlmann",
|
17
17
|
"label" => "Rubysmith",
|
18
18
|
"rubygems_mfa_required" => "true",
|
@@ -22,17 +22,17 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.signing_key = Gem.default_key_path
|
23
23
|
spec.cert_chain = [Gem.default_cert_path]
|
24
24
|
|
25
|
-
spec.required_ruby_version = "
|
26
|
-
spec.add_dependency "cogger", "~> 0.
|
25
|
+
spec.required_ruby_version = ">= 3.3", "<= 3.4"
|
26
|
+
spec.add_dependency "cogger", "~> 0.26"
|
27
27
|
spec.add_dependency "containable", "~> 0.2"
|
28
28
|
spec.add_dependency "dry-monads", "~> 1.6"
|
29
29
|
spec.add_dependency "dry-schema", "~> 1.13"
|
30
30
|
spec.add_dependency "etcher", "~> 2.1"
|
31
|
-
spec.add_dependency "gitt", "~> 3.
|
31
|
+
spec.add_dependency "gitt", "~> 3.8"
|
32
32
|
spec.add_dependency "infusible", "~> 3.8"
|
33
33
|
spec.add_dependency "pragmater", "~> 15.2"
|
34
|
-
spec.add_dependency "refinements", "~> 12.
|
35
|
-
spec.add_dependency "rubocop", "~> 1.
|
34
|
+
spec.add_dependency "refinements", "~> 12.8"
|
35
|
+
spec.add_dependency "rubocop", "~> 1.66"
|
36
36
|
spec.add_dependency "runcom", "~> 11.5"
|
37
37
|
spec.add_dependency "sod", "~> 0.14"
|
38
38
|
spec.add_dependency "spek", "~> 3.0"
|
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.
|
4
|
+
version: 7.5.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-
|
38
|
+
date: 2024-09-01 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: cogger
|
@@ -43,14 +43,14 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '0.
|
46
|
+
version: '0.26'
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0.
|
53
|
+
version: '0.26'
|
54
54
|
- !ruby/object:Gem::Dependency
|
55
55
|
name: containable
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
@@ -113,14 +113,14 @@ dependencies:
|
|
113
113
|
requirements:
|
114
114
|
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: '3.
|
116
|
+
version: '3.8'
|
117
117
|
type: :runtime
|
118
118
|
prerelease: false
|
119
119
|
version_requirements: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
121
|
- - "~>"
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: '3.
|
123
|
+
version: '3.8'
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: infusible
|
126
126
|
requirement: !ruby/object:Gem::Requirement
|
@@ -155,28 +155,28 @@ dependencies:
|
|
155
155
|
requirements:
|
156
156
|
- - "~>"
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: '12.
|
158
|
+
version: '12.8'
|
159
159
|
type: :runtime
|
160
160
|
prerelease: false
|
161
161
|
version_requirements: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
163
|
- - "~>"
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version: '12.
|
165
|
+
version: '12.8'
|
166
166
|
- !ruby/object:Gem::Dependency
|
167
167
|
name: rubocop
|
168
168
|
requirement: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
170
|
- - "~>"
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version: '1.
|
172
|
+
version: '1.66'
|
173
173
|
type: :runtime
|
174
174
|
prerelease: false
|
175
175
|
version_requirements: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
177
|
- - "~>"
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version: '1.
|
179
|
+
version: '1.66'
|
180
180
|
- !ruby/object:Gem::Dependency
|
181
181
|
name: runcom
|
182
182
|
requirement: !ruby/object:Gem::Requirement
|
@@ -415,7 +415,7 @@ licenses:
|
|
415
415
|
metadata:
|
416
416
|
bug_tracker_uri: https://github.com/bkuhlmann/rubysmith/issues
|
417
417
|
changelog_uri: https://alchemists.io/projects/rubysmith/versions
|
418
|
-
|
418
|
+
homepage_uri: https://alchemists.io/projects/rubysmith
|
419
419
|
funding_uri: https://github.com/sponsors/bkuhlmann
|
420
420
|
label: Rubysmith
|
421
421
|
rubygems_mfa_required: 'true'
|
@@ -426,16 +426,19 @@ require_paths:
|
|
426
426
|
- lib
|
427
427
|
required_ruby_version: !ruby/object:Gem::Requirement
|
428
428
|
requirements:
|
429
|
-
- - "
|
429
|
+
- - ">="
|
430
430
|
- !ruby/object:Gem::Version
|
431
431
|
version: '3.3'
|
432
|
+
- - "<="
|
433
|
+
- !ruby/object:Gem::Version
|
434
|
+
version: '3.4'
|
432
435
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
433
436
|
requirements:
|
434
437
|
- - ">="
|
435
438
|
- !ruby/object:Gem::Version
|
436
439
|
version: '0'
|
437
440
|
requirements: []
|
438
|
-
rubygems_version: 3.5.
|
441
|
+
rubygems_version: 3.5.18
|
439
442
|
signing_key:
|
440
443
|
specification_version: 4
|
441
444
|
summary: A command line interface for smithing Ruby projects.
|
metadata.gz.sig
CHANGED
Binary file
|