rubysmith 4.1.0 → 4.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 800b586dd843e166d9fc97e0034b4929111ee1f9dc0cb9e02ce294d512cfb227
4
- data.tar.gz: 984327cfa351cd57aa103cbfc94e09a060afe4611d49504e61263cc5a6ff776a
3
+ metadata.gz: 20400688d18009b8693a50e2aaf540091135655cf7b44a447ad2299f2fccea46
4
+ data.tar.gz: 0f7d4d8121b57dce5dbd25f17bd76366269d74856ff8cdcd1000908d6d8d9a08
5
5
  SHA512:
6
- metadata.gz: e6012f65fb94be8bd2a515d3647c51b905bb591a3d4f5e692e53e502bc9ac573cf753de33d041639d21e10f2668258d3cfb9cb4c620365a04098dc6f7da1bbff
7
- data.tar.gz: e226baccb45c568d104bd4775672573509bdd6d5d03f478b61b4c125bbc056ed21803949771a542fd975687782f3bed90a06bfc1f694b333e569f4963d0b8c35
6
+ metadata.gz: cacd542dcdb79197f4db085021d4756f38e71017d88dd2aa1db55e43e1e60f80818d1da2f19841de58e5e0d8b903ce9343c3fce4dc1d70fcad2c97ece9abf323
7
+ data.tar.gz: d2aed19508d58fbe8def647ae99e9e6d9a3ad504b08de531439c6a8a8ec7a10924ab9256b12755800e4416271e53b3a517813f8c034c02e8ad6ecd67f591ca1f
checksums.yaml.gz.sig CHANGED
Binary file
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "core"
3
4
  require "refinements/strings"
4
5
  require "refinements/structs"
5
6
 
@@ -31,7 +32,7 @@ module Rubysmith
31
32
 
32
33
  private
33
34
 
34
- def indentation = "".indent configuration.project_levels
35
+ def indentation = ::Core::EMPTY_STRING.indent configuration.project_levels
35
36
 
36
37
  def module_name = configuration.project_class
37
38
 
@@ -34,10 +34,8 @@ module Rubysmith
34
34
  attr_reader :configuration, :builder
35
35
 
36
36
  def body
37
- <<~CONTENT
38
- Generated with [#{specification.label}](#{specification.homepage_url})
39
- #{specification.version}.
40
- CONTENT
37
+ "Generated with [#{specification.label}](#{specification.homepage_url}) " \
38
+ "#{specification.version}."
41
39
  end
42
40
 
43
41
  def project_name = configuration.project_name
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "core"
3
4
  require "optparse"
4
5
 
5
6
  module Rubysmith
@@ -18,7 +19,7 @@ module Rubysmith
18
19
  @configuration_duplicate = configuration.dup
19
20
  end
20
21
 
21
- def call arguments = []
22
+ def call arguments = Core::EMPTY_ARRAY
22
23
  sections.each { |section| section.call configuration_duplicate, client: }
23
24
  client.parse arguments
24
25
  configuration_duplicate.freeze
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "core"
3
4
  require "refinements/structs"
4
5
 
5
6
  module Rubysmith
@@ -21,7 +22,7 @@ module Rubysmith
21
22
  @client = client
22
23
  end
23
24
 
24
- def call arguments = []
25
+ def call arguments = ::Core::EMPTY_ARRAY
25
26
  client.separator "\nBUILD OPTIONS:\n"
26
27
  collate
27
28
  client.parse arguments
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "core"
3
4
  require "refinements/structs"
4
5
 
5
6
  module Rubysmith
@@ -21,7 +22,7 @@ module Rubysmith
21
22
  @client = client
22
23
  end
23
24
 
24
- def call arguments = []
25
+ def call arguments = ::Core::EMPTY_ARRAY
25
26
  client.banner = specification.labeled_summary
26
27
  client.separator "\nUSAGE:\n"
27
28
  collate
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "core"
3
4
  require "milestoner"
4
5
 
5
6
  module Rubysmith
@@ -13,7 +14,7 @@ module Rubysmith
13
14
  @parser = parser
14
15
  end
15
16
 
16
- def call arguments = []
17
+ def call arguments = Core::EMPTY_ARRAY
17
18
  perform parser.call(arguments)
18
19
  rescue OptionParser::ParseError, Milestoner::Error => error
19
20
  logger.error { error.message }
@@ -82,25 +82,21 @@ module Rubysmith
82
82
  :project_version,
83
83
  :target_root,
84
84
  :template_path,
85
- :template_roots,
86
- keyword_init: true
85
+ :template_roots
87
86
  ) do
