rubysmith 0.5.0 → 0.6.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: dbfa61773bde7189ba8d0dec9afe63668e816f133fca51c30ca842e385725374
4
- data.tar.gz: cdc26262659c4d509445a4b0bda9354ff7de9ba5b444efdb6ddc218b44302cb3
3
+ metadata.gz: f85dc46b117c0698caa1f0904db283ea628813000bf452172917ff287696e51e
4
+ data.tar.gz: 98e68d55fcbcc04f1cd01366ecd7891ca2692f627df94d7d1c6ee03f0189475f
5
5
  SHA512:
6
- metadata.gz: 6b3eabb2cb6dfc9e05f255b0258638a5e299911c8250d2f36f97d33748c1e021050a26295b473d35c7d2bbef7aed3b010423b606f4e4c1821c6e14f326f97c7d
7
- data.tar.gz: '028679978997133b526267f6835a5cad6ef76c6a87e8976d3a0012f843fb3ae8565751fcbff35ee4b2f1dbb81c6b216bec95807cd9fecb00fa4cb088ccc3a72a'
6
+ metadata.gz: 122ca78a91a27293ab325bce3e8064f0c4be2d99d0f4b755bd5be309f2283fb421f872d0247ec7d4cde3f3d0d3c139b44e368584b20575ea45a16463e39d0651
7
+ data.tar.gz: e6af238bccd4ae8ca0cd19939be559bd11f0138d61f47fca0b71dcbeb1534550d0ac00cf5c05f2dad999a058fa0cbd9ae5addd8e3e97e7e3f5ee6b7847494698
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -26,6 +26,7 @@ toc::[]
26
26
  * Uses link:https://www.alchemists.io/projects/refinements[Refinements] Ruby core library enhancements.
27
27
  * Uses link:https://www.alchemists.io/projects/runcom[Runcom] for resource configuration management.
28
28
  * Uses link:https://www.alchemists.io/projects/pragmater[Pragmater] for Ruby source pragma directives.
29
+ * Supports link:https://github.com/amazing-print/amazing_print[Amazing Print].
29
30
  * Supports link:https://github.com/rubysec/bundler-audit[Bundler Audit].
30
31
  * Supports link:https://github.com/rubymem/bundler-leak[Bundler Leak].
31
32
  * Supports link:https://git-scm.com[Git].
@@ -33,8 +34,11 @@ toc::[]
33
34
  * Supports link:https://github.com/guard/guard[Guard].
34
35
  * Supports link:http://pryrepl.org[Pry].
35
36
  * Supports link:https://github.com/troessner/reek[Reek].
37
+ * Supports link:https://www.alchemists.io/projects/refinements[Refinements].
36
38
  * Supports link:https://rspec.info[RSpec].
37
39
  * Supports link:https://github.com/rubocop-hq/rubocop[Rubocop].
40
+ * Supports link:https://docs.rubocop.org/rubocop-performance[Rubocop Performance].
41
+ * Supports link:https://github.com/rubocop-hq/rubocop-rake[Rubocop Rake].
38
42
  * Supports link:https://github.com/rubocop-hq/rubocop-rspec[Rubocop RSpec].
39
43
  * Supports link:https://github.com/simplecov-ruby/simplecov[SimpleCov].
40
44
  * Supports common settings and a structured layout for building projects.
@@ -80,20 +84,22 @@ USAGE:
80
84
  -c, --config ACTION Manage gem configuration: edit or view.
81
85
 
82
86
  BUILD OPTIONS:
