rubysmith 4.3.0 → 4.5.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: 20400688d18009b8693a50e2aaf540091135655cf7b44a447ad2299f2fccea46
4
- data.tar.gz: 0f7d4d8121b57dce5dbd25f17bd76366269d74856ff8cdcd1000908d6d8d9a08
3
+ metadata.gz: 55c3866c9490668be3c681aec460463b9d364f140736382438305bb0221ce8c7
4
+ data.tar.gz: cfcaffcad4bd532a71ba36c08b9795296cd06fa200541109d9ce5479d479fcc3
5
5
  SHA512:
6
- metadata.gz: cacd542dcdb79197f4db085021d4756f38e71017d88dd2aa1db55e43e1e60f80818d1da2f19841de58e5e0d8b903ce9343c3fce4dc1d70fcad2c97ece9abf323
7
- data.tar.gz: d2aed19508d58fbe8def647ae99e9e6d9a3ad504b08de531439c6a8a8ec7a10924ab9256b12755800e4416271e53b3a517813f8c034c02e8ad6ecd67f591ca1f
6
+ metadata.gz: e1727976ede3f428d8bfffef997eed72fd99036721af4b611b9c17b328e3106544cac1378d60b39905423303e34f2a5e7ba141c442c56400419edd85a2d033b3
7
+ data.tar.gz: 6e1debe8fb64513c5240d626f10fb1d6c6bf14b66b041ae0384a6d3905d8dd3f19c3a5a88dc8c398ba41bb095994f139739390cf80798a5b8556aec668cfb09f
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]
@@ -15,14 +15,14 @@ module Rubysmith
15
15
 
16
16
  def self.call(...) = new(...)
17
17
 
18
- def initialize configuration, helpers: HELPERS, **dependencies
19
- super(**dependencies)
18
+ def initialize(configuration, helpers: HELPERS, **)
19
+ super(**)
20
20
  @configuration = configuration
21
21
  @helpers = helpers
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
 
@@ -9,9 +9,8 @@ module Rubysmith
9
9
 
10
10
  def self.call(...) = new(...).call
11
11
 
12
- def initialize configuration, builder: Builder, **dependencies
13
- super(**dependencies)
14
-
12
+ def initialize(configuration, builder: Builder, **)
13
+ super(**)
15
14
  @configuration = configuration
16
15
  @builder = builder
17
16
  end
@@ -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,7 +18,7 @@ module Rubysmith
18
18
  def call
19
19
  return configuration unless configuration.build_git_hub_ci
20
20
 
21
- builder.call(configuration_with_template).render
21
+ builder.call(configuration_with_template).render.replace(/\n\n\Z/, "\n")
22
22
  configuration
23
23
  end
24
24
 
@@ -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,
@@ -37,8 +38,8 @@ module Rubysmith
37
38
  Builders::Git::Commit
38
39
  ].freeze
39
40
 
40
- def initialize builders: BUILDERS, **dependencies
41
- super(**dependencies)
41
+ def initialize(builders: BUILDERS, **)
42
+ super(**)
42
43
  @builders = builders
43
44
  end
44
45
 
@@ -7,8 +7,8 @@ module Rubysmith
7
7
  class Config
8
8
  include Rubysmith::Import[:kernel, :logger]
9
9
 
10
- def initialize client: Configuration::Loader::CLIENT, **dependencies
11
- super(**dependencies)
10
+ def initialize(client: Configuration::Loader::CLIENT, **)
11
+ super(**)
12
12
  @client = client
13
13
  end
14
14
 
@@ -12,8 +12,8 @@ module Rubysmith
12
12
  CLIENT = OptionParser.new nil, 40, " "
13
13
  SECTIONS = [Parsers::Core, Parsers::Build].freeze # Order is important.
14
14
 
15
- def initialize sections: SECTIONS, client: CLIENT, **dependencies
16
- super(**dependencies)
15
+ def initialize(sections: SECTIONS, client: CLIENT, **)
16
+ super(**)
17
17
  @sections = sections
18
18
  @client = client
19
19
  @configuration_duplicate = configuration.dup
@@ -14,10 +14,8 @@ module Rubysmith
14
14
 
15
15
  def self.call(...) = new(...).call
16
16
 
