rubysmith 6.10.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.adoc +46 -57
  4. data/lib/rubysmith/builder.rb +9 -9
  5. data/lib/rubysmith/builders/abstract.rb +4 -4
  6. data/lib/rubysmith/builders/bundler.rb +2 -2
  7. data/lib/rubysmith/builders/caliber.rb +4 -4
  8. data/lib/rubysmith/builders/circle_ci.rb +3 -3
  9. data/lib/rubysmith/builders/console.rb +3 -3
  10. data/lib/rubysmith/builders/core.rb +6 -6
  11. data/lib/rubysmith/builders/documentation/citation.rb +3 -3
  12. data/lib/rubysmith/builders/documentation/license.rb +8 -9
  13. data/lib/rubysmith/builders/documentation/readme.rb +4 -4
  14. data/lib/rubysmith/builders/documentation/version.rb +4 -5
  15. data/lib/rubysmith/builders/git/commit.rb +4 -8
  16. data/lib/rubysmith/builders/git/ignore.rb +3 -3
  17. data/lib/rubysmith/builders/git/safe.rb +3 -3
  18. data/lib/rubysmith/builders/git/setup.rb +3 -3
  19. data/lib/rubysmith/builders/git_hub/ci.rb +27 -0
  20. data/lib/rubysmith/builders/git_hub/funding.rb +23 -0
  21. data/lib/rubysmith/builders/git_hub/template.rb +32 -0
  22. data/lib/rubysmith/builders/guard.rb +4 -4
  23. data/lib/rubysmith/builders/init.rb +2 -2
  24. data/lib/rubysmith/builders/rake/binstub.rb +24 -0
  25. data/lib/rubysmith/builders/rake/configuration.rb +29 -0
  26. data/lib/rubysmith/builders/reek.rb +3 -3
  27. data/lib/rubysmith/builders/rspec/binstub.rb +3 -3
  28. data/lib/rubysmith/builders/rspec/context.rb +6 -6
  29. data/lib/rubysmith/builders/rspec/helper.rb +3 -3
  30. data/lib/rubysmith/builders/setup.rb +3 -3
  31. data/lib/rubysmith/builders/version.rb +2 -2
  32. data/lib/rubysmith/cli/actions/amazing_print.rb +3 -3
  33. data/lib/rubysmith/cli/actions/caliber.rb +3 -3
  34. data/lib/rubysmith/cli/actions/circle_ci.rb +4 -4
  35. data/lib/rubysmith/cli/actions/citation.rb +3 -3
  36. data/lib/rubysmith/cli/actions/community.rb +3 -3
  37. data/lib/rubysmith/cli/actions/conduct.rb +3 -3
  38. data/lib/rubysmith/cli/actions/console.rb +3 -3
  39. data/lib/rubysmith/cli/actions/contributions.rb +3 -3
  40. data/lib/rubysmith/cli/actions/debug.rb +3 -3
  41. data/lib/rubysmith/cli/actions/funding.rb +4 -4
  42. data/lib/rubysmith/cli/actions/git.rb +3 -3
  43. data/lib/rubysmith/cli/actions/git_hub.rb +3 -3
  44. data/lib/rubysmith/cli/actions/git_hub_ci.rb +3 -3
  45. data/lib/rubysmith/cli/actions/git_lint.rb +3 -3
  46. data/lib/rubysmith/cli/actions/guard.rb +3 -3
  47. data/lib/rubysmith/cli/actions/irb_kit.rb +3 -3
  48. data/lib/rubysmith/cli/actions/license.rb +3 -3
  49. data/lib/rubysmith/cli/actions/maximum.rb +4 -4
  50. data/lib/rubysmith/cli/actions/minimum.rb +4 -4
  51. data/lib/rubysmith/cli/actions/name.rb +2 -2
  52. data/lib/rubysmith/cli/actions/rake.rb +3 -3
  53. data/lib/rubysmith/cli/actions/readme.rb +3 -3
  54. data/lib/rubysmith/cli/actions/reek.rb +3 -3
  55. data/lib/rubysmith/cli/actions/refinements.rb +3 -3
  56. data/lib/rubysmith/cli/actions/rspec.rb +3 -3
  57. data/lib/rubysmith/cli/actions/rtc.rb +3 -3
  58. data/lib/rubysmith/cli/actions/security.rb +3 -3
  59. data/lib/rubysmith/cli/actions/setup.rb +3 -3
  60. data/lib/rubysmith/cli/actions/simple_cov.rb +3 -3
  61. data/lib/rubysmith/cli/actions/versions.rb +3 -3
  62. data/lib/rubysmith/cli/actions/zeitwerk.rb +3 -3
  63. data/lib/rubysmith/cli/commands/build.rb +33 -31
  64. data/lib/rubysmith/cli/shell.rb +0 -1
  65. data/lib/rubysmith/configuration/contract.rb +16 -14
  66. data/lib/rubysmith/configuration/defaults.yml +21 -1
  67. data/lib/rubysmith/configuration/model.rb +30 -28
  68. data/lib/rubysmith/configuration/transformers/git_hub_user.rb +2 -2
  69. data/lib/rubysmith/container.rb +19 -9
  70. data/lib/rubysmith/extensions/bundler.rb +7 -7
  71. data/lib/rubysmith/extensions/pragmater.rb +10 -10
  72. data/lib/rubysmith/extensions/rubocop.rb +7 -7
  73. data/lib/rubysmith/extensions/tocer.rb +8 -8
  74. data/lib/rubysmith/renderers/erb.rb +4 -4
  75. data/lib/rubysmith/templates/%project_name%/.circleci/config.yml.erb +1 -1
  76. data/lib/rubysmith/templates/%project_name%/.github/FUNDING.yml.erb +1 -1
  77. data/lib/rubysmith/templates/%project_name%/.github/workflows/ci.yml.erb +1 -1
  78. data/lib/rubysmith/templates/%project_name%/CITATION.cff.erb +12 -12
  79. data/lib/rubysmith/templates/%project_name%/Gemfile.erb +18 -18
  80. data/lib/rubysmith/templates/%project_name%/LICENSE-apache.adoc.erb +1 -1
  81. data/lib/rubysmith/templates/%project_name%/LICENSE-apache.md.erb +1 -1
  82. data/lib/rubysmith/templates/%project_name%/LICENSE-mit.adoc.erb +1 -1
  83. data/lib/rubysmith/templates/%project_name%/LICENSE-mit.md.erb +1 -1
  84. data/lib/rubysmith/templates/%project_name%/README.adoc.erb +21 -21
  85. data/lib/rubysmith/templates/%project_name%/README.md.erb +21 -21
  86. data/lib/rubysmith/templates/%project_name%/Rakefile.erb +10 -10
  87. data/lib/rubysmith/templates/%project_name%/VERSIONS.adoc.erb +1 -1
  88. data/lib/rubysmith/templates/%project_name%/VERSIONS.md.erb +1 -1
  89. data/lib/rubysmith/templates/%project_name%/bin/console.erb +1 -1
  90. data/lib/rubysmith/templates/%project_name%/bin/setup.erb +1 -1
  91. data/lib/rubysmith/templates/%project_name%/lib/%project_path%.rb.erb +7 -7
  92. data/lib/rubysmith/templates/%project_name%/spec/lib/%project_path%_spec.rb.erb +2 -2
  93. data/lib/rubysmith/templates/%project_name%/spec/spec_helper.rb.erb +4 -4
  94. data/lib/rubysmith/templates/%project_name%/spec/support/shared_contexts/temp_dir.rb.erb +3 -3
  95. data/lib/rubysmith.rb +1 -0
  96. data/rubysmith.gemspec +11 -12
  97. data.tar.gz.sig +0 -0
  98. metadata +28 -43
  99. metadata.gz.sig +4 -2
  100. data/lib/rubysmith/builders/git_hub.rb +0 -39
  101. data/lib/rubysmith/builders/git_hub_ci.rb +0 -25
  102. data/lib/rubysmith/builders/rake.rb +0 -39
  103. data/lib/rubysmith/cli/actions/publish.rb +0 -35
  104. data/lib/rubysmith/configuration/transformers/target_root.rb +0 -18
  105. data/lib/rubysmith/extensions/milestoner.rb +0 -23