83
- --[no-]bundler-audit Add Bundler Audit.
84
- --[no-]bundler-leak Add Bundler Leak.
85
- --[no-]console Add console script.
86
- --[no-]documentation Add documentation.
87
- --[no-]git Add Git.
88
- --[no-]git-lint Add Git Lint.
89
- --[no-]guard Add Guard.
90
- --[no-]pry Add Pry.
91
- --[no-]reek Add Reek.
92
- --[no-]rspec Add RSpec.
93
- --[no-]rubocop Add Rubocop.
94
- --[no-]setup Add setup script.
95
- --[no-]simple_cov Add SimpleCov.
96
- --min Use minimum/no options.
87
+ --[no-]amazing_print Add Amazing Print.
88
+ --[no-]bundler-audit Add Bundler Audit.
89
+ --[no-]bundler-leak Add Bundler Leak.
90
+ --[no-]console Add console script.
91
+ --[no-]documentation Add documentation.
92
+ --[no-]git Add Git.
93
+ --[no-]git-lint Add Git Lint.
94
+ --[no-]guard Add Guard.
95
+ --[no-]pry Add Pry.
96
+ --[no-]reek Add Reek.
97
+ --[no-]refinements Add Refinements.
98
+ --[no-]rspec Add RSpec.
99
+ --[no-]rubocop Add Rubocop.
100
+ --[no-]setup Add setup script.
101
+ --[no-]simple_cov Add SimpleCov
102
+ --min Use minimum/no options.
97
103
  ....
98
104
 
99
105
  === Building
@@ -153,6 +159,7 @@ The default configuration is as follows:
153
159
  :format: "md"
154
160
  :license: "mit"
155
161
  :build:
162
+ :amazing_print: true
156
163
  :bundler_audit: true
157
164
  :bundler_leak: true
158
165
  :console: true
@@ -163,6 +170,7 @@ The default configuration is as follows:
163
170
  :minimum: false
164
171
  :pry: true
165
172
  :reek: true
173
+ :refinements: true
166
174
  :rspec: true
167
175
  :rubocop: true
168
176
  :setup: true
@@ -20,7 +20,8 @@ require "rubysmith/builders/reek"
20
20
  require "rubysmith/builders/rspec/context"
21
21
  require "rubysmith/builders/rspec/helper"
22
22
  require "rubysmith/builders/pragma"
23
- require "rubysmith/builders/rubocop"
23
+ require "rubysmith/builders/rubocop/setup"
24
+ require "rubysmith/builders/rubocop/formatter"
24
25
  require "rubysmith/cli/parsers/core"
25
26
  require "rubysmith/cli/parsers/build"
26
27
  require "rubysmith/cli/parsers/assembler"
@@ -20,11 +20,12 @@ module Rubysmith
20
20
  def call
21
21
  builder.call(realm.with(template_path: "%project_name%/Gemfile.erb"))
22
22
  .render
23
- .replace(/\n\s*group/, "\n\ngroup")
24
- .replace(/\n\s*gem/, "\n gem")
25
- .replace(/\s{4}\n/, "")
26
- .replace(" end", "end")
27
- .replace(/\n{1,}\Z/, "\n")
23
+ .replace(/\n\s+group/, "\n\ngroup")
24
+ .replace(/\n\s+gem/, "\n gem")
25
+ .replace(/ (?=.+refinements)/, "")
26
+ .replace(/(\n+|\s+)end/, "\nend")
27
+ .replace(/\n\ngroup :(code_quality|test|tools) do\nend/, "")
28
+ .replace(/org"\n+/, "org\"\n\n")
28
29
  Dir.chdir(realm.project_root) { runner.start %w[install --quiet] }
29
30
  nil
30
31
  end
@@ -16,11 +16,11 @@ module Rubysmith
16
16
  def call
17
17
  builder.call(realm.with(template_path: "%project_name%/Rakefile.erb"))
18
18
  .render
19
- .replace(/\A\n+/, "")
20
19
  .replace(/\[\s+/, "[")
21
20
  .replace(/\s+\]/, "]")
22
- .replace(/\n{2,}/, "\n\n")
23
21
  .replace(" ", "")
22
+ .replace(/\n+(?=require)/, "\n")
23
+ .replace(/\n{2,}/, "\n\n")
24
24
  nil
25
25
  end
26
26
 
@@ -17,9 +17,10 @@ module Rubysmith
17
17
  def call
18
18
  return unless realm.build_rspec
19
19
 
