rubysmith 6.9.0 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
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 +19 -19
  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 +12 -13
  97. data.tar.gz.sig +0 -0
  98. metadata +30 -45
  99. metadata.gz.sig +4 -3
  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