@@ -7,15 +7,15 @@ module Rubysmith
7
7
  module Actions
8
8
  # Stores readme flag.
9
9
  class Readme < Sod::Action
10
- include Import[:input]
10
+ include Import[:settings]
11
11
 
12
12
  description "Add readme documentation."
13
13
 
14
14
  on "--[no-]readme"
15
15
 
16
- default { Container[:configuration].build_readme }
16
+ default { Container[:settings].build_readme }
17
17
 
18
- def call(value = nil) = input.build_readme = value
18
+ def call(value = nil) = settings.build_readme = value
19
19
  end
20
20
  end
21
21
  end
@@ -7,15 +7,15 @@ module Rubysmith
7
7
  module Actions
8
8
  # Stores Reek flag.
9
9
  class Reek < Sod::Action
10
- include Import[:input]
10
+ include Import[:settings]
11
11
 
12
12
  description "Add Reek gem."
13
13
 
14
14
  on "--[no-]reek"
15
15
 
16
- default { Container[:configuration].build_reek }
16
+ default { Container[:settings].build_reek }
17
17
 
18
- def call(value = nil) = input.build_reek = value
18
+ def call(value = nil) = settings.build_reek = value
19
19
  end
20
20
  end
21
21
  end
@@ -7,15 +7,15 @@ module Rubysmith
7
7
  module Actions
