rubysmith 4.2.0 → 4.4.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: 4cfa93891b2aab52dafc35ded6689a9b1ab0238392a77fb00792921509688a81
4
- data.tar.gz: fe6ad94812bfcf65510f5d003adcdb1343108eeab217b000ecd52ede786918c9
3
+ metadata.gz: 369e1f3f129b4a720739f0082e9bc8e1b81b2624044a656eb8fc3a7857678f2f
4
+ data.tar.gz: 1c6ac0a082c68f0df9f3169d04ed56af5ec6fceb73556628a3a2cec255fd9405
5
5
  SHA512:
6
- metadata.gz: a452d09d13d5f9531c0f524a7562b352ed1b3e4c24c2b8f8cadccfe05ee8c9eae60aed31da16b7b2125fdc95e3034f88a364b7188c6721073177635ba67ba602
7
- data.tar.gz: d88f49c8805a2f9730d29a741a399075c3a30c88bbcb987bd70647de3b68d859ebe05ab8d91b5563566cb80c39202494d63f5f89ea2861a3816edf88895d306c
6
+ metadata.gz: fe4fbacb5bd3298d6c67979e56a3de9e65ff2bec5c7504bed48d24cfb2eee999fb107b36100a52a5a1b1a4b775071ac05bf18235a6f5a7c4a7590216036d3214
7
+ data.tar.gz: 716de62909d60e3585f26b4816c33dac3d62334f6bef662995b2015a390c27b0bf9bbb10db3a90ca239bfac4c5322e2a649d8532a34549abe1f60f21ec235726
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -222,14 +222,14 @@ doesn't require use of the `--git_hub` option but is encouraged.
222
222
 
223
223
  ===== Git
224
224
 
225
- The `--git` option allows you add link:https://git-scm.com[Git] repository support.
225
+ The `--git` option allows you add link:https://git-scm.com[Git] repository support. Includes link:https://www.alchemists.io/screencasts/git_safe[Git Safe] functionality so you don't have to prefix commands with the `bin/` path prefix. Instead, you can call the command directly (assuming you have configured your link:https://www.alchemists.io/projects/dotfiles[Dotfiles] accordingly).
226
226
 
227
227
  ===== GitHub
228
228
 
229
229
  The `--git_hub` option allows you add link:https://github.com[GitHub] templates to your project for
230
230
  issues and pull requests.
231
231
 
232
- ==== GitHub CI
232
+ ===== GitHub CI
233
233
 
234
234
  The `--git_hub_ci` option allows you to build your project with link:https://docs.github.com/en/actions[GitHub Actions] configured so you can get your project building as quickly as possible.
235
235
 
@@ -556,7 +556,7 @@ To test, run:
556
556
 
557
557
  [source,bash]
558
558
  ----
559
- bundle exec rake
559
+ bin/rake
560
560
  ----
561
561
 
562
562
  == link:https://www.alchemists.io/policies/license[License]
@@ -22,7 +22,7 @@ module Rubysmith
22
22
  end
23
23
 
24
24
  def append content
25
- log_debug "Appending: #{relative_build_path}"
25
+ log_debug "Appending content to: #{relative_build_path}"
26
26
  build_path.rewrite { |body| body + content }
27
27
  self
28
28
  end
@@ -33,15 +33,21 @@ module Rubysmith
33
33
  self
34
34
  end
35
35
 
36
+ def insert_after pattern, content
37
+ log_debug "Inserting content after pattern in: #{relative_build_path}"
38
+ build_path.write inserter.new(build_path.readlines, :after).call(content, pattern).join
39
+ self
40
+ end
41
+
36
42
  def insert_before pattern, content
37
43
  log_debug "Inserting content before pattern in: #{relative_build_path}"
38
44
  build_path.write inserter.new(build_path.readlines, :before).call(content, pattern).join
39
45
  self
40
46
  end
41
47
 
42
- def insert_after pattern, content
43
- log_debug "Inserting content after pattern in: #{relative_build_path}"
44
- build_path.write inserter.new(build_path.readlines, :after).call(content, pattern).join
48
+ def make_path
49
+ log_debug "Creating path: #{relative_build_path}"
50
+ build_path.make_path
45
51
  self
46
52
  end
47
53
 
@@ -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
 
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "refinements/structs"
4
+
5
+ module Rubysmith
6
+ module Builders
7
+ module Git
8
+ # Initializes project skeleton with Git Safe support.
9
+ class Safe
10
+ using Refinements::Structs
11
+
12
+ def self.call(...) = new(...).call
13
+
14
+ def initialize configuration, builder: Builder
15
+ @configuration = configuration
16
+ @builder = builder
17
+ end
18
+
19
+ def call
20
+ return configuration unless configuration.build_git
21
+
22
+ builder.call(configuration.merge(template_path: "%project_name%/.git/safe")).make_path
23
+ configuration
24
+ end
25
+
26
+ private
27
+
28
+ attr_reader :configuration, :builder
29
+ end
30
+ end
31
+ end
32
+ end
@@ -18,6 +18,22 @@ module Rubysmith
18
18
  def call
19
19
  return configuration unless configuration.build_rake
20
20
 