88
87
  using Refinements::Arrays
89
88
  using Refinements::Strings
90
89
  using Refinements::Structs
91
90
 
92
- def initialize *arguments
91
+ def initialize target_root: Pathname.pwd, template_roots: [], **arguments
93
92
  super
94
-
95
- self[:template_roots] ||= [Pathname(__dir__).join("../templates")]
96
- self[:target_root] ||= Pathname.pwd
97
93
  freeze
98
94
  end
99
95
 
100
- def add_template_roots paths
101
- Array(paths).map { |path| Pathname path }
102
- .including(template_roots)
103
- .then { |roots| dup.merge! template_roots: roots }
96
+ def add_template_roots *paths
97
+ paths.map { |path| Pathname path }
98
+ .including(template_roots)
99
+ .then { |roots| dup.merge! template_roots: roots }
104
100
  end
105
101
 
106
102
  def maximize = update_build_options(true)
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry/container"
4
+
5
+ module Rubysmith
6
+ module Configuration
7
+ module Enhancers
8
+ # Provides a container of enhancers for injection into other objects.
9
+ module Container
10
+ extend Dry::Container::Mixin
11
+
12
+ register(:current_time) { Enhancers::CurrentTime }
13
+ register(:git_hub_user) { Enhancers::GitHubUser }
14
+ register(:git_email) { Enhancers::GitEmail }
15
+ register(:git_user) { Enhancers::GitUser }
16
+ register(:template_root) { Enhancers::TemplateRoot }
17
+ end
18
+ end
19
+ end
20
+ end
@@ -4,21 +4,11 @@ require "refinements/structs"
4
4
 
5
5
  module Rubysmith
6
6
  module Configuration
7
+ # Adds current time to content.
7
8
  module Enhancers
8
- # Adds current time to content.
9
- class CurrentTime
10
- using Refinements::Structs
9
+ using Refinements::Structs
11
10
 
12
- def initialize now = Time.now
13
- @now = now
14
- end
15
-
16
- def call(content) = content.merge(now:)
17
-
18
- private
19
-
20
- attr_reader :now
21
- end
11
+ CurrentTime = -> content, at: Time.now { content.merge(now: at) }
22
12
  end
23
13
  end
24
14
  end
@@ -6,25 +6,15 @@ require "refinements/structs"
6
6
 
7
7
  module Rubysmith
8
8
  module Configuration
9
+ # Dynamically adds Git email if defined.
9
10
  module Enhancers
10
- # Dynamically adds Git email if defined.
11
- class GitEmail
12
- using Refinements::Strings
13
- using Refinements::Structs
11
+ using Refinements::Strings
12
+ using Refinements::Structs
14
13
 
15
- def initialize git: Gitt::Repository.new
16
- @git = git
17
- end
14
+ GitEmail = lambda do |content, git: Gitt::Repository.new|
15
+ return content unless String(content.author_email).blank?
18
16
 
19
- def call content
20
- String(content.author_email).blank? ? content.merge(author_email: email) : content
21
- end
22
-
23
- private
24
-
25
- attr_reader :git
26
-
27
- def email = git.get("user.email").value_or("")
17
+ content.merge author_email: git.get("user.email").value_or("")
28
18
  end
29
19
  end
30
20
  end
@@ -6,25 +6,15 @@ require "refinements/structs"
6
6
 
7
7
  module Rubysmith
8
8
  module Configuration
9
+ # Dynamically adds GitHub user if user is defined.
9
10
  module Enhancers
10
- # Dynamically adds GitHub user if user is defined.
11
- class GitHubUser
12
- using Refinements::Strings
13
- using Refinements::Structs
11
+ using Refinements::Strings
12
+ using Refinements::Structs
14
13
 
15
- def initialize git: Gitt::Repository.new
16
- @git = git
17
- end
14
+ GitHubUser = lambda do |content, git: Gitt::Repository.new|
15
+ return content unless String(content.git_hub_user).blank?
18
16
 
19
- def call content
20
- String(content.git_hub_user).blank? ? content.merge(git_hub_user: user) : content
21
- end
22
-
23
- private
24
-
25
- attr_reader :git
26
-
27
- def user = git.get "github.user"
17
+ content.merge git_hub_user: git.get("github.user").value_or("default")
28
18
  end
29
19
  end
30
20
  end
@@ -6,28 +6,19 @@ require "refinements/structs"
6
6
 
7
7
  module Rubysmith
8
8
  module Configuration
9
+ # Dynamically adds Git user if defined.
9
10
  module Enhancers