8
8
  # Stores Refinements flag.
9
9
  class Refinements < Sod::Action
10
- include Import[:input]
10
+ include Import[:settings]
11
11
 
12
12
  description "Add Refinements gem."
13
13
 
14
14
  on "--[no-]refinements"
15
15
 
16
- default { Container[:configuration].build_refinements }
16
+ default { Container[:settings].build_refinements }
17
17
 
18
- def call(value = nil) = input.build_refinements = value
18
+ def call(value = nil) = settings.build_refinements = value
19
19
  end
20
20
  end
21
21
  end
@@ -7,15 +7,15 @@ module Rubysmith
7
7
  module Actions
8
8
  # Stores RSpec flag.
9
9
  class RSpec < Sod::Action
10
- include Import[:input]
10
+ include Import[:settings]
11
11
 
12
12
  description "Add RSpec gem."
13
13
 
14
14
  on "--[no-]rspec"
15
15
 
16
- default { Container[:configuration].build_rspec }
16
+ default { Container[:settings].build_rspec }
17
17
 
18
- def call(value = nil) = input.build_rspec = value
18
+ def call(value = nil) = settings.build_rspec = value
19
19
  end
20
20
  end
21
21
  end
@@ -7,15 +7,15 @@ module Rubysmith
7
7
  module Actions
8
8
  # Stores Repl Type Completor flag.
9
9
  class RTC < Sod::Action
10
- include Import[:input]
10
+ include Import[:settings]
11
11
 
12
12
  description "Add Repl Type Completor gem."
13
13
 
14
14
  on "--[no-]rtc"
15
15
 
16
- default { Container[:configuration].build_rtc }
16
+ default { Container[:settings].build_rtc }
17
17
 
18
- def call(value = nil) = input.build_rtc = value
18
+ def call(value = nil) = settings.build_rtc = value
19
19
  end
20
20
  end
21
21
  end
@@ -7,15 +7,15 @@ module Rubysmith
7
7
  module Actions
8
8
  # Stores security flag.
9
9
  class Security < Sod::Action
10
- include Import[:input]
10
+ include Import[:settings]
11
11
 
12
12
  description "Add security."
13
13
 
14
14
  on "--[no-]security"
15
15
 
16
- default { Container[:configuration].build_security }
16
+ default { Container[:settings].build_security }
17
17
 
18
- def call(value = nil) = input.build_security = value
18
+ def call(value = nil) = settings.build_security = value
19
19
  end
20
20
  end
21
21
  end
@@ -7,15 +7,15 @@ module Rubysmith
7
7
  module Actions
8
8
  # Stores setup flag.
