rubysmith 0.5.0 → 0.6.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: 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