10
- # Dynamically adds Git user if defined.
11
- class GitUser
12
- using Refinements::Strings
13
- using Refinements::Structs
11
+ using Refinements::Strings
12
+ using Refinements::Structs
14
13
 
15
- def initialize git: Gitt::Repository.new
16
- @git = git
17
- end
14
+ GitUser = lambda do |content, git: Gitt::Repository.new|
15
+ return content unless String(content.author_name).blank?
18
16
 
19
- def call(content) = String(content.author_name).blank? ? content.merge(**user) : content
20
-
21
- private
22
-
23
- attr_reader :git
24
-
25
- def user
26
- git.get("user.name")
27
- .value_or("")
28
- .then { |name| String(name).split }
29
- .then { |first, last| {author_given_name: first, author_family_name: last} }
30
- end
17
+ git.get("user.name")
18
+ .value_or("")
19
+ .then { |name| String(name).split }
20
+ .then { |first, last| {author_given_name: first, author_family_name: last} }
21
+ .then { |user| content.merge(**user) }
31
22
  end
32
23
  end
33
24
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rubysmith
4
+ module Configuration
5
+ module Enhancers
6
+ # Prepends template roots to existing content.
7
+ TemplateRoot = lambda do |content, overrides: Pathname(__dir__).join("../../templates")|
8
+ content.add_template_roots(*Array(overrides))
9
+ end
10
+ end
11
+ end
12
+ end
@@ -16,32 +16,28 @@ module Rubysmith
16
16
  DEFAULTS = YAML.load_file(Pathname(__dir__).join("defaults.yml")).freeze
17
17
  CLIENT = Runcom::Config.new "rubysmith/configuration.yml", defaults: DEFAULTS
18
18
 
19
- ENHANCERS = [
20
- Enhancers::CurrentTime.new,
21
- Enhancers::GitEmail.new,
22
- Enhancers::GitHubUser.new,
23
- Enhancers::GitUser.new
24
- ].freeze
25
-
26
19
  def self.call(...) = new(...).call
27
20
 
28
- def self.with_defaults = new(client: DEFAULTS, enhancers: [])
21
+ def self.with_defaults = new(client: DEFAULTS, enhancers: {})
29
22
 
30
- def initialize content: Content.new, client: CLIENT, enhancers: ENHANCERS
23
+ def initialize content: Content.new, client: CLIENT, enhancers: Enhancers::Container
31
24
  @content = content
32
25
  @client = client
33
26
  @enhancers = enhancers
34
27
  end
35
28
 
36
29
  def call
37
- enhancers.reduce(preload_content) { |preload, enhancer| enhancer.call preload }
30
+ enhancers.each
31
+ .reduce(preload_content) { |preload, (_key, enhancer)| enhancer.call preload }
38
32
  .freeze
39
33
  end
40
34
 
41
- private
35
+ protected
42
36
 
43
37
  attr_reader :content, :client, :enhancers
44
38
 
39
+ private
40
+
45
41
  def preload_content = content.merge(**client.to_h.flatten_keys)
46
42
  end
47
43
  end
data/rubysmith.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "rubysmith"
5
- spec.version = "4.1.0"
5
+ spec.version = "4.3.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://github.com/bkuhlmann/rubysmith"
@@ -24,17 +24,18 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.required_ruby_version = "~> 3.2"
26
26
  spec.add_dependency "cogger", "~> 0.5"
27
+ spec.add_dependency "core", "~> 0.1"
27
28
  spec.add_dependency "dry-container", "~> 0.11"
28
- spec.add_dependency "gitt", "~> 1.0"
29
+ spec.add_dependency "gitt", "~> 1.1"
29
30
  spec.add_dependency "infusible", "~> 1.0"
30
- spec.add_dependency "milestoner", "~> 15.0"
31
+ spec.add_dependency "milestoner", "~> 15.2"
31
32
  spec.add_dependency "pastel", "~> 0.8"
32
- spec.add_dependency "pragmater", "~> 12.0"
33
+ spec.add_dependency "pragmater", "~> 12.1"
33
34
  spec.add_dependency "refinements", "~> 10.0"
34
35
  spec.add_dependency "rubocop", "~> 1.41"
35
36
  spec.add_dependency "runcom", "~> 9.0"
36
37
  spec.add_dependency "spek", "~> 1.0"
37
- spec.add_dependency "tocer", "~> 15.0"
38
+ spec.add_dependency "tocer", "~> 15.1"
38
39
  spec.add_dependency "zeitwerk", "~> 2.6"
39
40
 