9
9
  class Setup < Sod::Action
10
- include Import[:input]
10
+ include Import[:settings]
11
11
 
12
12
  description "Add setup script."
13
13
 
14
14
  on "--[no-]setup"
15
15
 
16
- default { Container[:configuration].build_setup }
16
+ default { Container[:settings].build_setup }
17
17
 
18
- def call(value = nil) = input.build_setup = value
18
+ def call(value = nil) = settings.build_setup = value
19
19
  end
20
20
  end
21
21
  end
@@ -7,15 +7,15 @@ module Rubysmith
7
7
  module Actions
8
8
  # Stores SimpleCov flag.
9
9
  class SimpleCov < Sod::Action
10
- include Import[:input]
10
+ include Import[:settings]
11
11
 
12
12
  description "Add SimpleCov gem."
13
13
 
14
14
  on "--[no-]simple_cov"
15
15
 
16
- default { Container[:configuration].build_simple_cov }
16
+ default { Container[:settings].build_simple_cov }
17
17
 
18
- def call(value = nil) = input.build_simple_cov = value
18
+ def call(value = nil) = settings.build_simple_cov = value
19
19
  end
20
20
  end
21
21
  end
@@ -7,15 +7,15 @@ module Rubysmith
7
7
  module Actions
8
8
  # Stores versions flag.
9
9
  class Versions < Sod::Action
10
- include Import[:input]
10
+ include Import[:settings]
11
11
 
12
12
  description "Add version history."
13
13
 
14
14
  on "--[no-]versions"
15
15
 
16
- default { Container[:configuration].build_versions }
16
+ default { Container[:settings].build_versions }
17
17
 
18
- def call(value = nil) = input.build_versions = value
18
+ def call(value = nil) = settings.build_versions = value
19
19
  end
20
20
  end
21
21
  end
@@ -7,15 +7,15 @@ module Rubysmith
7
7
  module Actions
8
8
  # Stores Zeitwerk flag.
9
9
  class Zeitwerk < Sod::Action
10
- include Import[:input]
10
+ include Import[:settings]
11
11
 
12
12
  description "Add Zeitwerk gem."
13
13
 
14
14
  on "--[no-]zeitwerk"
15
15
 
16
- default { Container[:configuration].build_zeitwerk }
16
+ default { Container[:settings].build_zeitwerk }
17
17
 
18
- def call(value = nil) = input.build_zeitwerk = value
18
+ def call(value = nil) = settings.build_zeitwerk = value
19
19
  end
20
20
  end
21
21
  end
@@ -8,38 +8,40 @@ module Rubysmith
8
8
  module Commands
9
9
  # Stores table of contents root path.
10
10
  class Build < Sod::Command
11
- include Import[:input, :kernel, :logger]
11
+ include Import[:settings, :kernel, :logger]
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,
27
- Builders::Console,
28
- Builders::CircleCI,
29
- Builders::Setup,
30
- Builders::GitHub,
31
- Builders::GitHubCI,
32
- Builders::Guard,
33
- Builders::Reek,
34
- Builders::RSpec::Binstub,
35
- Builders::RSpec::Context,
36
- Builders::RSpec::Helper,
37
- Builders::Caliber,
38
- Extensions::Bundler,
39
- Extensions::Pragmater,
40
- Extensions::Tocer,
41
- Extensions::Rubocop,
42
- Builders::Git::Commit
15
+ Builders::Init.new,
16
+ Builders::Core.new,
17
+ Builders::Version.new,
18
+ Builders::Documentation::Readme.new,
19
+ Builders::Documentation::Citation.new,
20
+ Builders::Documentation::License.new,
21
+ Builders::Documentation::Version.new,
22
+ Builders::Git::Setup.new,
23
+ Builders::Git::Ignore.new,
24
+ Builders::Git::Safe.new,
25
+ Builders::Bundler.new,
26
+ Builders::Rake::Binstub.new,
27
+ Builders::Rake::Configuration.new,
28
+ Builders::Console.new,
29
+ Builders::CircleCI.new,
30
+ Builders::Setup.new,
31
+ Builders::GitHub::Template.new,
32
+ Builders::GitHub::Funding.new,
33
+ Builders::GitHub::CI.new,
34
+ Builders::Guard.new,
35
+ Builders::Reek.new,
36
+ Builders::RSpec::Binstub.new,
37
+ Builders::RSpec::Context.new,
38
+ Builders::RSpec::Helper.new,
39
+ Builders::Caliber.new,
40
+ Extensions::Bundler.new,
41
+ Extensions::Pragmater.new,
42
+ Extensions::Tocer.new,
43
+ Extensions::Rubocop.new,
44
+ Builders::Git::Commit.new
43
45
  ].freeze