20
- builder.call(
21
- realm.with(template_path: "%project_name%/spec/support/shared_contexts/temp_dir.rb.erb")
22
- ).render
20
+ realm.with(template_path: "%project_name%/spec/support/shared_contexts/temp_dir.rb.erb")
21
+ .then { |new_realm| builder.call new_realm }
22
+ .render
23
+ .replace(/\n\s+\n\s+/, "\n ")
23
24
  end
24
25
 
25
26
  private
@@ -20,8 +20,7 @@ module Rubysmith
20
20
  builder.call(realm.with(template_path: "%project_name%/spec/spec_helper.rb.erb"))
21
21
  .render
22
22
  .replace(/\n{3,}/, "\n\n")
23
- .replace(" require", "require")
24
- .replace(" Simple", "Simple")
23
+ .replace(/\n\s{2}(?=(require|Simple|using|Pathname|Dir))/, "\n")
25
24
  end
26
25
 
27
26
  private
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rubocop"
4
+ require "refinements/ios"
5
+
6
+ module Rubysmith
7
+ module Builders
8
+ module Rubocop
9
+ # Executes Rubocop auto-correct on newly generated project.
10
+ class Formatter
11
+ using Refinements::IOs
12
+
13
+ def self.call realm
14
+ new(realm).call
15
+ end
16
+
17
+ def initialize realm, client: RuboCop::CLI.new
18
+ @realm = realm
19
+ @client = client
20
+ end
21
+
22
+ def call
23
+ STDOUT.squelch { client.run ["--auto-correct", realm.project_root.to_s] }
24
+ nil
25
+ end
26
+
27
+ private
28
+
29
+ attr_reader :realm, :client
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rubysmith
4
+ module Builders
5
+ module Rubocop
6
+ # Builds project skeleton for Rubocop code quality support.
7
+ class Setup
8
+ def self.call realm, builder: Builder
9
+ new(realm, builder: builder).call
10
+ end
11
+
12
+ def initialize realm, builder: Builder
13
+ @realm = realm
14
+ @builder = builder
15
+ end
16
+
17
+ def call
18
+ return unless realm.build_rubocop
19
+
20
+ builder.call(realm.with(template_path: "%project_name%/bin/rubocop.erb"))
21
+ .render
22
+ .permit 0o755
23
+
24
+ builder.call(realm.with(template_path: "%project_name%/.rubocop.yml.erb")).render
25
+ end
26
+
27
+ private
28
+
29
+ attr_reader :realm, :builder
30
+ end
31
+ end
32
+ end
33
+ end
@@ -8,6 +8,7 @@
8
8
  :format: "md"
9
9
  :license: "mit"
10
10
  :build:
11
+ :amazing_print: true
11
12
  :bundler_audit: true
12
13
  :bundler_leak: true
13
14
  :console: true
@@ -18,6 +19,7 @@
18
19
  :minimum: false
19
20
  :pry: true
20
21
  :reek: true
22
+ :refinements: true
21
23
  :rspec: true
22
24
  :rubocop: true
23
25
  :setup: true
@@ -31,6 +31,12 @@ module Rubysmith
31
31
  end
32
32
  end
33
33
 
34
+ def add_amazing_print
35
+ client.on "--[no-]amazing_print", "Add Amazing Print." do |value|
36
+ options[:build_amazing_print] = value
37
+ end
38
+ end
39
+
34
40
  def add_bundler_audit
35
41
  client.on "--[no-]bundler-audit", "Add Bundler Audit." do |value|
36
42
  options[:build_bundler_audit] = value
@@ -85,6 +91,12 @@ module Rubysmith
85
91
  end
86
92
  end
87
93
 
94
+ def add_refinements
95
+ client.on "--[no-]refinements", "Add Refinements." do |value|
96
+ options[:build_refinements] = value
97
+ end
98
+ end
99
+
88
100
  def add_rspec
89
101
  client.on "--[no-]rspec", "Add RSpec." do |value|
90
102
  options[:build_rspec] = value
