rubysmith 6.9.0 → 7.0.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 +46 -57
- data/lib/rubysmith/builder.rb +9 -9
- data/lib/rubysmith/builders/abstract.rb +4 -4
- data/lib/rubysmith/builders/bundler.rb +2 -2
- data/lib/rubysmith/builders/caliber.rb +4 -4
- data/lib/rubysmith/builders/circle_ci.rb +3 -3
- data/lib/rubysmith/builders/console.rb +3 -3
- data/lib/rubysmith/builders/core.rb +6 -6
- data/lib/rubysmith/builders/documentation/citation.rb +3 -3
- data/lib/rubysmith/builders/documentation/license.rb +8 -9
- data/lib/rubysmith/builders/documentation/readme.rb +4 -4
- data/lib/rubysmith/builders/documentation/version.rb +4 -5
- data/lib/rubysmith/builders/git/commit.rb +4 -8
- data/lib/rubysmith/builders/git/ignore.rb +3 -3
- data/lib/rubysmith/builders/git/safe.rb +3 -3
- data/lib/rubysmith/builders/git/setup.rb +3 -3
- data/lib/rubysmith/builders/git_hub/ci.rb +27 -0
- data/lib/rubysmith/builders/git_hub/funding.rb +23 -0
- data/lib/rubysmith/builders/git_hub/template.rb +32 -0
- data/lib/rubysmith/builders/guard.rb +4 -4
- data/lib/rubysmith/builders/init.rb +2 -2
- data/lib/rubysmith/builders/rake/binstub.rb +24 -0
- data/lib/rubysmith/builders/rake/configuration.rb +29 -0
- data/lib/rubysmith/builders/reek.rb +3 -3
- data/lib/rubysmith/builders/rspec/binstub.rb +3 -3
- data/lib/rubysmith/builders/rspec/context.rb +6 -6
- data/lib/rubysmith/builders/rspec/helper.rb +3 -3
- data/lib/rubysmith/builders/setup.rb +3 -3
- data/lib/rubysmith/builders/version.rb +2 -2
- data/lib/rubysmith/cli/actions/amazing_print.rb +3 -3
- data/lib/rubysmith/cli/actions/caliber.rb +3 -3
- data/lib/rubysmith/cli/actions/circle_ci.rb +4 -4
- data/lib/rubysmith/cli/actions/citation.rb +3 -3
- data/lib/rubysmith/cli/actions/community.rb +3 -3
- data/lib/rubysmith/cli/actions/conduct.rb +3 -3
- data/lib/rubysmith/cli/actions/console.rb +3 -3
- data/lib/rubysmith/cli/actions/contributions.rb +3 -3
- data/lib/rubysmith/cli/actions/debug.rb +3 -3
- data/lib/rubysmith/cli/actions/funding.rb +4 -4
- data/lib/rubysmith/cli/actions/git.rb +3 -3
- data/lib/rubysmith/cli/actions/git_hub.rb +3 -3
- data/lib/rubysmith/cli/actions/git_hub_ci.rb +3 -3
- data/lib/rubysmith/cli/actions/git_lint.rb +3 -3
- data/lib/rubysmith/cli/actions/guard.rb +3 -3
- data/lib/rubysmith/cli/actions/irb_kit.rb +3 -3
- data/lib/rubysmith/cli/actions/license.rb +3 -3
- data/lib/rubysmith/cli/actions/maximum.rb +4 -4
- data/lib/rubysmith/cli/actions/minimum.rb +4 -4
- data/lib/rubysmith/cli/actions/name.rb +2 -2
- data/lib/rubysmith/cli/actions/rake.rb +3 -3
- data/lib/rubysmith/cli/actions/readme.rb +3 -3
- data/lib/rubysmith/cli/actions/reek.rb +3 -3
- data/lib/rubysmith/cli/actions/refinements.rb +3 -3
- data/lib/rubysmith/cli/actions/rspec.rb +3 -3
- data/lib/rubysmith/cli/actions/rtc.rb +3 -3
- data/lib/rubysmith/cli/actions/security.rb +3 -3
- data/lib/rubysmith/cli/actions/setup.rb +3 -3
- data/lib/rubysmith/cli/actions/simple_cov.rb +3 -3
- data/lib/rubysmith/cli/actions/versions.rb +3 -3
- data/lib/rubysmith/cli/actions/zeitwerk.rb +3 -3
- data/lib/rubysmith/cli/commands/build.rb +33 -31
- data/lib/rubysmith/cli/shell.rb +0 -1
- data/lib/rubysmith/configuration/contract.rb +16 -14
- data/lib/rubysmith/configuration/defaults.yml +21 -1
- data/lib/rubysmith/configuration/model.rb +30 -28
- data/lib/rubysmith/configuration/transformers/git_hub_user.rb +2 -2
- data/lib/rubysmith/container.rb +19 -9
- data/lib/rubysmith/extensions/bundler.rb +7 -7
- data/lib/rubysmith/extensions/pragmater.rb +10 -10
- data/lib/rubysmith/extensions/rubocop.rb +7 -7
- data/lib/rubysmith/extensions/tocer.rb +8 -8
- data/lib/rubysmith/renderers/erb.rb +4 -4
- data/lib/rubysmith/templates/%project_name%/.circleci/config.yml.erb +1 -1
- data/lib/rubysmith/templates/%project_name%/.github/FUNDING.yml.erb +1 -1
- data/lib/rubysmith/templates/%project_name%/.github/workflows/ci.yml.erb +1 -1
- data/lib/rubysmith/templates/%project_name%/CITATION.cff.erb +12 -12
- data/lib/rubysmith/templates/%project_name%/Gemfile.erb +19 -19
- data/lib/rubysmith/templates/%project_name%/LICENSE-apache.adoc.erb +1 -1
- data/lib/rubysmith/templates/%project_name%/LICENSE-apache.md.erb +1 -1
- data/lib/rubysmith/templates/%project_name%/LICENSE-mit.adoc.erb +1 -1
- data/lib/rubysmith/templates/%project_name%/LICENSE-mit.md.erb +1 -1
- data/lib/rubysmith/templates/%project_name%/README.adoc.erb +21 -21
- data/lib/rubysmith/templates/%project_name%/README.md.erb +21 -21
- data/lib/rubysmith/templates/%project_name%/Rakefile.erb +10 -10
- data/lib/rubysmith/templates/%project_name%/VERSIONS.adoc.erb +1 -1
- data/lib/rubysmith/templates/%project_name%/VERSIONS.md.erb +1 -1
- data/lib/rubysmith/templates/%project_name%/bin/console.erb +1 -1
- data/lib/rubysmith/templates/%project_name%/bin/setup.erb +1 -1
- data/lib/rubysmith/templates/%project_name%/lib/%project_path%.rb.erb +7 -7
- data/lib/rubysmith/templates/%project_name%/spec/lib/%project_path%_spec.rb.erb +2 -2
- data/lib/rubysmith/templates/%project_name%/spec/spec_helper.rb.erb +4 -4
- data/lib/rubysmith/templates/%project_name%/spec/support/shared_contexts/temp_dir.rb.erb +3 -3
- data/lib/rubysmith.rb +1 -0
- data/rubysmith.gemspec +12 -13
- data.tar.gz.sig +0 -0
- metadata +30 -45
- metadata.gz.sig +4 -3
- data/lib/rubysmith/builders/git_hub.rb +0 -39
- data/lib/rubysmith/builders/git_hub_ci.rb +0 -25
- data/lib/rubysmith/builders/rake.rb +0 -39
- data/lib/rubysmith/cli/actions/publish.rb +0 -35
- data/lib/rubysmith/configuration/transformers/target_root.rb +0 -18
- data/lib/rubysmith/extensions/milestoner.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ba99960f8d5238ff9f23bc08b866c1d2e808bb7704f2d745b28254ecda1aaab
|
4
|
+
data.tar.gz: 420ef6ebfc7751d9aa490a2abbe2a24fe09206ef5a4735da6e9f3bb4aaf673b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53f5f436d69f6218b4eaee550f844fab11c1667666d6bbf19ad01b3ab463fcfcbc0d8e3bd36f2da0e6c384ddea2f1e585311ce3706c87a30246b14a1508af493
|
7
|
+
data.tar.gz: 69d5ece05c1d3017d01d615dbd4c7efca795dfd863c8ba1149e0057d978095665c8d14f1f877e8c60d35bc2d4279265f5619cee06807e1d7a7b7936e752ec2da
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/README.adoc
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
|
5
5
|
:gemsmith_link: link:https://alchemists.io/projects/gemsmith[Gemsmith]
|
6
6
|
:bundler_inline_link: link:https://alchemists.io/articles/ruby_bundler_inline[Bundler Inline]
|
7
|
+
:string_formats_link: link:https://docs.ruby-lang.org/en/3.3/format_specifications_rdoc.html[String Formats]
|
7
8
|
|
8
9
|
= Rubysmith
|
9
10
|
|
@@ -77,7 +78,7 @@ gem install rubysmith
|
|
77
78
|
|
78
79
|
From the command line, type: `rubysmith --help`
|
79
80
|
|
80
|
-
image:https://alchemists.io/images/projects/rubysmith/screenshots/usage.png[Usage,width=
|
81
|
+
image:https://alchemists.io/images/projects/rubysmith/screenshots/usage.png[Usage,width=554,height=301,role=focal_point]
|
81
82
|
|
82
83
|
==== Build
|
83
84
|
|
@@ -279,21 +280,6 @@ The `--zeitwerk` option allows you add the link:https://github.com/fxn/zeitwerk[
|
|
279
280
|
|
280
281
|
This includes having access to your project's Zeitwerk loader for inspection and debugging purposes. This means if you built a `Demo` project, you'd immediately have access to your project's loader via `Demo.loader` when using the project console (i.e. `bin/console`, assuming you built your project with the `--console` flag enabled which is default behavior).
|
281
282
|
|
282
|
-
==== Publish
|
283
|
-
|
284
|
-
Rubysmith can be used to publish your Ruby projects. This is done via the `--publish` command. If,
|
285
|
-
for example, you want to publish `0.1.0` of your `demo` project you could do that as follows:
|
286
|
-
|
287
|
-
[source,bash]
|
288
|
-
----
|
289
|
-
cd demo
|
290
|
-
rubysmith --publish 0.1.0
|
291
|
-
----
|
292
|
-
|
293
|
-
This will publish (tag) your `demo` project as `0.1.0` both locally and on your remote Git repository.
|
294
|
-
Rubysmith uses link:https://alchemists.io/projects/milestoner[Milestoner] to handle publishing
|
295
|
-
of your project for you. You can use either but the convenience is built in for you.
|
296
|
-
|
297
283
|
=== Configuration
|
298
284
|
|
299
285
|
This gem can be configured via a global configuration:
|
@@ -308,10 +294,8 @@ variables. The default configuration is as follows:
|
|
308
294
|
[source,yaml]
|
309
295
|
----
|
310
296
|
author:
|
311
|
-
|
312
|
-
|
313
|
-
given_name:
|
314
|
-
url:
|
297
|
+
handle: undefined
|
298
|
+
uri: "%<organization_uri>s/team/%<author_handle>s"
|
315
299
|
build:
|
316
300
|
amazing_print: true
|
317
301
|
caliber: true
|
@@ -329,7 +313,7 @@ build:
|
|
329
313
|
git_hub_ci: false
|
330
314
|
git_lint: true
|
331
315
|
guard: true
|
332
|
-
irb_kit:
|
316
|
+
irb_kit: true
|
333
317
|
license: true
|
334
318
|
maximum: false
|
335
319
|
minimum: false
|
@@ -345,64 +329,69 @@ build:
|
|
345
329
|
versions: true
|
346
330
|
zeitwerk: true
|
347
331
|
citation:
|
348
|
-
affiliation:
|
349
332
|
message: Please use the following metadata when citing this project in your work.
|
350
|
-
orcid:
|
351
333
|
documentation:
|
352
334
|
format: "adoc"
|
353
|
-
git_hub:
|
354
|
-
user:
|
355
335
|
license:
|
356
336
|
label: Hippocratic
|
357
337
|
name: hippocratic
|
358
338
|
version: "2.1"
|
359
339
|
organization:
|
360
|
-
|
340
|
+
uri: https://undefined.io
|
361
341
|
project:
|
362
|
-
|
363
|
-
community:
|
364
|
-
conduct:
|
365
|
-
contributions:
|
366
|
-
download:
|
367
|
-
funding:
|
368
|
-
home:
|
369
|
-
issues:
|
370
|
-
license:
|
371
|
-
security:
|
372
|
-
source:
|
373
|
-
versions:
|
342
|
+
uri:
|
343
|
+
community: "%<organization_uri>s/community"
|
344
|
+
conduct: "%<organization_uri>s/policies/code_of_conduct"
|
345
|
+
contributions: "%<organization_uri>s/policies/contributions"
|
346
|
+
download: "https://rubygems.org/gems/%<project_name>s"
|
347
|
+
funding: "%<repository_uri>s/sponsors/%<repository_handle>s"
|
348
|
+
home: "%<organization_uri>s/projects/%<project_name>s"
|
349
|
+
issues: "%<repository_uri>s/%<repository_handle>s/%<project_name>s/issues"
|
350
|
+
license: "%<organization_uri>s/policies/license"
|
351
|
+
security: "%<organization_uri>s/policies/security"
|
352
|
+
source: "%<repository_uri>s/%<repository_handle>s/%<project_name>s"
|
353
|
+
versions: "%<organization_uri>s/projects/%<project_name>s/versions"
|
374
354
|
version: 0.0.0
|
355
|
+
repository:
|
356
|
+
handle: undefined
|
357
|
+
uri: https://github.com
|
375
358
|
----
|
376
359
|
|
377
|
-
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.
|
360
|
+
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.
|
361
|
+
|
362
|
+
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.
|
363
|
+
|
364
|
+
The next sections will walk you through each configuration so you can learn more.
|
378
365
|
|
379
366
|
==== Author
|
380
367
|
|
381
368
|
Author information is used when generating project documentation and is recommended you fill this
|
382
369
|
information in before building a project. Example:
|
383
370
|
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
371
|
+
[source,yaml]
|
372
|
+
----
|
373
|
+
author:
|
374
|
+
email: jsmith@example.com
|
375
|
+
family_name: Smith
|
376
|
+
given_name: Jill
|
377
|
+
----
|
389
378
|
|
390
379
|
If your global link:https://git-scm.com[Git] configuration is properly configured, your given name;
|
391
380
|
family name; and email will be used by default. Should you not want to defer to Git, you can supply
|
392
|
-
custom values as desired. The
|
381
|
+
custom values as desired. The URI is the only value that can't be automatically computed for you.
|
393
382
|
|
394
383
|
==== Build
|
395
384
|
|
396
385
|
All build options only accept booleans values and can be customized as desired. When changing your build options, they will dynamically render when displaying usage (i.e. `rubysmith --help`). All of these options have been explained in greater detail in the _Usage_ section.
|
397
386
|
|
398
|
-
ℹ️ The `cli` option is provided to support
|
387
|
+
ℹ️ The `cli` option is provided to support {gemsmith_link} but is not, currently, used by
|
399
388
|
this project.
|
400
389
|
|
401
390
|
==== Citations
|
402
391
|
|
403
392
|
This section allows you to configure your link:https://orcid.org[ORCID]
|
404
393
|
link:https://citation-file-format.github.io[citation] information used by the research community.
|
405
|
-
You should definitely fill this in. Your author information, detailed above, will be used
|
394
|
+
You should definitely fill this in. Your author information, detailed above, will also be used when building this file.
|
406
395
|
|
407
396
|
==== Documentation
|
408
397
|
|
@@ -412,10 +401,6 @@ following options are available:
|
|
412
401
|
* `adoc` - Uses link:https://asciidoctor.org[ASCII Doc] format.
|
413
402
|
* `md` - Uses link:https://asciidoctor.org[Markdown] format.
|
414
403
|
|
415
|
-
==== GitHub
|
416
|
-
|
417
|
-
Your GitHub user is the handle you setup when creating your GitHub account (i.e. `+https://github.com/<your_handle>+`). This information is used for template, funding, and/or URL construction purposes.
|
418
|
-
|
419
404
|
==== License
|
420
405
|
|
421
406
|
Use this section to define the license you want to use for your project. The following are available:
|
@@ -428,20 +413,20 @@ When picking a license, you can also supply the appropriate label and version in
|
|
428
413
|
|
429
414
|
==== Organization
|
430
415
|
|
431
|
-
Use this section to define
|
416
|
+
Use this section to define URI information that points to your organization. This is useful for information that isn't project specific but related to all projects within your organization. You'll want to customize this URI especially for documentation purposes.
|
432
417
|
|
433
418
|
==== Project
|
434
419
|
|
435
|
-
There are two sub-categories within this section:
|
436
|
-
specific documentation related to your project. You'll want to customize these
|
437
|
-
used for documentation, citations, and general project information. Some of the
|
420
|
+
There are two sub-categories within this section: URIs and version. The URIs allow you to link to
|
421
|
+
specific documentation related to your project. You'll want to customize these URIs since they are
|
422
|
+
used for documentation, citations, and general project information. Some of the URIs are also used
|
438
423
|
by the {gemsmith_link} gem.
|
439
424
|
|
440
|
-
One powerful feature of this configuration is that you can use
|
425
|
+
One powerful feature of this configuration is that you can use `%<project_name>s` as a placeholder _anywhere_ in your URIs and Rubysmith will ensure your place holder is replaced with your project name when generating a new project. Example:
|
441
426
|
|
442
427
|
....
|
443
428
|
# Configuration
|
444
|
-
https://www.example.com
|
429
|
+
https://www.example.com/%<project_name>s
|
445
430
|
|
446
431
|
# Command
|
447
432
|
rubysmith build --name demo
|
@@ -452,6 +437,10 @@ https://www.example.com/demo
|
|
452
437
|
|
453
438
|
As for the `version` key, this defines the default version of newly created projects. `0.0.0` is the default but you can use a higher version number like `0.1.0` or even `1.0.0` if you are super confident in your work. That said, a lower the number is recommended when building your initial project which is why `0.0.0` is the default.
|
454
439
|
|
440
|
+
==== Repository
|
441
|
+
|
442
|
+
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.
|
443
|
+
|
455
444
|
== Development
|
456
445
|
|
457
446
|
To contribute, run:
|
data/lib/rubysmith/builder.rb
CHANGED
@@ -15,10 +15,10 @@ module Rubysmith
|
|
15
15
|
|
16
16
|
def self.call(...) = new(...)
|
17
17
|
|
18
|
-
def initialize(
|
19
|
-
|
20
|
-
@configuration = configuration
|
18
|
+
def initialize(settings, helpers: HELPERS, **)
|
19
|
+
@settings = settings
|
21
20
|
@helpers = helpers
|
21
|
+
super(**)
|
22
22
|
end
|
23
23
|
|
24
24
|
def append content
|
@@ -107,7 +107,7 @@ module Rubysmith
|
|
107
107
|
|
108
108
|
private
|
109
109
|
|
110
|
-
attr_reader :
|
110
|
+
attr_reader :settings, :helpers
|
111
111
|
|
112
112
|
def execute *command
|
113
113
|
executor.capture2e(*command).then do |result, status|
|
@@ -117,20 +117,20 @@ module Rubysmith
|
|
117
117
|
|
118
118
|
def inserter = helpers.fetch(__method__)
|
119
119
|
|
120
|
-
def renderer = helpers.fetch(__method__).new(
|
120
|
+
def renderer = helpers.fetch(__method__).new(settings)
|
121
121
|
|
122
122
|
def executor = helpers.fetch(__method__)
|
123
123
|
|
124
|
-
def relative_build_path = build_path.relative_path_from(
|
124
|
+
def relative_build_path = build_path.relative_path_from(settings.target_root)
|
125
125
|
|
126
126
|
def build_path
|
127
127
|
pathway.end_path
|
128
|
-
.gsub("%project_name%",
|
129
|
-
.sub("%project_path%",
|
128
|
+
.gsub("%project_name%", settings.project_name)
|
129
|
+
.sub("%project_path%", settings.project_path)
|
130
130
|
.sub ".erb", ""
|
131
131
|
end
|
132
132
|
|
133
|
-
def pathway =
|
133
|
+
def pathway = settings.pathway
|
134
134
|
|
135
135
|
def log_debug(message) = logger.debug { message }
|
136
136
|
|
@@ -4,11 +4,11 @@ module Rubysmith
|
|
4
4
|
module Builders
|
5
5
|
# Provides default implementation from which builders can inherit from.
|
6
6
|
class Abstract
|
7
|
-
|
7
|
+
include Import[:settings]
|
8
8
|
|
9
|
-
def initialize
|
10
|
-
@configuration = configuration
|
9
|
+
def initialize(builder: Builder, **)
|
11
10
|
@builder = builder
|
11
|
+
super(**)
|
12
12
|
end
|
13
13
|
|
14
14
|
def call
|
@@ -18,7 +18,7 @@ module Rubysmith
|
|
18
18
|
|
19
19
|
protected
|
20
20
|
|
21
|
-
attr_reader :
|
21
|
+
attr_reader :builder
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -9,7 +9,7 @@ module Rubysmith
|
|
9
9
|
using Refinements::Struct
|
10
10
|
|
11
11
|
def call
|
12
|
-
builder.call(
|
12
|
+
builder.call(settings.merge(template_path: "%project_name%/Gemfile.erb"))
|
13
13
|
.render
|
14
14
|
.replace(/\n\s+group/, "\n\ngroup")
|
15
15
|
.replace(/\n\s+gem/, "\n gem")
|
@@ -18,7 +18,7 @@ module Rubysmith
|
|
18
18
|
.replace(/\n\ngroup :(quality|development|test|tools) do\nend/, "")
|
19
19
|
.replace(/org"\n+/, "org\"\n\n")
|
20
20
|
|
21
|
-
|
21
|
+
true
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -9,15 +9,15 @@ module Rubysmith
|
|
9
9
|
using Refinements::Struct
|
10
10
|
|
11
11
|
def call
|
12
|
-
return
|
12
|
+
return false unless settings.build_caliber
|
13
13
|
|
14
|
-
builder.call(
|
14
|
+
builder.call(settings.merge(template_path: "%project_name%/bin/rubocop.erb"))
|
15
15
|
.render
|
16
16
|
.permit 0o755
|
17
17
|
|
18
18
|
path = "%project_name%/.config/rubocop/config.yml.erb"
|
19
|
-
builder.call(
|
20
|
-
|
19
|
+
builder.call(settings.merge(template_path: path)).render
|
20
|
+
true
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -9,13 +9,13 @@ module Rubysmith
|
|
9
9
|
using Refinements::Struct
|
10
10
|
|
11
11
|
def call
|
12
|
-
return
|
12
|
+
return false unless settings.build_circle_ci
|
13
13
|
|
14
|
-
builder.call(
|
14
|
+
builder.call(settings.merge(template_path: "%project_name%/.circleci/config.yml.erb"))
|
15
15
|
.render
|
16
16
|
.replace(/\n\n\Z/, "\n")
|
17
17
|
|
18
|
-
|
18
|
+
true
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -9,13 +9,13 @@ module Rubysmith
|
|
9
9
|
using Refinements::Struct
|
10
10
|
|
11
11
|
def call
|
12
|
-
return
|
12
|
+
return false unless settings.build_console
|
13
13
|
|
14
|
-
builder.call(
|
14
|
+
builder.call(settings.merge(template_path: "%project_name%/bin/console.erb"))
|
15
15
|
.render
|
16
16
|
.permit 0o755
|
17
17
|
|
18
|
-
|
18
|
+
true
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -13,13 +13,13 @@ module Rubysmith
|
|
13
13
|
def call
|
14
14
|
render_implementation
|
15
15
|
render_specification
|
16
|
-
|
16
|
+
true
|
17
17
|
end
|
18
18
|
|
19
19
|
private
|
20
20
|
|
21
21
|
def render_implementation
|
22
|
-
builder.call(
|
22
|
+
builder.call(settings.merge(template_path: "%project_name%/lib/%project_path%.rb.erb"))
|
23
23
|
.render
|
24
24
|
.replace(" require", "require")
|
25
25
|
.replace(/ (?=(Zeit|loader|end))/, "")
|
@@ -28,15 +28,15 @@ module Rubysmith
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def render_specification
|
31
|
-
return unless
|
31
|
+
return unless settings.build_zeitwerk
|
32
32
|
|
33
33
|
path = "%project_name%/spec/lib/%project_path%_spec.rb.erb"
|
34
|
-
builder.call(
|
34
|
+
builder.call(settings.merge(template_path: path)).render
|
35
35
|
end
|
36
36
|
|
37
|
-
def indentation = ::Core::EMPTY_STRING.indent
|
37
|
+
def indentation = ::Core::EMPTY_STRING.indent settings.project_levels
|
38
38
|
|
39
|
-
def module_name =
|
39
|
+
def module_name = settings.project_class
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -10,10 +10,10 @@ module Rubysmith
|
|
10
10
|
using Refinements::Struct
|
11
11
|
|
12
12
|
def call
|
13
|
-
return
|
13
|
+
return false unless settings.build_citation
|
14
14
|
|
15
|
-
builder.call(
|
16
|
-
|
15
|
+
builder.call(settings.merge(template_path: "%project_name%/CITATION.cff.erb")).render
|
16
|
+
true
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "refinements/struct"
|
4
|
-
require "tocer"
|
5
4
|
|
6
5
|
module Rubysmith
|
7
6
|
module Builders
|
@@ -11,21 +10,21 @@ module Rubysmith
|
|
11
10
|
using Refinements::Struct
|
12
11
|
|
13
12
|
def call
|
14
|
-
return
|
13
|
+
return false unless settings.build_license
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
settings.merge(template_path: "%project_name%/LICENSE-#{license}.#{kind}.erb")
|
16
|
+
.then do |updated_settings|
|
17
|
+
builder.call(updated_settings).render.rename "LICENSE.#{kind}"
|
18
|
+
end
|
20
19
|
|
21
|
-
|
20
|
+
true
|
22
21
|
end
|
23
22
|
|
24
23
|
private
|
25
24
|
|
26
|
-
def kind =
|
25
|
+
def kind = settings.documentation_format
|
27
26
|
|
28
|
-
def license =
|
27
|
+
def license = settings.license_name
|
29
28
|
end
|
30
29
|
end
|
31
30
|
end
|
@@ -10,19 +10,19 @@ module Rubysmith
|
|
10
10
|
using Refinements::Struct
|
11
11
|
|
12
12
|
def call
|
13
|
-
return
|
13
|
+
return false unless settings.build_readme
|
14
14
|
|
15
|
-
builder.call(
|
15
|
+
builder.call(settings.merge(template_path: "%project_name%/README.#{kind}.erb"))
|
16
16
|
.render
|
17
17
|
.replace(/\n{2,}/, "\n\n")
|
18
18
|
.replace("\n \n", "\n")
|
19
19
|
|
20
|
-
|
20
|
+
true
|
21
21
|
end
|
22
22
|
|
23
23
|
protected
|
24
24
|
|
25
|
-
def kind =
|
25
|
+
def kind = settings.documentation_format
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -11,17 +11,16 @@ module Rubysmith
|
|
11
11
|
using Refinements::Struct
|
12
12
|
|
13
13
|
def call
|
14
|
-
return
|
14
|
+
return false unless settings.build_versions
|
15
15
|
|
16
|
-
builder.call(
|
17
|
-
.render
|
16
|
+
builder.call(settings.merge(template_path: "%project_name%/VERSIONS.#{kind}.erb")).render
|
18
17
|
|
19
|
-
|
18
|
+
true
|
20
19
|
end
|
21
20
|
|
22
21
|
private
|
23
22
|
|
24
|
-
def kind =
|
23
|
+
def kind = settings.documentation_format
|
25
24
|
end
|
26
25
|
end
|
27
26
|
end
|
@@ -7,21 +7,17 @@ module Rubysmith
|
|
7
7
|
class Commit < Abstract
|
8
8
|
include Import[:specification]
|
9
9
|
|
10
|
-
def initialize(configuration, builder: Builder, **)
|
11
|
-
super
|
12
|
-
end
|
13
|
-
|
14
10
|
def call
|
15
|
-
return
|
11
|
+
return false unless settings.build_git
|
16
12
|
|
17
|
-
builder.call(
|
13
|
+
builder.call(settings)
|
18
14
|
.run("git add .", chdir: project_name)
|
19
15
|
.run(
|
20
16
|
%(git commit --all --message "Added project skeleton" --message "#{body}"),
|
21
17
|
chdir: project_name
|
22
18
|
)
|
23
19
|
|
24
|
-
|
20
|
+
true
|
25
21
|
end
|
26
22
|
|
27
23
|
private
|
@@ -31,7 +27,7 @@ module Rubysmith
|
|
31
27
|
"#{specification.version}."
|
32
28
|
end
|
33
29
|
|
34
|
-
def project_name =
|
30
|
+
def project_name = settings.project_name
|
35
31
|
end
|
36
32
|
end
|
37
33
|
end
|
@@ -10,13 +10,13 @@ module Rubysmith
|
|
10
10
|
using Refinements::Struct
|
11
11
|
|
12
12
|
def call
|
13
|
-
return
|
13
|
+
return false unless settings.build_git
|
14
14
|
|
15
|
-
builder.call(
|
15
|
+
builder.call(settings.merge(template_path: "%project_name%/.gitignore.erb"))
|
16
16
|
.render
|
17
17
|
.replace(" ", "")
|
18
18
|
|
19
|
-
|
19
|
+
true
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -10,10 +10,10 @@ module Rubysmith
|
|
10
10
|
using Refinements::Struct
|
11
11
|
|
12
12
|
def call
|
13
|
-
return
|
13
|
+
return false unless settings.build_git
|
14
14
|
|
15
|
-
builder.call(
|
16
|
-
|
15
|
+
builder.call(settings.merge(template_path: "%project_name%/.git/safe")).make_path
|
16
|
+
true
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -6,10 +6,10 @@ module Rubysmith
|
|
6
6
|
# Initializes project skeleton as a Git repository.
|
7
7
|
class Setup < Abstract
|
8
8
|
def call
|
9
|
-
return
|
9
|
+
return false unless settings.build_git
|
10
10
|
|
11
|
-
builder.call(
|
12
|
-
|
11
|
+
builder.call(settings).run("git init", chdir: settings.project_name)
|
12
|
+
true
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/struct"
|
4
|
+
|
5
|
+
module Rubysmith
|
6
|
+
module Builders
|
7
|
+
module GitHub
|
8
|
+
# Builds project skeleton GitHub CI template.
|
9
|
+
class CI < Abstract
|
10
|
+
using Refinements::Struct
|
11
|
+
|
12
|
+
def call
|
13
|
+
return false unless settings.build_git_hub_ci
|
14
|
+
|
15
|
+
builder.call(with_template).render.replace(/\n\n\Z/, "\n")
|
16
|
+
true
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def with_template
|
22
|
+
settings.merge template_path: "%project_name%/.github/workflows/ci.yml.erb"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/struct"
|
4
|
+
|
5
|
+
module Rubysmith
|
6
|
+
module Builders
|
7
|
+
module GitHub
|
8
|
+
# Builds project skeleton GitHub funding template.
|
9
|
+
class Funding < Abstract
|
10
|
+
using Refinements::Struct
|
11
|
+
|
12
|
+
def call
|
13
|
+
return false unless settings.build_git_hub && settings.build_funding
|
14
|
+
|
15
|
+
settings.merge(template_path: "%project_name%/.github/FUNDING.yml.erb")
|
16
|
+
.then { |updated_configuration| builder.call(updated_configuration).render }
|
17
|
+
|
18
|
+
true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|