44
46
 
45
47
  handle "build"
@@ -84,8 +86,8 @@ module Rubysmith
84
86
  end
85
87
 
86
88
  def call
87
- log_info "Building project skeleton: #{input.project_name}..."
88
- builders.each { |builder| builder.call input }
89
+ log_info "Building project skeleton: #{settings.project_name}..."
90
+ builders.each(&:call)
89
91
  log_info "Project skeleton complete!"
90
92
  end
91
93
 
@@ -26,7 +26,6 @@ module Rubysmith
26
26
  dsl.new :rubysmith, banner: specification.banner do
27
27
  on(Sod::Prefabs::Commands::Config, context:)
28
28
  on Commands::Build
29
- on Actions::Publish
30
29
  on(Sod::Prefabs::Actions::Version, context:)
31
30
  on Sod::Prefabs::Actions::Help, self
32
31
  end
@@ -11,7 +11,8 @@ module Rubysmith
11
11
  optional(:author_email).filled :string
12
12
  optional(:author_family_name).filled :string
13
13
  optional(:author_given_name).filled :string
14
- optional(:author_url).filled :string
14
+ required(:author_handle).filled :string
15
+ required(:author_uri).filled :string
15
16
  required(:build_amazing_print).filled :bool
16
17
  required(:build_caliber).filled :bool
17
18
  required(:build_circle_ci).filled :bool
@@ -47,25 +48,26 @@ module Rubysmith
47
48
  optional(:citation_message).filled :string
48
49
  optional(:citation_orcid).filled :string
49
50
  required(:documentation_format).filled :string
50
- optional(:git_hub_user).filled :string
51
51
  required(:loaded_at).filled :time
52
52
  required(:license_label).filled :string
53
53
  required(:license_name).filled :string
54
54
  required(:license_version).filled :string
55
- optional(:organization_url).filled :string
55
+ required(:organization_uri).filled :string
56
56
  optional(:project_name).filled :string
57
- optional(:project_url_community).filled :string
58
- optional(:project_url_conduct).filled :string
59
- optional(:project_url_contributions).filled :string
60
- optional(:project_url_download).filled :string
61
- optional(:project_url_funding).filled :string
62
- optional(:project_url_home).filled :string
63
- optional(:project_url_issues).filled :string
64
- optional(:project_url_license).filled :string
65
- optional(:project_url_security).filled :string
66
- optional(:project_url_source).filled :string
67
- optional(:project_url_versions).filled :string
57
+ optional(:project_uri_community).filled :string
58
+ optional(:project_uri_conduct).filled :string
59
+ optional(:project_uri_contributions).filled :string
60
+ optional(:project_uri_download).filled :string
61
+ optional(:project_uri_funding).filled :string
62
+ optional(:project_uri_home).filled :string
63
+ optional(:project_uri_issues).filled :string
64
+ optional(:project_uri_license).filled :string
65
+ optional(:project_uri_security).filled :string
66
+ optional(:project_uri_source).filled :string
67
+ optional(:project_uri_versions).filled :string
68
68
  required(:project_version).filled :string
69
+ required(:repository_handle).filled :string
70
+ required(:repository_uri).filled :string
69
71
  required(:target_root).filled Etcher::Types::Pathname
70
72
  optional(:template_path).filled Etcher::Types::Pathname
71
73
  required(:template_roots).array Etcher::Types::Pathname
@@ -1,3 +1,6 @@
1
+ author:
2
+ handle: undefined
3
+ uri: "%<organization_uri>s/team/%<author_handle>s"
1
4
  build:
2
5
  amazing_print: true
3
6
  caliber: true
@@ -15,7 +18,7 @@ build:
15
18
  git_hub_ci: false
16
19
  git_lint: true
17
20
  guard: true
18
- irb_kit: false
21
+ irb_kit: true
19
22
  license: true
20
23
  maximum: false
21
24
  minimum: false
@@ -38,5 +41,22 @@ license:
38
41
  label: Hippocratic
39
42
  name: hippocratic
40
43
  version: "2.1"
44
+ organization:
45
+ uri: https://undefined.io
41
46
  project:
47
+ uri:
48
+ community: "%<organization_uri>s/community"
49
+ conduct: "%<organization_uri>s/policies/code_of_conduct"
50
+ contributions: "%<organization_uri>s/policies/contributions"
51
+ download: "https://rubygems.org/gems/%<project_name>s"
52
+ funding: "%<repository_uri>s/sponsors/%<repository_handle>s"
53
+ home: "%<organization_uri>s/projects/%<project_name>s"
54
+ issues: "%<repository_uri>s/%<repository_handle>s/%<project_name>s/issues"
55
+ license: "%<organization_uri>s/policies/license"
56
+ security: "%<organization_uri>s/policies/security"
57
+ source: "%<repository_uri>s/%<repository_handle>s/%<project_name>s"
58
+ versions: "%<organization_uri>s/projects/%<project_name>s/versions"
42
59
  version: 0.0.0
60
+ repository:
61
+ handle: undefined
62
+ uri: https://github.com
@@ -12,7 +12,8 @@ module Rubysmith
12
12
  :author_email,
13
13
  :author_family_name,
14
14
  :author_given_name,
15
- :author_url,
15
+ :author_handle,
16
+ :author_uri,
16
17
  :build_amazing_print,
17
18
  :build_caliber,
18
19
  :build_circle_ci,
@@ -48,25 +49,26 @@ module Rubysmith
48
49
  :citation_message,
49
50
  :citation_orcid,
50
51
  :documentation_format,
51
- :git_hub_user,
52
52
  :license_label,
53
53
  :license_name,
54
54
  :license_version,
55
55
  :loaded_at,
56
- :organization_url,
56
+ :organization_uri,
57
57
  :project_name,
58
- :project_url_community,
59
- :project_url_conduct,
60
- :project_url_contributions,
61
- :project_url_download,
62
- :project_url_funding,
63
- :project_url_home,
64
- :project_url_issues,
65
- :project_url_license,
66
- :project_url_security,
67
- :project_url_source,
68
- :project_url_versions,
58
+ :project_uri_community,
59
+ :project_uri_conduct,
60
+ :project_uri_contributions,
61
+ :project_uri_download,
62
+ :project_uri_funding,
63
+ :project_uri_home,
64
+ :project_uri_issues,
65
+ :project_uri_license,
66
+ :project_uri_security,
67
+ :project_uri_source,
68
+ :project_uri_versions,
69
69
  :project_version,
70
+ :repository_handle,
71
+ :repository_uri,
70
72
  :target_root,
71
73
  :template_path,
72
74
  :template_roots
@@ -95,27 +97,27 @@ module Rubysmith
95
97
 
96
98
  def project_root = target_root.join(project_name)
97
99
 
98
- def computed_project_url_community = format_url(__method__)
100
+ def computed_project_uri_community = format_uri(__method__)
99
101
 
100
- def computed_project_url_conduct = format_url(__method__)
102
+ def computed_project_uri_conduct = format_uri(__method__)
101
103
 
102
- def computed_project_url_contributions = format_url(__method__)
104
+ def computed_project_uri_contributions = format_uri(__method__)
103
105
 
104
- def computed_project_url_download = format_url(__method__)
106
+ def computed_project_uri_download = format_uri(__method__)
105
107
 
106
- def computed_project_url_funding = format_url(__method__)
108
+ def computed_project_uri_funding = format_uri(__method__)
107
109
 
108
- def computed_project_url_home = format_url(__method__)
110
+ def computed_project_uri_home = format_uri(__method__)
109
111
 
