rubysmith 4.0.1 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aab5b0e11cc7a26ae44d9bfb2f28b5a582a2b785c3e5140cb959d0dba1248492
4
- data.tar.gz: b6c20fa6f3bb6e5b1c9f893519ea57a61b20e3a7cba22c273bada97c760615b9
3
+ metadata.gz: 4cfa93891b2aab52dafc35ded6689a9b1ab0238392a77fb00792921509688a81
4
+ data.tar.gz: fe6ad94812bfcf65510f5d003adcdb1343108eeab217b000ecd52ede786918c9
5
5
  SHA512:
6
- metadata.gz: 6d4fc06bbee40a3ec061f572e2380260bc851420a3a6a101a0d0d685b4cc99e84505c3bcbc09376ed7d1dcf70bea6b56af4332e75f32142cd07834ff59b884f3
7
- data.tar.gz: 8af8cb102523d0ee51e5f74748b8d2bab01a858c02c72d98477870fed7ac2465f7bf470f232bc3ece2543fecd5ba77f6db3059458a4d72ee885f79a110bd0f0e
6
+ metadata.gz: a452d09d13d5f9531c0f524a7562b352ed1b3e4c24c2b8f8cadccfe05ee8c9eae60aed31da16b7b2125fdc95e3034f88a364b7188c6721073177635ba67ba602
7
+ data.tar.gz: d88f49c8805a2f9730d29a741a399075c3a30c88bbcb987bd70647de3b68d859ebe05ab8d91b5563566cb80c39202494d63f5f89ea2861a3816edf88895d306c
checksums.yaml.gz.sig CHANGED
Binary file
@@ -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
@@ -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", "TODO"
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,27 +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", "TODO")
27
- .then { |name| String(name).split }
28
- .then { |first, last| {author_given_name: first, author_family_name: last} }
29
- 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) }
30
22
  end
31
23
  end
32
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
@@ -20,7 +20,7 @@ group :code_quality do
20
20
  gem "reek", "~> 6.1"
21
21
  <% end %>
22
22
  <% if configuration.build_simple_cov %>
23
- gem "simplecov", "~> 0.21", require: false
23
+ gem "simplecov", "~> 0.22", require: false
24
24
  <% end %>
25
25
  end
26
26
 
@@ -6,8 +6,9 @@ require "simplecov"
6
6
 
7
7
  unless ENV["NO_COVERAGE"]
8
8
  SimpleCov.start do
9
- enable_coverage :branch
10
9
  add_filter %r(^/spec/)
10
+ enable_coverage :branch
11
+ enable_coverage_for_eval
11
12
  minimum_coverage_by_file line: 95, branch: 95
12
13
  end
13
14
  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.0.1"
5
+ spec.version = "4.2.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://github.com/bkuhlmann/rubysmith"
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency "dry-container", "~> 0.11"
28
28
  spec.add_dependency "gitt", "~> 1.0"
29
29
  spec.add_dependency "infusible", "~> 1.0"
30
- spec.add_dependency "milestoner", "~> 15.0"
30
+ spec.add_dependency "milestoner", "~> 15.1"
31
31
  spec.add_dependency "pastel", "~> 0.8"
32
32
  spec.add_dependency "pragmater", "~> 12.0"
33
33
  spec.add_dependency "refinements", "~> 10.0"
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.0.1
4
+ version: 4.2.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-01 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: cogger
@@ -92,14 +92,14 @@ dependencies:
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '15.0'
95
+ version: '15.1'
96
96
  type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '15.0'
102
+ version: '15.1'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: pastel
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -260,10 +260,12 @@ files:
260
260
  - lib/rubysmith/cli/shell.rb
261
261
  - lib/rubysmith/configuration/content.rb
262
262
  - lib/rubysmith/configuration/defaults.yml
263
+ - lib/rubysmith/configuration/enhancers/container.rb
263
264
  - lib/rubysmith/configuration/enhancers/current_time.rb
264
265
  - lib/rubysmith/configuration/enhancers/git_email.rb
265
266
  - lib/rubysmith/configuration/enhancers/git_hub_user.rb
266
267
  - lib/rubysmith/configuration/enhancers/git_user.rb
268
+ - lib/rubysmith/configuration/enhancers/template_root.rb
267
269
  - lib/rubysmith/configuration/loader.rb
268
270
  - lib/rubysmith/container.rb
269
271
  - lib/rubysmith/extensions/bundler.rb
@@ -306,7 +308,6 @@ files:
306
308
  - lib/rubysmith/templates/%project_name%/lib/%project_path%.rb.erb
307
309
  - lib/rubysmith/templates/%project_name%/spec/spec_helper.rb.erb
308
310
  - lib/rubysmith/templates/%project_name%/spec/support/shared_contexts/temp_dir.rb.erb
309
- - lib/rubysmith/templates/.DS_Store
310
311
  - lib/rubysmith/text/inserter.rb
311
312
  - rubysmith.gemspec
312
313
  homepage: https://github.com/bkuhlmann/rubysmith
metadata.gz.sig CHANGED
Binary file
Binary file