@@ -9,7 +9,8 @@ module Rubysmith
9
9
  MINIMUM = [
10
10
  Builders::Core,
11
11
  Builders::Bundler,
12
- Builders::Pragma
12
+ Builders::Pragma,
13
+ Builders::Rubocop::Formatter
13
14
  ].freeze
14
15
 
15
16
  # Order is important.
@@ -26,10 +27,15 @@ module Rubysmith
26
27
  Builders::RSpec::Context,
27
28
  Builders::RSpec::Helper,
28
29
  Builders::Pragma,
29
- Builders::Rubocop,
30
+ Builders::Rubocop::Setup,
31
+ Builders::Rubocop::Formatter,
30
32
  Builders::Git::Commit
31
33
  ].freeze
32
34
 
35
+ def self.with_minimum
36
+ new builders: MINIMUM
37
+ end
38
+
33
39
  def initialize builders: MAXIMUM
34
40
  @builders = builders
35
41
  end
@@ -11,7 +11,7 @@ module Rubysmith
11
11
 
12
12
  PROCESSORS = {
13
13
  config: Processors::Config.new,
14
- build_minimum: Processors::Build.new(builders: Processors::Build::MINIMUM),
14
+ build_minimum: Processors::Build.with_minimum,
15
15
  build_maximum: Processors::Build.new
16
16
  }.freeze
17
17
 
@@ -23,16 +23,14 @@ module Rubysmith
23
23
  def call arguments = []
24
24
  parse arguments
25
25
 
26
- # rubocop:disable Style/MethodCallWithArgsParentheses
27
26
  case options
28
- in config: action, **remainder then config action
29
- in build_minimum: true, **remainder then build(:build_minimum, options)
30
- in build:, **remainder then build(:build_maximum, options)
27
+ in config: action, **remainder then process_config action
28
+ in build_minimum: true, **remainder then process_build :build_minimum, options
29
+ in build:, **remainder then process_build :build_maximum, options
31
30
  in version:, **remainder then puts version
32
31
  in help:, **remainder then usage
33
32
  else usage
34
33
  end
35
- # rubocop:enable Style/MethodCallWithArgsParentheses
36
34
  end
37
35
 
38
36
  private
@@ -45,11 +43,11 @@ module Rubysmith
45
43
  puts error.message
46
44
  end
47
45
 
48
- def config action
49
- processors.fetch(__method__).call action
46
+ def process_config action
47
+ processors.fetch(:config).call action
50
48
  end
51
49
 
52
- def build kind, settings
50
+ def process_build kind, settings
53
51
  processors.fetch(kind).call settings.rekey(build: :project_name).merge(now: Time.now)
54
52
  end
55
53
 
@@ -4,7 +4,7 @@ module Rubysmith
4
4
  module Identity
5
5
  NAME = "rubysmith"
6
6
  LABEL = "Rubysmith"
7
- VERSION = "0.5.0"
7
+ VERSION = "0.6.0"
8
8
  VERSION_LABEL = "#{LABEL} #{VERSION}"
9
9
  SUMMARY = "A command line interface for smithing Ruby projects."
10
10
  end
@@ -17,6 +17,7 @@ module Rubysmith
17
17
  documentation_format
18
18
  documentation_license
19
19
  build_minimum
20
+ build_amazing_print
20
21
  build_bundler_audit
21
22
  build_bundler_leak
22
23
  build_console
@@ -26,6 +27,7 @@ module Rubysmith
26
27
  build_guard
27
28
  build_pry
28
29
  build_reek
30
+ build_refinements
29
31
  build_rspec
30
32
  build_rubocop
31
33
  build_setup
@@ -1,7 +1,11 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  <% unless realm.build_minimum %>
4
- group :development do
4
+ <% if realm.build_refinements %>
5
+ gem "refinements", "~> 7.16"
6
+ <% end %>
7
+
8
+ group :code_quality do
5
9
  <% if realm.build_bundler_audit %>
6
10
  gem "bundler-audit", "~> 0.7"