110
- def computed_project_url_issues = format_url(__method__)
112
+ def computed_project_uri_issues = format_uri(__method__)
111
113
 
112
- def computed_project_url_license = format_url(__method__)
114
+ def computed_project_uri_license = format_uri(__method__)
113
115
 
114
- def computed_project_url_security = format_url(__method__)
116
+ def computed_project_uri_security = format_uri(__method__)
115
117
 
116
- def computed_project_url_source = format_url(__method__)
118
+ def computed_project_uri_source = format_uri(__method__)
117
119
 
118
- def computed_project_url_versions = format_url(__method__)
120
+ def computed_project_uri_versions = format_uri(__method__)
119
121
 
120
122
  def ascii_doc? = documentation_format == "adoc"
121
123
 
@@ -132,12 +134,12 @@ module Rubysmith
132
134
 
133
135
  private
134
136
 
135
- def format_url kind
137
+ def format_uri kind
136
138
  kind.to_s
137
139
  .sub("computed_", "")
138
140
  .then { |method| public_send method }
139
- .then { |url| String url }
140
- .then { |url| url.sub "%project_name%", project_name }
141
+ .then { |uri| String uri }
142
+ .then { |uri| uri.sub "%<project_name>s", project_name }
141
143
  end
142
144
 
143
145
  def update_build_options value
@@ -5,12 +5,12 @@ require "dry/monads"
5
5
  module Rubysmith
6
6
  module Configuration
7
7
  module Transformers
8
- # Dynamically adds GitHub user if user is defined.
8
+ # Dynamically updates repository handle if GitHub user is defined.
9
9
  class GitHubUser
10
10
  include Import[:git]
11
11
  include Dry::Monads[:result]
12
12
 
13
- def initialize(key = :git_hub_user, **)
13
+ def initialize(key = :repository_handle, **)
14
14
  @key = key
15
15
  super(**)
16
16
  end
@@ -12,28 +12,38 @@ module Rubysmith
12
12
  module Container
13
13
  extend Containable
14
14
 
15
- register :configuration do
16
- self[:defaults].add_loader(:yaml, self[:xdg_config].active)
17
- .then { |registry| Etcher.call registry }
18
- end
19
-
20
- register :defaults do
15
+ register :registry do
21
16
  Etcher::Registry.new(contract: Configuration::Contract, model: Configuration::Model)
22
17
  .add_loader(:yaml, self[:defaults_path])
18
+ .add_loader(:yaml, self[:xdg_config].active)
23
19
  .add_transformer(Configuration::Transformers::GitHubUser.new)
24
20
  .add_transformer(Configuration::Transformers::GitEmail.new)
25
21
  .add_transformer(Configuration::Transformers::GitUser.new)
26
22
  .add_transformer(Configuration::Transformers::TemplateRoot.new)
27
- .add_transformer(Configuration::Transformers::TargetRoot)
28
- .add_transformer(:time)
23
+ .add_transformer(:root, :target_root)
24
+ .add_transformer(:format, :author_uri)
25
+ .add_transformer(:format, :author_uri)
26
+ .add_transformer(:format, :project_uri_community)
27
+ .add_transformer(:format, :project_uri_conduct)
28
+ .add_transformer(:format, :project_uri_contributions)
29
+ .add_transformer(:format, :project_uri_download, :project_name)
30
+ .add_transformer(:format, :project_uri_funding)
31
+ .add_transformer(:format, :project_uri_home, :project_name)
32
+ .add_transformer(:format, :project_uri_issues, :project_name)
33
+ .add_transformer(:format, :project_uri_license)
34
+ .add_transformer(:format, :project_uri_security)
35
+ .add_transformer(:format, :project_uri_source, :project_name)
36
+ .add_transformer(:format, :project_uri_versions, :project_name)
37
+ .add_transformer(:time, :loaded_at)
29
38
  end
30
39
 
40
+ register(:settings) { Etcher.call(self[:registry]).dup }
31
41
  register(:specification) { Spek::Loader.call "#{__dir__}/../../rubysmith.gemspec" }
