rubysmith 7.2.0 → 7.4.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 +218 -47
- data/lib/rubysmith/builder.rb +7 -5
- data/lib/rubysmith/builders/abstract.rb +2 -2
- data/lib/rubysmith/builders/bundler.rb +1 -1
- data/lib/rubysmith/builders/dev_container/compose.rb +22 -0
- data/lib/rubysmith/builders/dev_container/configuration.rb +22 -0
- data/lib/rubysmith/builders/dev_container/dockerfile.rb +22 -0
- data/lib/rubysmith/builders/docker/build.rb +24 -0
- data/lib/rubysmith/builders/docker/console.rb +24 -0
- data/lib/rubysmith/builders/docker/entrypoint.rb +24 -0
- data/lib/rubysmith/builders/docker/file.rb +21 -0
- data/lib/rubysmith/builders/docker/ignore.rb +21 -0
- data/lib/rubysmith/cli/actions/bootsnap.rb +22 -0
- data/lib/rubysmith/cli/actions/circle_ci.rb +1 -1
- data/lib/rubysmith/cli/actions/dcoo.rb +22 -0
- data/lib/rubysmith/cli/actions/dev_container.rb +22 -0
- data/lib/rubysmith/cli/actions/docker.rb +22 -0
- data/lib/rubysmith/cli/actions/funding.rb +1 -1
- data/lib/rubysmith/cli/actions/git_hub.rb +1 -1
- data/lib/rubysmith/cli/actions/git_hub_ci.rb +1 -1
- data/lib/rubysmith/cli/actions/maximum.rb +1 -1
- data/lib/rubysmith/cli/actions/minimum.rb +1 -1
- data/lib/rubysmith/cli/commands/build.rb +45 -33
- data/lib/rubysmith/configuration/contract.rb +6 -0
- data/lib/rubysmith/configuration/defaults.yml +6 -0
- data/lib/rubysmith/configuration/model.rb +8 -0
- data/lib/rubysmith/container.rb +2 -0
- data/lib/rubysmith/extensions/bundler.rb +16 -4
- data/lib/rubysmith/extensions/pragmater.rb +16 -2
- data/lib/rubysmith/extensions/rubocop.rb +11 -7
- data/lib/rubysmith/extensions/tocer.rb +8 -4
- data/lib/rubysmith/templates/%project_name%/.devcontainer/Dockerfile.erb +1 -0
- data/lib/rubysmith/templates/%project_name%/.devcontainer/compose.yaml.erb +35 -0
- data/lib/rubysmith/templates/%project_name%/.devcontainer/devcontainer.json.erb +17 -0
- data/lib/rubysmith/templates/%project_name%/.dockerignore.erb +36 -0
- data/lib/rubysmith/templates/%project_name%/.github/workflows/ci.yml.erb +5 -0
- data/lib/rubysmith/templates/%project_name%/Dockerfile.erb +60 -0
- data/lib/rubysmith/templates/%project_name%/Gemfile.erb +3 -0
- data/lib/rubysmith/templates/%project_name%/LICENSE-fair.adoc.erb +75 -0
- data/lib/rubysmith/templates/%project_name%/LICENSE-fair.md.erb +75 -0
- data/lib/rubysmith/templates/%project_name%/README.adoc.erb +4 -0
- data/lib/rubysmith/templates/%project_name%/README.md.erb +4 -0
- data/lib/rubysmith/templates/%project_name%/bin/docker/build.erb +15 -0
- data/lib/rubysmith/templates/%project_name%/bin/docker/console.erb +14 -0
- data/lib/rubysmith/templates/%project_name%/bin/docker/entrypoint.erb +8 -0
- data/lib/rubysmith.rb +1 -0
- data/rubysmith.gemspec +1 -1
- data.tar.gz.sig +0 -0
- metadata +24 -2
- 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: 852415a9cd9eba19692d24330fb641cf6d19f039dbe1b90709e6c88881b844cf
|
4
|
+
data.tar.gz: 2d398b6d843ea06f0f9a6896b26eab8cc18caadcd2f6cc616a10609bbfaef907
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 749891117987d624f28fef062d8b319df088a20c592b3fb17dd7ccc4ed1508a9841b7ca827c7073847bf8871a848c18feea57c364669e1240baf9f192c2c9c51
|
7
|
+
data.tar.gz: 5f9049b2774b91a3faab55f12fcd1fc1332425d514d8508f614ee18f8944fcdfc5dc2972ab737815b299d157159409329efe47d3b1ece6c87de7312cf0540cca
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/README.adoc
CHANGED
@@ -2,9 +2,14 @@
|
|
2
2
|
:toclevels: 5
|
3
3
|
:figure-caption!:
|
4
4
|
|
5
|
-
:gemsmith_link: link:https://alchemists.io/projects/gemsmith[Gemsmith]
|
6
5
|
:bundler_inline_link: link:https://alchemists.io/articles/ruby_bundler_inline[Bundler Inline]
|
6
|
+
:development_containers_link: link:https://containers.dev[Development Containers]
|
7
|
+
:docker_alpine_ruby_link: link:https://alchemists.io/projects/docker-alpine-ruby[Docker Alpine Ruby]
|
8
|
+
:docker_link: link:https://www.docker.com[Docker]
|
9
|
+
:gemsmith_link: link:https://alchemists.io/projects/gemsmith[Gemsmith]
|
10
|
+
:runcom_link: link:https://alchemists.io/projects/runcom[Runcom]
|
7
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]
|
8
13
|
|
9
14
|
= Rubysmith
|
10
15
|
|
@@ -26,6 +31,8 @@ toc::[]
|
|
26
31
|
* Supports link:https://orcid.org[Citations (ORCID)].
|
27
32
|
* Supports console script for local development.
|
28
33
|
* Supports link:https://github.com/ruby/debug[Debug].
|
34
|
+
* Supports {development_containers_link}.
|
35
|
+
* Supports {docker_link}.
|
29
36
|
* Supports link:https://git-scm.com[Git].
|
30
37
|
* Supports link:https://github.com[GitHub].
|
31
38
|
* Supports link:https://alchemists.io/projects/git-lint[Git Lint].
|
@@ -46,6 +53,7 @@ toc::[]
|
|
46
53
|
** Security
|
47
54
|
** Code of Conduct
|
48
55
|
** Contributions
|
56
|
+
** Developer Certificate of Origin
|
49
57
|
** Communities
|
50
58
|
|
51
59
|
== Requirements
|
@@ -98,19 +106,16 @@ options, you can use `--no-*` prefixes. Example:
|
|
98
106
|
rubysmith build --name demo --no-debug --no-reek
|
99
107
|
----
|
100
108
|
|
101
|
-
With the above example, both Debug and Reek support would have been disabled when building the
|
102
|
-
`demo` project. Taking this a step further, you can also use the `--min` option to generate a
|
103
|
-
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:
|
104
110
|
|
105
111
|
[source,bash]
|
106
112
|
----
|
107
113
|
rubysmith build --name demo --min
|
108
114
|
----
|
109
115
|
|
110
|
-
The above is
|
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.
|
111
117
|
|
112
|
-
As shown earlier, you can combine options but be aware that order matters. Take the following, for
|
113
|
-
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:
|
114
119
|
|
115
120
|
[source,bash]
|
116
121
|
----
|
@@ -118,15 +123,9 @@ rubysmith build --name demo --min --zeitwerk
|
|
118
123
|
rubysmith build --name demo --max --no-debug
|
119
124
|
----
|
120
125
|
|
121
|
-
With the above examples, the first line will
|
122
|
-
line will _enable_ all options except Debug. This can be a handy way to build a new project with all
|
123
|
-
options either disabled or enabled with only a few select options modified. To have specific options
|
124
|
-
enabled/disabled _every time_ you build a new Ruby project, you can edit your global configuration
|
125
|
-
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).
|
126
127
|
|
127
|
-
There is a lot of flexibility when building a new project through the various build options. I'll
|
128
|
-
walk you through each so you can better understand why you'd want to enable or disable any one of
|
129
|
-
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.
|
130
129
|
|
131
130
|
===== Amazing Print
|
132
131
|
|
@@ -135,45 +134,78 @@ link:https://github.com/amazing-print/amazing_print[Amazing Print] gem for debug
|
|
135
134
|
a handy debugging tool when inspecting your Ruby objects and printing details in a quick to read
|
136
135
|
format.
|
137
136
|
|
137
|
+
===== Bootsnap
|
138
|
+
|
139
|
+
The `--bootsnap` option allows you to build your project with the
|
140
|
+
link:https://github.com/Shopify/bootsnap[Bootsnap] gem for improved performance. This is best used for pure, non-gem, Ruby projects and/or web applications in general.
|
141
|
+
|
138
142
|
===== Caliber
|
139
143
|
|
140
144
|
The `--caliber` option allows you to build your project with the
|
141
145
|
link:https://alchemists.io/projects/caliber[Caliber] gem so you have an immediate working -- and
|
142
146
|
high quality -- link:https://docs.rubocop.org/rubocop[RuboCop] configuration. Read the Caliber
|
143
|
-
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
|
+
....
|
144
156
|
|
145
157
|
===== Circle CI
|
146
158
|
|
147
159
|
The `--circle_ci` option allows you to build your project with link:https://circleci.com[Circle CI]
|
148
|
-
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
|
+
....
|
149
166
|
|
150
167
|
===== Citation
|
151
168
|
|
152
169
|
The `--citation` option allows you to add a link:https://citation-file-format.github.io[citation]
|
153
170
|
file to your project so you can help the research community cite your work in their studies if your
|
154
|
-
project is used.
|
171
|
+
project is used. This adds the following file when enabled:
|
172
|
+
|
173
|
+
....
|
174
|
+
├── CITATION.cff
|
175
|
+
....
|
155
176
|
|
156
177
|
===== Community
|
157
178
|
|
158
179
|
The `--community` option allows you to link to your open source community, organization, or group
|
159
|
-
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.
|
160
181
|
|
161
182
|
===== Code of Conduct
|
162
183
|
|
163
184
|
The `--conduct` option allows you to link to your link:https://www.contributor-covenant.org[Code of
|
164
185
|
Conduct] to encourage good community participation. Regardless of whether you have a community or
|
165
|
-
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.
|
166
187
|
|
167
188
|
===== Console
|
168
189
|
|
169
190
|
The `--console` option allows you to add a `console` script for local development. So instead of
|
170
191
|
typing `irb`, you can type `bin/console` and get an IRB session with all of your project's code
|
171
|
-
loaded.
|
192
|
+
loaded. This adds the following file when enabled:
|
193
|
+
|
194
|
+
....
|
195
|
+
├── bin
|
196
|
+
│ ├── console
|
197
|
+
....
|
172
198
|
|
173
199
|
===== Contributions
|
174
200
|
|
175
201
|
The `--contributions` option allows you to link to contributing documentation so people know to
|
176
|
-
contribute back to your work.
|
202
|
+
contribute back to your work. The link is added to the `README` file when enabled.
|
203
|
+
|
204
|
+
===== Developer Certificate of Origin
|
205
|
+
|
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.
|
207
|
+
|
208
|
+
ℹ️ This is disabled by default but will be enabled by default in the next major version.
|
177
209
|
|
178
210
|
===== Debug
|
179
211
|
|
@@ -181,11 +213,43 @@ The `--debug` option allows you add the link:https://github.com/ruby/debug[Debug
|
|
181
213
|
project for debugging your code by setting breakpoints, remotely connecting to running code, and
|
182
214
|
much more.
|
183
215
|
|
216
|
+
===== Docker
|
217
|
+
|
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
|
+
....
|
229
|
+
|
230
|
+
===== Development Containers
|
231
|
+
|
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.
|
242
|
+
|
184
243
|
===== Funding
|
185
244
|
|
186
245
|
The `--funding` option allows you add a link:https://github.com[GitHub] funding configuration to
|
187
246
|
your project so you can attract link:https://docs.github.com/en/sponsors[sponsors]. This option
|
188
|
-
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
|
+
....
|
189
253
|
|
190
254
|
===== Git
|
191
255
|
|
@@ -194,11 +258,23 @@ The `--git` option allows you add link:https://git-scm.com[Git] repository suppo
|
|
194
258
|
===== GitHub
|
195
259
|
|
196
260
|
The `--git_hub` option allows you add link:https://github.com[GitHub] templates to your project for
|
197
|
-
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
|
+
....
|
198
268
|
|
199
269
|
===== GitHub CI
|
200
270
|
|
201
|
-
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
|
+
....
|
202
278
|
|
203
279
|
===== Git Lint
|
204
280
|
|
@@ -223,17 +299,23 @@ The `--license` option ensures you build your project with a license.
|
|
223
299
|
|
224
300
|
===== Maximum
|
225
301
|
|
226
|
-
The `--max` option allows you to build your project with
|
227
|
-
to build a new project
|
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.
|
228
304
|
|
229
305
|
===== Minimum
|
230
306
|
|
231
|
-
The `--min` option allows you to build your project with
|
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.
|
232
308
|
|
233
309
|
===== Rake
|
234
310
|
|
235
311
|
The `--rake` option allows you to add the link:https://github.com/ruby/rake[Rake] gem for quickly
|
236
|
-
crafting build scripts.
|
312
|
+
crafting build scripts. This adds the following files to your project:
|
313
|
+
|
314
|
+
....
|
315
|
+
├── bin
|
316
|
+
│ ├── rake
|
317
|
+
├── Rakefile
|
318
|
+
....
|
237
319
|
|
238
320
|
===== Readme
|
239
321
|
|
@@ -242,7 +324,7 @@ The `--readme` option allows you to add README documentation to your project.
|
|
242
324
|
===== Reek
|
243
325
|
|
244
326
|
The `--reek` option allows you add the link:https://github.com/troessner/reek[Reek] gem to your
|
245
|
-
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.
|
246
328
|
|
247
329
|
===== Refinements
|
248
330
|
|
@@ -253,7 +335,19 @@ Ruby core objects without monkey patching your code.
|
|
253
335
|
===== RSpec
|
254
336
|
|
255
337
|
The `--rspec` option allows you add the link:https://rspec.info[RSpec] gem to your project for
|
256
|
-
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
|
+
....
|
257
351
|
|
258
352
|
===== Repl Type Completor (RTC)
|
259
353
|
|
@@ -262,13 +356,17 @@ The `--rtc` option allows you add the link:https://github.com/ruby/repl_type_com
|
|
262
356
|
===== Setup
|
263
357
|
|
264
358
|
The `--setup` option allows you to configure you project with automated setup instructions so anyone
|
265
|
-
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
|
+
....
|
266
364
|
|
267
365
|
===== SimpleCov
|
268
366
|
|
269
367
|
The `--simple_cov` option allows you add the
|
270
368
|
link:https://github.com/simplecov-ruby/simplecov[SimpleCov] gem to your project to provide full
|
271
|
-
analysis of
|
369
|
+
analysis of your project's code quality and/or find code that is unused.
|
272
370
|
|
273
371
|
===== Versions
|
274
372
|
|
@@ -289,8 +387,7 @@ This gem can be configured via a global configuration:
|
|
289
387
|
$HOME/.config/rubysmith/configuration.yml
|
290
388
|
....
|
291
389
|
|
292
|
-
It can also be configured via
|
293
|
-
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:
|
294
391
|
|
295
392
|
[source,yaml]
|
296
393
|
----
|
@@ -299,6 +396,7 @@ author:
|
|
299
396
|
uri: "%<organization_uri>s/team/%<author_handle>s"
|
300
397
|
build:
|
301
398
|
amazing_print: true
|
399
|
+
bootsnap: false
|
302
400
|
caliber: true
|
303
401
|
circle_ci: false
|
304
402
|
citation: true
|
@@ -307,7 +405,10 @@ build:
|
|
307
405
|
conduct: true
|
308
406
|
console: true
|
309
407
|
contributions: true
|
408
|
+
dcoo: false
|
310
409
|
debug: true
|
410
|
+
devcontainer: false
|
411
|
+
docker: false
|
311
412
|
funding: false
|
312
413
|
git: true
|
313
414
|
git_hub: false
|
@@ -330,6 +431,7 @@ build:
|
|
330
431
|
versions: true
|
331
432
|
zeitwerk: true
|
332
433
|
citation:
|
434
|
+
affiliation: "%<organization_label>s"
|
333
435
|
message: Please use the following metadata when citing this project in your work.
|
334
436
|
documentation:
|
335
437
|
format: "adoc"
|
@@ -344,6 +446,7 @@ project:
|
|
344
446
|
community: "%<organization_uri>s/community"
|
345
447
|
conduct: "%<organization_uri>s/policies/code_of_conduct"
|
346
448
|
contributions: "%<organization_uri>s/policies/contributions"
|
449
|
+
dcoo: "%<organization_uri>s/policies/developer_certificate_of_origin"
|
347
450
|
download: "https://rubygems.org/gems/%<project_name>s"
|
348
451
|
funding: "%<repository_uri>s/sponsors/%<repository_handle>s"
|
349
452
|
home: "%<organization_uri>s/projects/%<project_name>s"
|
@@ -358,11 +461,11 @@ repository:
|
|
358
461
|
uri: https://github.com
|
359
462
|
----
|
360
463
|
|
361
|
-
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
|
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.
|
362
465
|
|
363
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.
|
364
467
|
|
365
|
-
|
468
|
+
Each section of the configuration is explained below.
|
366
469
|
|
367
470
|
==== Author
|
368
471
|
|
@@ -375,6 +478,7 @@ author:
|
|
375
478
|
email: jsmith@example.com
|
376
479
|
family_name: Smith
|
377
480
|
given_name: Jill
|
481
|
+
author_uri: # Requires being supplied.
|
378
482
|
----
|
379
483
|
|
380
484
|
If your global link:https://git-scm.com[Git] configuration is properly configured, your given name;
|
@@ -392,29 +496,88 @@ this project.
|
|
392
496
|
|
393
497
|
This section allows you to configure your link:https://orcid.org[ORCID]
|
394
498
|
link:https://citation-file-format.github.io[citation] information used by the research community.
|
395
|
-
|
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.
|
396
508
|
|
397
509
|
==== Documentation
|
398
510
|
|
399
511
|
Use this section to define the kind of documentation you want generated for your project. The
|
400
512
|
following options are available:
|
401
513
|
|
402
|
-
* `adoc
|
403
|
-
* `md
|
514
|
+
* `adoc`: Uses link:https://asciidoctor.org[ASCII Doc] format.
|
515
|
+
* `md`: Uses link:https://daringfireball.net/projects/markdown[Markdown] format.
|
404
516
|
|
405
517
|
==== License
|
406
518
|
|
407
|
-
Use this section to define the license you want to use for your project. The following
|
519
|
+
Use this section to define the license you want to use for your project. When picking a license, you can supply the appropriate `label` and `version` in addition to the `name`. The `name` is the only value you _can't_ customize. The following details all supported licenses.
|
520
|
+
|
521
|
+
===== Apache
|
408
522
|
|
409
|
-
|
410
|
-
* `hippocratic`: Uses the link:https://firstdonoharm.dev[Hippocratic] license.
|
411
|
-
* `mit`: Uses the link:https://mit-license.org[MIT] license.
|
523
|
+
To use the link:https://www.apache.org/licenses/LICENSE-2.0[Apache] license, apply this configuration:
|
412
524
|
|
413
|
-
|
525
|
+
[source,yaml]
|
526
|
+
----
|
527
|
+
license:
|
528
|
+
label: "Apache"
|
529
|
+
name: "apache"
|
530
|
+
version: "2.0"
|
531
|
+
----
|
532
|
+
|
533
|
+
===== Fair Source
|
534
|
+
|
535
|
+
To use the link:https://fsl.software[Fair Source] license, apply this configuration:
|
536
|
+
|
537
|
+
[source,yaml]
|
538
|
+
----
|
539
|
+
license:
|
540
|
+
label: "Fair Source"
|
541
|
+
name: "fair"
|
542
|
+
version: "FSL-1.1-Apache-2.0"
|
543
|
+
----
|
544
|
+
|
545
|
+
===== Hippocratic
|
546
|
+
|
547
|
+
To use the link:https://firstdonoharm.dev[Hippocratic] license, apply this configuration:
|
548
|
+
|
549
|
+
[source,yaml]
|
550
|
+
----
|
551
|
+
license:
|
552
|
+
label: "Hippocratic"
|
553
|
+
name: "hippocratic"
|
554
|
+
version: "2.1"
|
555
|
+
----
|
556
|
+
|
557
|
+
ℹ️ This is the default license unless you customize.
|
558
|
+
|
559
|
+
===== MIT
|
560
|
+
|
561
|
+
To use the link:https://mit-license.org[MIT] license, apply this configuration:
|
562
|
+
|
563
|
+
[source,yaml]
|
564
|
+
----
|
565
|
+
license:
|
566
|
+
label: "MIT"
|
567
|
+
name: "mit"
|
568
|
+
version: ""
|
569
|
+
----
|
414
570
|
|
415
571
|
==== Organization
|
416
572
|
|
417
|
-
Use this section to define
|
573
|
+
Use this section to define organization specific information. This is useful for information that isn't project specific but related to all projects within your organization. You'll want -- highly recommended -- to supply configuration details. For example, here's what a fictional organization might look like:
|
574
|
+
|
575
|
+
[source,yaml]
|
576
|
+
----
|
577
|
+
organization:
|
578
|
+
label: ACME
|
579
|
+
uri: https://acme.io
|
580
|
+
----
|
418
581
|
|
419
582
|
==== Project
|
420
583
|
|
@@ -440,7 +603,13 @@ As for the `version` key, this defines the default version of newly created proj
|
|
440
603
|
|
441
604
|
==== Repository
|
442
605
|
|
443
|
-
Your
|
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
|
+
```
|
444
613
|
|
445
614
|
== Development
|
446
615
|
|
@@ -477,6 +646,8 @@ bin/rake
|
|
477
646
|
|
478
647
|
== link:https://alchemists.io/policies/contributions[Contributions]
|
479
648
|
|
649
|
+
== link:https://alchemists.io/policies/developer_certificate_of_origin[Developer Certificate of Origin]
|
650
|
+
|
480
651
|
== link:https://alchemists.io/projects/rubysmith/versions[Versions]
|
481
652
|
|
482
653
|
== link:https://alchemists.io/community[Community]
|
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
|
|
@@ -13,7 +13,7 @@ module Rubysmith
|
|
13
13
|
.render
|
14
14
|
.replace(/\n\s+group/, "\n\ngroup")
|
15
15
|
.replace(/\n\s+gem/, "\n gem")
|
16
|
-
.replace(/ (?=.+(refinements|zeitwerk))/, "")
|
16
|
+
.replace(/ (?=.+(bootsnap|refinements|zeitwerk))/, "")
|
17
17
|
.replace(/(\n+|\s+)end/, "\nend")
|
18
18
|
.replace(/\n\ngroup :(quality|development|test|tools) do\nend/, "")
|
19
19
|
.replace(/org"\n+/, "org\"\n\n")
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/struct"
|
4
|
+
|
5
|
+
module Rubysmith
|
6
|
+
module Builders
|
7
|
+
module DevContainer
|
8
|
+
# Builds Docker Compose configuration for container.
|
9
|
+
class Compose < Abstract
|
10
|
+
using Refinements::Struct
|
11
|
+
|
12
|
+
def call
|
13
|
+
return false unless settings.build_devcontainer
|
14
|
+
|
15
|
+
path = "%project_name%/.devcontainer/compose.yaml.erb"
|
16
|
+
builder.call(settings.merge(template_path: path)).render
|
17
|
+
true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/struct"
|
4
|
+
|
5
|
+
module Rubysmith
|
6
|
+
module Builders
|
7
|
+
module DevContainer
|
8
|
+
# Builds container configuration.
|
9
|
+
class Configuration < Abstract
|
10
|
+
using Refinements::Struct
|
11
|
+
|
12
|
+
def call
|
13
|
+
return false unless settings.build_devcontainer
|
14
|
+
|
15
|
+
path = "%project_name%/.devcontainer/devcontainer.json.erb"
|
16
|
+
builder.call(settings.merge(template_path: path)).render
|
17
|
+
true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/struct"
|
4
|
+
|
5
|
+
module Rubysmith
|
6
|
+
module Builders
|
7
|
+
module DevContainer
|
8
|
+
# Builds Dockerfile for container.
|
9
|
+
class Dockerfile < Abstract
|
10
|
+
using Refinements::Struct
|
11
|
+
|
12
|
+
def call
|
13
|
+
return false unless settings.build_devcontainer
|
14
|
+
|
15
|
+
builder.call(settings.merge(template_path: "%project_name%/.devcontainer/Dockerfile.erb"))
|
16
|
+
.render
|
17
|
+
true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/struct"
|
4
|
+
|
5
|
+
module Rubysmith
|
6
|
+
module Builders
|
7
|
+
module Docker
|
8
|
+
# Builds Docker build script.
|
9
|
+
class Build < Abstract
|
10
|
+
using Refinements::Struct
|
11
|
+
|
12
|
+
def call
|
13
|
+
return false unless settings.build_docker
|
14
|
+
|
15
|
+
builder.call(settings.merge(template_path: "%project_name%/bin/docker/build.erb"))
|
16
|
+
.render
|
17
|
+
.permit 0o755
|
18
|
+
|
19
|
+
true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|