7
11
  <% end %>
@@ -11,28 +15,42 @@ source "https://rubygems.org"
11
15
  <% if realm.build_git && realm.build_git_lint %>
12
16
  gem "git-lint", "~> 1.3"
13
17
  <% end %>
14
- <% if realm.build_guard %>
15
- gem "guard-rspec", "~> 4.7"
16
- <% end %>
17
- <% if realm.build_pry %>
18
- gem "pry", "~> 0.13"
19
- gem "pry-byebug", "~> 3.9"
20
- <% end %>
21
- gem "rake", "~> 13.0"
22
18
  <% if realm.build_reek %>
23
19
  gem "reek", "~> 6.0"
24
20
  <% end %>
25
- <% if realm.build_rspec %>
26
- gem "rspec", "~> 3.10"
27
- <% end %>
28
21
  <% if realm.build_rubocop %>
29
- gem "rubocop", "~> 1.3"
30
- gem "rubocop-performance", "~> 1.8"
22
+ gem "rubocop", "~> 1.5"
23
+ gem "rubocop-performance", "~> 1.9"
31
24
  gem "rubocop-rake", "~> 0.5"
25
+ <% end %>
26
+ <% if realm.build_rspec && realm.build_rubocop %>
32
27
  gem "rubocop-rspec", "~> 2.0"
33
28
  <% end %>
29
+ end
30
+
31
+ group :development do
32
+ <% if realm.build_guard %>
33
+ gem "guard-rspec", "~> 4.7", require: false
34
+ <% end %>
35
+ gem "rake", "~> 13.0"
36
+ end
37
+
38
+ group :test do
39
+ <% if realm.build_rspec %>
40
+ gem "rspec", "~> 3.10"
41
+ <% end %>
34
42
  <% if realm.build_simple_cov %>
35
- gem "simplecov", "~> 0.19"
43
+ gem "simplecov", "~> 0.20"
44
+ <% end %>
45
+ end
46
+
47
+ group :tools do
48
+ <% if realm.build_amazing_print %>
49
+ gem "amazing_print", "~> 1.2"
50
+ <% end %>
51
+ <% if realm.build_pry %>
52
+ gem "pry", "~> 0.13"
53
+ gem "pry-byebug", "~> 3.9"
36
54
  <% end %>
37
55
  end
38
56
  <% end %>
@@ -1,3 +1,5 @@
1
+ require "bundler/setup"
2
+
1
3
  <% if realm.build_bundler_audit %>
2
4
  require "bundler/audit/task"
3
5
  <% end %>
@@ -1,11 +1,9 @@
1
1
  #! /usr/bin/env ruby
2
2
 
3
3
  require "bundler/setup"
4
- require "<%= realm.project_name %>"
5
- <% if realm.build_pry %>
6
- require "pry"
7
- require "pry-byebug"
8
- <% end %>
4
+ Bundler.require :tools
5
+
6
+ require_relative "../lib/<%= realm.project_name %>"
9
7
  require "irb"
10
8
 
11
9
  IRB.start __FILE__
@@ -1,17 +1,22 @@
1
1
  require "bundler/setup"
2
+ Bundler.require :test, :tools
2
3
 
3
4
  <% if realm.build_simple_cov %>
4
5
  require "simplecov"
5
6
  SimpleCov.start { enable_coverage :branch }
6
7
  <% end %>
7
8
 
8
- <% if realm.build_pry %>
9
- require "pry"
10
- require "pry-byebug"
11
- <% end %>
12
9
  require "<%= realm.project_name %>"
10
+ <% if realm.build_refinements %>
11
+ require "refinements"
12
+
13
+ using Refinements::Pathnames
13
14
 
14
- Dir[File.join(__dir__, "support", "shared_contexts", "**/*.rb")].sort.each { |path| require path }
15
+ Pathname.require_tree __dir__, "support/shared_contexts/**/*.rb"
16
+ <% else %>
17
+
18
+ Dir[File.join(__dir__, "support", "shared_contexts", "**/*.rb")].sort.each { |path| require path }
19
+ <% end %>
15
20
 