32
- register(:input) { self[:configuration].dup }
33
42
  register(:defaults_path) { Pathname(__dir__).join("configuration/defaults.yml") }
34
43
  register(:xdg_config) { Runcom::Config.new "rubysmith/configuration.yml" }
35
44
  register(:git) { Gitt::Repository.new }
36
45
  register(:logger) { Cogger.new id: :rubysmith }
37
46
  register :kernel, Kernel
47
+ register :io, STDOUT
38
48
  end
39
49
  end
@@ -9,28 +9,28 @@ module Rubysmith
9
9
  module Extensions
10
10
  # Ensures gem dependencies are installed.
11
11
  class Bundler
12
+ include Import[:settings]
13
+
12
14
  using Refinements::IO
13
15
  using Refinements::Pathname
14
16
 
15
- def self.call(...) = new(...).call
16
-
17
- def initialize configuration, client: ::Bundler::CLI
18
- @configuration = configuration
17
+ def initialize(client: ::Bundler::CLI, **)
19
18
  @client = client
19
+ super(**)
20
20
  end
21
21
 
22
22
  def call
23
- configuration.project_root.change_dir do
23
+ settings.project_root.change_dir do
24
24
  client.start %w[install --quiet]
25
25
  STDOUT.squelch { client.start %w[lock --add-platform x86_64-linux --update] }
26
26
  end
27
27
 
28
- configuration
28
+ true
29
29
  end
30
30
 
31
31
  private
32
32
 
33
- attr_reader :configuration, :client
33
+ attr_reader :client
34
34
  end
35
35
  end
36
36
  end
@@ -7,30 +7,30 @@ module Rubysmith
7
7
  module Extensions
8
8
  # Ensures project skeleton has pragmas.
9
9
  class Pragmater
10
- using Refinements::Pathname
10
+ include Import[:settings]
11
11
 
12
- def self.call(...) = new(...).call
12
+ using Refinements::Pathname
13
13
 
14
- def self.custom_configuration
15
- ::Pragmater::Configuration::Model[
14
+ CLIENT = ::Pragmater::Inserter.new(
15
+ settings: ::Pragmater::Configuration::Model[
16
16
  comments: ["# frozen_string_literal: true"],
17
17
  patterns: %w[**/*.rake **/*.rb *.gemspec exe/* bin/* config.ru *file]
18
18
  ]
19
- end
19
+ ).freeze
20
20
 
21
- def initialize configuration, client: ::Pragmater::Inserter.new
22
- @configuration = configuration
21
+ def initialize(client: CLIENT, **)
23
22
  @client = client
23
+ super(**)
24
24
  end
25
25
 
26
26
  def call
27
- configuration.project_root.change_dir { client.call self.class.custom_configuration }
28
- configuration
27
+ settings.project_root.change_dir { client.call }
28
+ true
29
29
  end
30
30
 
31
31
  private
32
32
 
33
- attr_reader :configuration, :client
33
+ attr_reader :client
34
34
  end
35
35
  end
36
36
  end
@@ -8,29 +8,29 @@ module Rubysmith
8
8
  module Extensions
9
9
  # Ensures project skeleton adheres to style guide.
10
10
  class Rubocop
11
+ include Import[:settings]
12
+
11
13
  using Refinements::IO
12
14
  using Refinements::Pathname
13
15
 
14
- def self.call(...) = new(...).call
15
-
16
- def initialize configuration, client: ::RuboCop::CLI.new
17
- @configuration = configuration
16
+ def initialize(client: ::RuboCop::CLI.new, **)
18
17
  @client = client
18
+ super(**)
19
19
  end
20
20
 
21
21
  def call
22
- project_root = configuration.project_root
22
+ project_root = settings.project_root
23
23
 
24
24
  project_root.change_dir do
25
25
  STDOUT.squelch { client.run ["--autocorrect-all", project_root.to_s] }
26
26
  end
27
27
 
28
- configuration
28
+ true
29
29
  end
30
30
 
31
31
  private
32
32
 
33
- attr_reader :configuration, :client
33
+ attr_reader :client
34
34
  end
35
35
  end
36
36
  end