17
- def initialize configuration = Container[:configuration],
18
- client: Parser::CLIENT,
19
- **dependencies
20
- super(**dependencies)
17
+ def initialize(configuration = Container[:configuration], client: Parser::CLIENT, **)
18
+ super(**)
21
19
  @configuration = configuration
22
20
  @client = client
23
21
  end
@@ -14,10 +14,8 @@ module Rubysmith
14
14
 
15
15
  def self.call(...) = new(...).call
16
16
 
17
- def initialize configuration = Container[:configuration],
18
- client: Parser::CLIENT,
19
- **dependencies
20
- super(**dependencies)
17
+ def initialize(configuration = Container[:configuration], client: Parser::CLIENT, **)
18
+ super(**)
21
19
  @configuration = configuration
22
20
  @client = client
23
21
  end
@@ -9,13 +9,13 @@ module Rubysmith
9
9
  class Shell
10
10
  include Actions::Import[:config, :build, :publish, :specification, :logger]
11
11
 
12
- def initialize parser: Parser.new, **dependencies
13
- super(**dependencies)
12
+ def initialize(parser: Parser.new, **)
13
+ super(**)
14
14
  @parser = parser
15
15
  end
16
16
 
17
17
  def call arguments = Core::EMPTY_ARRAY
18
- perform parser.call(arguments)
18
+ act_on parser.call(arguments)
19
19
  rescue OptionParser::ParseError, Milestoner::Error => error
20
20
  logger.error { error.message }
21
21
  end
@@ -24,7 +24,7 @@ module Rubysmith
24
24
 
25
25
  attr_reader :parser
26
26
 
27
- def perform configuration
27
+ def act_on configuration
28
28
  case configuration
29
29
  in action_config: Symbol => action then config.call action
30
30
  in action_build: true then build.call configuration
@@ -18,3 +18,11 @@ jobs:
18
18
 
19
19
  - name: Rake
20
20
  run: bundle exec rake
21
+
22
+ <% if configuration.build_simple_cov %>
23
+ - name: Archive SimpleCov Report
24
+ uses: actions/upload-artifact@v3
25
+ with:
26
+ name: coverage
27
+ path: coverage
28
+ <% end %>
@@ -11,7 +11,7 @@ source "https://rubygems.org"
11
11
 
12
12
  group :code_quality do
13
13
  <% if configuration.build_caliber %>
14
- gem "caliber", "~> 0.21"
14
+ gem "caliber", "~> 0.25"
15
15
  <% end %>
16
16
  <% if configuration.build_git && configuration.build_git_lint %>
17
17
  gem "git-lint", "~> 5.0"
@@ -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.3.0"
5
+ spec.version = "4.5.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://github.com/bkuhlmann/rubysmith"
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.3.0
4
+ version: 4.5.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-08 00:00:00.000000000 Z
31
+ date: 2023-02-05 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: cogger
@@ -252,6 +252,7 @@ files:
252
252
  - lib/rubysmith/builders/documentation/version.rb
253
253
  - lib/rubysmith/builders/git/commit.rb
254
254
  - lib/rubysmith/builders/git/ignore.rb
255
+ - lib/rubysmith/builders/git/safe.rb
255
256
  - lib/rubysmith/builders/git/setup.rb
256
257
  - lib/rubysmith/builders/git_hub.rb
257
258
  - lib/rubysmith/builders/git_hub_ci.rb
@@ -316,6 +317,7 @@ files:
316
317
  - lib/rubysmith/templates/%project_name%/VERSIONS.md.erb
317
318
  - lib/rubysmith/templates/%project_name%/bin/console.erb
318
319
  - lib/rubysmith/templates/%project_name%/bin/guard.erb
320
+ - lib/rubysmith/templates/%project_name%/bin/rake.erb
319
321
  - lib/rubysmith/templates/%project_name%/bin/rspec.erb
320
322
  - lib/rubysmith/templates/%project_name%/bin/rubocop.erb
321
323
  - lib/rubysmith/templates/%project_name%/bin/setup.erb
@@ -350,7 +352,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
350
352
  - !ruby/object:Gem::Version
351
353
  version: '0'
352
354
  requirements: []
353
- rubygems_version: 3.4.2
355
+ rubygems_version: 3.4.6
354
356
  signing_key:
355
357
  specification_version: 4
356
358
  summary: A command line interface for smithing Ruby projects.
metadata.gz.sig CHANGED
Binary file