16
21
  RSpec.configure do |config|
17
22
  config.color = true
@@ -1,9 +1,11 @@
1
1
  RSpec.shared_context "with temporary directory", :temp_dir do
2
- let(:temp_dir) { Bundler.root.join "tmp", "rspec" }
2
+ <% if realm.build_refinements %>using Refinements::Pathnames<% end %>
3
+
4
+ let(:temp_dir) { Bundler.root.join "tmp/rspec" }
3
5
 
4
6
  around do |example|
5
- FileUtils.mkdir_p temp_dir
7
+ <%= realm.build_refinements ? "temp_dir.make_path" : "FileUtils.mkdir_p temp_dir" %>
6
8
  example.run
7
- FileUtils.rm_rf temp_dir
9
+ <%= realm.build_refinements ? "temp_dir.remove_tree" : "FileUtils.rm_rf temp_dir" %>
8
10
  end
9
11
  end
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: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -28,7 +28,7 @@ cert_chain:
28
28
  2XV8FRa7/JimI07sPLC13eLY3xd/aYTi85Z782KIA4j0G8XEEWAX0ouBhlXPocZv
29
29
  QWc=
30
30
  -----END CERTIFICATE-----
31
- date: 2020-11-21 00:00:00.000000000 Z
31
+ date: 2020-12-07 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: pragmater
@@ -50,28 +50,28 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '7.15'
53
+ version: '7.16'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '7.15'
60
+ version: '7.16'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rubocop
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '1.3'
67
+ version: '1.5'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '1.3'
74
+ version: '1.5'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: runcom
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -86,202 +86,6 @@ dependencies:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
88
  version: '6.4'
89
- - !ruby/object:Gem::Dependency
90
- name: bundler-audit
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '0.7'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '0.7'
103
- - !ruby/object:Gem::Dependency
104
- name: bundler-leak
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '0.2'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '0.2'
117
- - !ruby/object:Gem::Dependency
118
- name: gemsmith
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '14.8'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '14.8'
131
- - !ruby/object:Gem::Dependency
132
- name: git-lint
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: '1.3'
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: '1.3'
145
- - !ruby/object:Gem::Dependency
146
- name: guard-rspec
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '4.7'
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '4.7'
159
- - !ruby/object:Gem::Dependency
160
- name: pry
161
- requirement: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: '0.13'
166
- type: :development
167
- prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - "~>"
171
- - !ruby/object:Gem::Version
172
- version: '0.13'
173
- - !ruby/object:Gem::Dependency
174
- name: pry-byebug
175
- requirement: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: '3.9'
180
- type: :development
181
- prerelease: false
182
- version_requirements: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - "~>"
185
- - !ruby/object:Gem::Version
186
- version: '3.9'
187
- - !ruby/object:Gem::Dependency
188
- name: rake
189
- requirement: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - "~>"
192
- - !ruby/object:Gem::Version
193
- version: '13.0'
194
- type: :development
195
- prerelease: false
196
- version_requirements: !ruby/object:Gem::Requirement
197
- requirements:
198
- - - "~>"
199
- - !ruby/object:Gem::Version
200
- version: '13.0'
201
- - !ruby/object:Gem::Dependency
202
- name: reek
203
- requirement: !ruby/object:Gem::Requirement
204
- requirements:
205
- - - "~>"
206
- - !ruby/object:Gem::Version
207
- version: '6.0'
208
- type: :development
209
- prerelease: false
210
- version_requirements: !ruby/object:Gem::Requirement
211
- requirements:
212
- - - "~>"
213
- - !ruby/object:Gem::Version
214
- version: '6.0'
215
- - !ruby/object:Gem::Dependency
216
- name: rspec
217
- requirement: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - "~>"
220
- - !ruby/object:Gem::Version
221
- version: '3.10'
222
- type: :development
223
- prerelease: false
224
- version_requirements: !ruby/object:Gem::Requirement
225
- requirements:
226
- - - "~>"
227
- - !ruby/object:Gem::Version
228
- version: '3.10'
229
- - !ruby/object:Gem::Dependency
230
- name: rubocop-performance
231
- requirement: !ruby/object:Gem::Requirement
232
- requirements:
233
- - - "~>"
234
- - !ruby/object:Gem::Version
235
- version: '1.8'
236
- type: :development
237
- prerelease: false
238
- version_requirements: !ruby/object:Gem::Requirement
239
- requirements:
240
- - - "~>"
241
- - !ruby/object:Gem::Version
242
- version: '1.8'
243
- - !ruby/object:Gem::Dependency
244
- name: rubocop-rake
245
- requirement: !ruby/object:Gem::Requirement
246
- requirements:
247
- - - "~>"
248
- - !ruby/object:Gem::Version
249
- version: '0.5'
250
- type: :development
251
- prerelease: false
252
- version_requirements: !ruby/object:Gem::Requirement
253
- requirements:
254
- - - "~>"
255
- - !ruby/object:Gem::Version
256
- version: '0.5'
257
- - !ruby/object:Gem::Dependency
258
- name: rubocop-rspec
259
- requirement: !ruby/object:Gem::Requirement
260
- requirements:
261
- - - "~>"
262
- - !ruby/object:Gem::Version
263
- version: '2.0'
264
- type: :development
265
- prerelease: false
266
- version_requirements: !ruby/object:Gem::Requirement
267
- requirements:
268
- - - "~>"
269
- - !ruby/object:Gem::Version
270
- version: '2.0'
271
- - !ruby/object:Gem::Dependency
272
- name: simplecov
273
- requirement: !ruby/object:Gem::Requirement
274
- requirements:
275
- - - "~>"
276
- - !ruby/object:Gem::Version
277
- version: '0.19'
278
- type: :development
279
- prerelease: false
280
- version_requirements: !ruby/object:Gem::Requirement
281
- requirements:
282
- - - "~>"
283
- - !ruby/object:Gem::Version
284
- version: '0.19'
285
89
  description:
286
90
  email:
287
91
  - brooke@alchemists.io
@@ -309,7 +113,8 @@ files:
309
113
  - lib/rubysmith/builders/reek.rb
310
114
  - lib/rubysmith/builders/rspec/context.rb
311
115
  - lib/rubysmith/builders/rspec/helper.rb
312
- - lib/rubysmith/builders/rubocop.rb
116
+ - lib/rubysmith/builders/rubocop/formatter.rb
117
+ - lib/rubysmith/builders/rubocop/setup.rb
313
118
  - lib/rubysmith/builders/setup.rb
314
119
  - lib/rubysmith/cli/configuration.rb
315
120
  - lib/rubysmith/cli/defaults.yml
metadata.gz.sig CHANGED
Binary file
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rubocop"
4
- require "refinements/ios"
5
-
6
- module Rubysmith
7
- module Builders
8
- # Builds project skeleton Rubocop code quality support.
9
- class Rubocop
10
- using Refinements::IOs
11
-
12
- def self.call realm, builder: Builder
13
- new(realm, builder: builder).call
14
- end
15
-
16
- def initialize realm, builder: Builder, runner: RuboCop::CLI.new
17
- @realm = realm
18
- @builder = builder
19
- @runner = runner
20
- end
21
-
22
- def call
23
- return unless realm.build_rubocop
24
-
25
- builder.call(realm.with(template_path: "%project_name%/bin/rubocop.erb"))
26
- .render
27
- .permit 0o755
28
-
29
- builder.call(realm.with(template_path: "%project_name%/.rubocop.yml.erb")).render
30
- auto_correct
31
- end
32
-
33
- private
34
-
35
- attr_reader :realm, :builder, :runner
36
-
37
- def auto_correct
38
- STDOUT.squelch { runner.run ["--auto-correct", realm.project_root.to_s] }
39
- end
40
- end
41
- end
42
- end