40
41
  spec.bindir = "exe"
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubysmith
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -28,7 +28,7 @@ cert_chain:
28
28
  CxDe2+VuChj4I1nvIHdu+E6XoEVlanUPKmSg6nddhkKn2gC45Kyzh6FZqnzH/CRp
29
29
  RFE=
30
30
  -----END CERTIFICATE-----
31
- date: 2022-12-28 00:00:00.000000000 Z
31
+ date: 2023-01-08 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: cogger
@@ -44,6 +44,20 @@ dependencies:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0.5'
47
+ - !ruby/object:Gem::Dependency
48
+ name: core
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.1'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '0.1'
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: dry-container
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -64,14 +78,14 @@ dependencies:
64
78
  requirements:
65
79
  - - "~>"
66
80
  - !ruby/object:Gem::Version
67
- version: '1.0'
81
+ version: '1.1'
68
82
  type: :runtime
69
83
  prerelease: false
70
84
  version_requirements: !ruby/object:Gem::Requirement
71
85
  requirements:
72
86
  - - "~>"
73
87
  - !ruby/object:Gem::Version
74
- version: '1.0'
88
+ version: '1.1'
75
89
  - !ruby/object:Gem::Dependency
76
90
  name: infusible
77
91
  requirement: !ruby/object:Gem::Requirement
@@ -92,14 +106,14 @@ dependencies:
92
106
  requirements:
93
107
  - - "~>"
94
108
  - !ruby/object:Gem::Version
95
- version: '15.0'
109
+ version: '15.2'
96
110
  type: :runtime
97
111
  prerelease: false
98
112
  version_requirements: !ruby/object:Gem::Requirement
99
113
  requirements:
100
114
  - - "~>"
101
115
  - !ruby/object:Gem::Version
102
- version: '15.0'
116
+ version: '15.2'
103
117
  - !ruby/object:Gem::Dependency
104
118
  name: pastel
105
119
  requirement: !ruby/object:Gem::Requirement
@@ -120,14 +134,14 @@ dependencies:
120
134
  requirements:
121
135
  - - "~>"
122
136
  - !ruby/object:Gem::Version
123
- version: '12.0'
137
+ version: '12.1'
124
138
  type: :runtime
125
139
  prerelease: false
126
140
  version_requirements: !ruby/object:Gem::Requirement
127
141
  requirements:
128
142
  - - "~>"
129
143
  - !ruby/object:Gem::Version
130
- version: '12.0'
144
+ version: '12.1'
131
145
  - !ruby/object:Gem::Dependency
132
146
  name: refinements
133
147
  requirement: !ruby/object:Gem::Requirement
@@ -190,14 +204,14 @@ dependencies:
190
204
  requirements:
191
205
  - - "~>"
192
206
  - !ruby/object:Gem::Version
193
- version: '15.0'
207
+ version: '15.1'
194
208
  type: :runtime
195
209
  prerelease: false
196
210
  version_requirements: !ruby/object:Gem::Requirement
197
211
  requirements:
198
212
  - - "~>"
199
213
  - !ruby/object:Gem::Version
200
- version: '15.0'
214
+ version: '15.1'
201
215
  - !ruby/object:Gem::Dependency
202
216
  name: zeitwerk
203
217
  requirement: !ruby/object:Gem::Requirement
@@ -260,10 +274,12 @@ files:
260
274
  - lib/rubysmith/cli/shell.rb
261
275
  - lib/rubysmith/configuration/content.rb
262
276
  - lib/rubysmith/configuration/defaults.yml
277
+ - lib/rubysmith/configuration/enhancers/container.rb
263
278
  - lib/rubysmith/configuration/enhancers/current_time.rb
264
279
  - lib/rubysmith/configuration/enhancers/git_email.rb
265
280
  - lib/rubysmith/configuration/enhancers/git_hub_user.rb
266
281
  - lib/rubysmith/configuration/enhancers/git_user.rb
282
+ - lib/rubysmith/configuration/enhancers/template_root.rb
267
283
  - lib/rubysmith/configuration/loader.rb
268
284
  - lib/rubysmith/container.rb
269
285
  - lib/rubysmith/extensions/bundler.rb
@@ -334,7 +350,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
334
350
  - !ruby/object:Gem::Version
335
351
  version: '0'
336
352
  requirements: []
337
- rubygems_version: 3.4.1
353
+ rubygems_version: 3.4.2
338
354
  signing_key:
339
355
  specification_version: 4
340
356
  summary: A command line interface for smithing Ruby projects.
metadata.gz.sig CHANGED
Binary file