21
+ add_binstub
22
+ add_configuration
23
+ configuration
24
+ end
25
+
26
+ private
27
+
28
+ attr_reader :configuration, :builder
29
+
30
+ def add_binstub
31
+ builder.call(configuration.merge(template_path: "%project_name%/bin/rake.erb"))
32
+ .render
33
+ .permit 0o755
34
+ end
35
+
36
+ def add_configuration
21
37
  builder.call(configuration.merge(template_path: "%project_name%/Rakefile.erb"))
22
38
  .render
23
39
  .replace(/\[\s+/, "[")
@@ -26,13 +42,7 @@ module Rubysmith
26
42
  .replace("task.", " task.")
27
43
  .replace(/\n+(?=require)/, "\n")
28
44
  .replace(/\n{2,}/, "\n\n")
29
-
30
- configuration
31
45
  end
32
-
33
- private
34
-
35
- attr_reader :configuration, :builder
36
46
  end
37
47
  end
38
48
  end
@@ -17,6 +17,7 @@ module Rubysmith
17
17
  Builders::Documentation::Version,
18
18
  Builders::Git::Setup,
19
19
  Builders::Git::Ignore,
20
+ Builders::Git::Safe,
20
21
  Builders::Bundler,
21
22
  Builders::Rake,
22
23
  Builders::Console,
@@ -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 }
@@ -1,4 +1,4 @@
1
- guard :rspec, cmd: "NO_COVERAGE=true bundle exec rspec --format documentation" do
1
+ guard :rspec, cmd: "NO_COVERAGE=true bin/rspec --format documentation" do
2
2
  watch %r(^spec/.+_spec\.rb$)
3
3
  watch(%r(^lib/(.+)\.rb$)) { |m| "spec/lib/#{m[1]}_spec.rb" }
4
4
  watch("spec/spec_helper.rb") { "spec" }
@@ -56,7 +56,7 @@ To test, run:
56
56
 
57
57
  [source,bash]
58
58
  ----
59
- bundle exec rake
59
+ bin/rake
60
60
  ----
61
61
 
62
62
  <% if configuration.build_license %>
@@ -44,7 +44,7 @@ You can also use the IRB console for direct access to all objects:
44
44
 
45
45
  To test, run:
46
46
 
47
- bundle exec rake
47
+ bin/rake
48
48
 
49
49
  <% if configuration.build_license %>
50
50
  ## [License](<%= configuration.computed_project_url_license %>)
@@ -0,0 +1,5 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+
5
+ load Gem.bin_path "rake", "rake"
@@ -20,12 +20,16 @@ require "refinements"
20
20
  <% end %>
21
21
 
22
22
  <% if configuration.build_refinements %>
23
+ SPEC_ROOT = Pathname(__dir__).realpath.freeze
24
+
23
25
  using Refinements::Pathnames
24
26
 
25
- Pathname.require_tree __dir__, "support/shared_contexts/**/*.rb"
27
+ Pathname.require_tree SPEC_ROOT, "support/shared_contexts/**/*.rb"
26
28
  <% else %>
27
29
 
28
- Dir[File.join(__dir__, "support", "shared_contexts", "**/*.rb")].each { |path| require path }
30
+ SPEC_ROOT = Pathname(__dir__).realpath.freeze
31
+
32
+ Dir[File.join(SPEC_ROOT, "support", "shared_contexts", "**/*.rb")].each { |path| require path }
29
33
  <% end %>
30
34
 
31
35
  RSpec.configure do |config|
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.2.0"
5
+ spec.version = "4.4.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.1"
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.2.0
4
+ version: 4.4.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: 2023-01-01 00:00:00.000000000 Z
31
+ date: 2023-01-22 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.1'
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.1'
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
@@ -238,6 +252,7 @@ files:
238
252
  - lib/rubysmith/builders/documentation/version.rb
239
253
  - lib/rubysmith/builders/git/commit.rb
240
254
  - lib/rubysmith/builders/git/ignore.rb
255
+ - lib/rubysmith/builders/git/safe.rb
241
256
  - lib/rubysmith/builders/git/setup.rb
242
257
  - lib/rubysmith/builders/git_hub.rb
243
258
  - lib/rubysmith/builders/git_hub_ci.rb
@@ -302,6 +317,7 @@ files:
302
317
  - lib/rubysmith/templates/%project_name%/VERSIONS.md.erb
303
318
  - lib/rubysmith/templates/%project_name%/bin/console.erb
304
319
  - lib/rubysmith/templates/%project_name%/bin/guard.erb
320
+ - lib/rubysmith/templates/%project_name%/bin/rake.erb
305
321
  - lib/rubysmith/templates/%project_name%/bin/rspec.erb
306
322
  - lib/rubysmith/templates/%project_name%/bin/rubocop.erb
307
323
  - lib/rubysmith/templates/%project_name%/bin/setup.erb
@@ -336,7 +352,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
336
352
  - !ruby/object:Gem::Version
337
353
  version: '0'
338
354
  requirements: []
339
- rubygems_version: 3.4.1
355
+ rubygems_version: 3.4.4
340
356
  signing_key:
341
357
  specification_version: 4
342
358
  summary: A command line interface for smithing Ruby projects.
metadata.gz.sig CHANGED
Binary file