kamaze-project 1.0.4 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +9 -9
- data/lib/kamaze-project.rb +1 -30
- data/lib/kamaze/project.rb +37 -31
- data/lib/kamaze/project/autoload.rb +38 -0
- data/lib/kamaze/project/boot/core_ext.rb +8 -8
- data/lib/kamaze/project/boot/listen.rb +11 -13
- data/lib/kamaze/project/bundled.rb +79 -0
- data/lib/kamaze/project/concern.rb +17 -2
- data/lib/kamaze/project/concern/cli.rb +4 -1
- data/lib/kamaze/project/concern/cli/with_exit_on_failure.rb +2 -6
- data/lib/kamaze/project/concern/env.rb +14 -12
- data/lib/kamaze/project/concern/helper.rb +1 -2
- data/lib/kamaze/project/concern/mode.rb +1 -1
- data/lib/kamaze/project/concern/observable.rb +12 -11
- data/lib/kamaze/project/concern/sh.rb +7 -7
- data/lib/kamaze/project/concern/tasks.rb +36 -10
- data/lib/kamaze/project/concern/tools.rb +2 -3
- data/lib/kamaze/project/config.rb +1 -1
- data/lib/kamaze/project/core_ext/object.rb +17 -8
- data/lib/kamaze/project/core_ext/pp.rb +14 -16
- data/lib/kamaze/project/debug.rb +40 -49
- data/lib/kamaze/project/dsl.rb +9 -5
- data/lib/kamaze/project/dsl/definition.rb +6 -12
- data/lib/kamaze/project/dsl/setup.rb +1 -3
- data/lib/kamaze/project/helper.rb +1 -1
- data/lib/kamaze/project/helper/inflector.rb +9 -27
- data/lib/kamaze/project/helper/project.rb +1 -1
- data/lib/kamaze/project/helper/project/config.rb +1 -1
- data/lib/kamaze/project/inflector.rb +15 -0
- data/lib/kamaze/project/observable.rb +1 -4
- data/lib/kamaze/project/observer.rb +1 -1
- data/lib/kamaze/project/resources/Vagrantfile +1 -1
- data/lib/kamaze/project/struct.rb +1 -1
- data/lib/kamaze/project/tasks/cs.rb +1 -1
- data/lib/kamaze/project/tasks/cs/control.rb +1 -1
- data/lib/kamaze/project/tasks/cs/correct.rb +1 -1
- data/lib/kamaze/project/tasks/cs/pre_commit.rb +4 -6
- data/lib/kamaze/project/tasks/doc.rb +2 -4
- data/lib/kamaze/project/tasks/doc/watch.rb +4 -6
- data/lib/kamaze/project/tasks/gem.rb +15 -6
- data/lib/kamaze/project/tasks/gem/build.rb +33 -17
- data/lib/kamaze/project/tasks/gem/compile.rb +1 -1
- data/lib/kamaze/project/tasks/gem/gemspec.rb +12 -11
- data/lib/kamaze/project/tasks/gem/install.rb +1 -1
- data/lib/kamaze/project/tasks/gem/push.rb +16 -17
- data/lib/kamaze/project/tasks/misc/gitignore.rb +1 -1
- data/lib/kamaze/project/tasks/shell.rb +1 -1
- data/lib/kamaze/project/tasks/sources.rb +1 -1
- data/lib/kamaze/project/tasks/sources/license.rb +1 -1
- data/lib/kamaze/project/tasks/test.rb +3 -5
- data/lib/kamaze/project/tasks/vagrant.rb +1 -1
- data/lib/kamaze/project/tasks/version/edit.rb +1 -1
- data/lib/kamaze/project/tools.rb +18 -6
- data/lib/kamaze/project/tools/base_tool.rb +6 -2
- data/lib/kamaze/project/tools/console.rb +4 -13
- data/lib/kamaze/project/tools/console/output.rb +14 -6
- data/lib/kamaze/project/tools/console/output/buffer.rb +8 -3
- data/lib/kamaze/project/tools/gemspec.rb +11 -21
- data/lib/kamaze/project/tools/gemspec/builder.rb +43 -31
- data/lib/kamaze/project/tools/gemspec/concern.rb +6 -1
- data/lib/kamaze/project/tools/gemspec/concern/reading.rb +2 -5
- data/lib/kamaze/project/tools/gemspec/packager.rb +10 -10
- data/lib/kamaze/project/tools/gemspec/packer.rb +11 -15
- data/lib/kamaze/project/tools/gemspec/packer/command.rb +1 -1
- data/lib/kamaze/project/tools/gemspec/reader.rb +22 -14
- data/lib/kamaze/project/tools/gemspec/reader/decorator.rb +3 -6
- data/lib/kamaze/project/tools/gemspec/writer.rb +43 -19
- data/lib/kamaze/project/tools/gemspec/writer/dep_gen.rb +9 -6
- data/lib/kamaze/project/tools/gemspec/writer/dependency.rb +1 -1
- data/lib/kamaze/project/tools/git.rb +13 -31
- data/lib/kamaze/project/tools/git/hooks.rb +12 -6
- data/lib/kamaze/project/tools/git/hooks/base_hook.rb +3 -11
- data/lib/kamaze/project/tools/git/hooks/pre_commit.rb +3 -7
- data/lib/kamaze/project/tools/git/status.rb +13 -9
- data/lib/kamaze/project/tools/git/status/decorator.rb +1 -1
- data/lib/kamaze/project/tools/git/status/file.rb +2 -1
- data/lib/kamaze/project/tools/git/status/files_array.rb +1 -1
- data/lib/kamaze/project/tools/git/status/index.rb +1 -1
- data/lib/kamaze/project/tools/git/status/worktree.rb +1 -1
- data/lib/kamaze/project/tools/git/util.rb +1 -1
- data/lib/kamaze/project/tools/licenser.rb +2 -2
- data/lib/kamaze/project/tools/packager.rb +12 -22
- data/lib/kamaze/project/tools/packager/filesystem.rb +11 -3
- data/lib/kamaze/project/tools/packager/filesystem/operator.rb +19 -11
- data/lib/kamaze/project/tools/packager/filesystem/operator/utils.rb +22 -16
- data/lib/kamaze/project/tools/process_locker.rb +67 -38
- data/lib/kamaze/project/tools/rspec.rb +5 -3
- data/lib/kamaze/project/tools/rubocop.rb +30 -41
- data/lib/kamaze/project/tools/rubocop/arguments.rb +1 -1
- data/lib/kamaze/project/tools/rubocop/config.rb +2 -4
- data/lib/kamaze/project/tools/shell.rb +7 -8
- data/lib/kamaze/project/tools/vagrant.rb +6 -16
- data/lib/kamaze/project/tools/vagrant/composer.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/composer/file.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/remote.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/shell.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/writer.rb +1 -1
- data/lib/kamaze/project/tools/yardoc.rb +14 -18
- data/lib/kamaze/project/tools/yardoc/file.rb +7 -7
- data/lib/kamaze/project/tools/yardoc/watchable.rb +9 -15
- data/lib/kamaze/project/tools/yardoc/watcher.rb +28 -35
- data/lib/kamaze/project/tools_provider.rb +28 -40
- data/lib/kamaze/project/tools_provider/resolver.rb +1 -1
- data/lib/kamaze/project/version.rb +5 -91
- data/lib/kamaze/project/version.yml +6 -6
- metadata +23 -51
- data/.rubocop.yml +0 -37
- data/bin/plop +0 -5
@@ -1,20 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
8
8
|
|
9
|
-
require 'pathname'
|
10
|
-
require 'fileutils'
|
11
|
-
require 'rake/file_utils'
|
12
|
-
|
13
9
|
require_relative '../operator'
|
14
10
|
|
15
11
|
# Utilities related to files/paths manipulations
|
16
12
|
module Kamaze::Project::Tools::Packager::Filesystem::Operator::Utils
|
17
|
-
|
13
|
+
autoload(:Pathname, 'pathname')
|
14
|
+
|
15
|
+
lambda do
|
16
|
+
require 'fileutils'
|
17
|
+
require 'rake/file_utils'
|
18
|
+
|
19
|
+
include FileUtils
|
20
|
+
end.call
|
18
21
|
|
19
22
|
protected
|
20
23
|
|
@@ -24,11 +27,11 @@ module Kamaze::Project::Tools::Packager::Filesystem::Operator::Utils
|
|
24
27
|
# @return [Pathname]
|
25
28
|
def purge(dir, options = {})
|
26
29
|
options = { verbose: true }.merge(options)
|
27
|
-
dir =
|
30
|
+
dir = Pathname.new(dir)
|
28
31
|
|
29
32
|
if dir.exist?
|
30
33
|
ls(dir).each do |entry|
|
31
|
-
rm_rf(dir.join(entry), options)
|
34
|
+
rm_rf(dir.join(entry), **options)
|
32
35
|
end
|
33
36
|
end
|
34
37
|
|
@@ -40,13 +43,12 @@ module Kamaze::Project::Tools::Packager::Filesystem::Operator::Utils
|
|
40
43
|
# @param [String|Pathname] basedir
|
41
44
|
# @param [Array<>] entries
|
42
45
|
# @param [Hash] options
|
46
|
+
#
|
43
47
|
# @return [Pathname]
|
44
48
|
def skel_dirs(basedir, entries, options = {})
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
basedir
|
49
|
+
Pathname.new(basedir).tap do
|
50
|
+
map_dirs(entries).each { |dir| mkdir_p(basedir.join(dir), **options) }
|
51
|
+
end
|
50
52
|
end
|
51
53
|
|
52
54
|
# List entries
|
@@ -54,9 +56,11 @@ module Kamaze::Project::Tools::Packager::Filesystem::Operator::Utils
|
|
54
56
|
# @param [String] dir
|
55
57
|
# @return [Array<Pathname>]
|
56
58
|
def ls(dir)
|
57
|
-
|
58
|
-
|
59
|
-
|
59
|
+
# @formatter:off
|
60
|
+
Pathname.new(dir).entries
|
61
|
+
.map { |path| ::Pathname.new(path) }
|
62
|
+
.delete_if { |path| ['.', '..'].include?(path.basename.to_s) }
|
63
|
+
# @formatter:on
|
60
64
|
end
|
61
65
|
|
62
66
|
# Extract directories from given paths
|
@@ -64,10 +68,12 @@ module Kamaze::Project::Tools::Packager::Filesystem::Operator::Utils
|
|
64
68
|
# @param [Array<String>] paths
|
65
69
|
# @return [Array<Pathname>]
|
66
70
|
def map_dirs(paths)
|
71
|
+
# @formatter:off
|
67
72
|
paths.map { |path| ::Pathname.new(path) }
|
68
73
|
.map(&:dirname)
|
69
74
|
.delete_if { |path| ['.', '..'].include?(path.basename.to_s) }
|
70
75
|
.uniq.sort
|
76
|
+
# @formatter:on
|
71
77
|
end
|
72
78
|
|
73
79
|
# @return [Array<Symbol>]
|
@@ -1,27 +1,45 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
8
8
|
|
9
9
|
require_relative '../tools'
|
10
|
-
require 'etc'
|
11
|
-
require 'fileutils'
|
12
|
-
require 'pathname'
|
13
|
-
require 'tmpdir'
|
14
|
-
require 'process_lock'
|
15
|
-
|
16
|
-
module Kamaze::Project::Tools
|
17
|
-
class ProcessLocker < BaseTool
|
18
|
-
end
|
19
|
-
end
|
20
10
|
|
21
11
|
# Process Locker
|
22
12
|
#
|
23
13
|
# @see https://github.com/ianheggie/process_lock
|
24
14
|
class Kamaze::Project::Tools::ProcessLocker < Kamaze::Project::Tools::BaseTool
|
15
|
+
autoload(:Digest, 'digest')
|
16
|
+
|
17
|
+
# @formatter:off
|
18
|
+
{
|
19
|
+
Etc: 'etc',
|
20
|
+
FileUtils: 'fileutils',
|
21
|
+
Pathname: 'pathname',
|
22
|
+
ProcessLock: 'process_lock',
|
23
|
+
}.each { |s, fp| autoload(s, fp) }
|
24
|
+
# @formatter:on
|
25
|
+
|
26
|
+
# @return [String]
|
27
|
+
attr_reader :lockdir
|
28
|
+
|
29
|
+
def mutable_attributes
|
30
|
+
[:lockdir]
|
31
|
+
end
|
32
|
+
|
33
|
+
# Set name for lockdir.
|
34
|
+
#
|
35
|
+
# @see #tmpdir
|
36
|
+
# @see #setup
|
37
|
+
def lockdir=(lockdir)
|
38
|
+
inflector.classify(lockdir).yield_self { |s| inflector.underscore(s) }.tap do |name|
|
39
|
+
@lockdir = name
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
25
43
|
# Manage lock on given block
|
26
44
|
#
|
27
45
|
# @return [Object]
|
@@ -37,26 +55,31 @@ class Kamaze::Project::Tools::ProcessLocker < Kamaze::Project::Tools::BaseTool
|
|
37
55
|
def lock!(lockname)
|
38
56
|
mklock(lockname).acquire! { yield }
|
39
57
|
rescue ProcessLock::AlreadyLocked
|
58
|
+
# noinspection RubyResolve
|
40
59
|
raise Errno::EALREADY if mklock(lockname).alive?
|
60
|
+
|
41
61
|
raise
|
42
62
|
end
|
43
63
|
|
64
|
+
# Get tmpdir where lock files are stored.
|
65
|
+
#
|
44
66
|
# @return [Pathname]
|
45
67
|
def tmpdir
|
46
|
-
|
47
|
-
uid = Etc.getpwnam(Etc.getlogin).uid
|
48
|
-
dir = [inflector.underscore(self.class.name).tr('/', '-'), uid].join('.')
|
68
|
+
require 'tmpdir' unless Dir.respond_to?(:tmpdir)
|
49
69
|
|
50
|
-
|
70
|
+
Pathname.new(Dir.tmpdir).join('%<libname>s.%<uid>s' % { # @formatter:off
|
71
|
+
libname: inflector.underscore(self.class.name).split('/')[0..1].join('-'),
|
72
|
+
uid: Etc.getpwnam(Etc.getlogin).uid, # @formatter:on
|
73
|
+
}, lockdir)
|
51
74
|
end
|
52
75
|
|
53
76
|
class << self
|
54
77
|
def method_missing(method, *args, &block)
|
55
78
|
if respond_to_missing?(method)
|
56
|
-
self.new.public_send(method, *args, &block)
|
57
|
-
else
|
58
|
-
super
|
79
|
+
return self.new.public_send(method, *args, &block)
|
59
80
|
end
|
81
|
+
|
82
|
+
super
|
60
83
|
end
|
61
84
|
|
62
85
|
def respond_to_missing?(method, include_private = false)
|
@@ -68,12 +91,29 @@ class Kamaze::Project::Tools::ProcessLocker < Kamaze::Project::Tools::BaseTool
|
|
68
91
|
|
69
92
|
protected
|
70
93
|
|
94
|
+
# @return [Dry::Inflector]
|
95
|
+
attr_reader :inflector
|
96
|
+
|
97
|
+
# @return [Module<FileUtils>]
|
98
|
+
attr_reader :fs
|
99
|
+
|
100
|
+
def setup
|
101
|
+
@fs ||= FileUtils
|
102
|
+
@inflector ||= Kamaze::Project::Inflector.new
|
103
|
+
|
104
|
+
unless lockdir # rubocop:disable Style/GuardClause
|
105
|
+
self.lockdir = lambda do
|
106
|
+
return Kamaze::Project.instance.name if Kamaze::Project.instance
|
107
|
+
|
108
|
+
Digest::SHA1.hexdigest(__FILE__) # Does not avoid collision if package is globally installed
|
109
|
+
end.call
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
71
113
|
# @param [String] lockname
|
72
114
|
# @return [ProcessLock]
|
73
115
|
def mklock(lockname)
|
74
|
-
|
75
|
-
|
76
|
-
ProcessLock.new(lockfile)
|
116
|
+
mktemp(lockname).yield_self { |lockfile| ProcessLock.new(lockfile) }
|
77
117
|
end
|
78
118
|
|
79
119
|
# Create a temporary file
|
@@ -81,28 +121,17 @@ class Kamaze::Project::Tools::ProcessLocker < Kamaze::Project::Tools::BaseTool
|
|
81
121
|
# @param [String] lockname
|
82
122
|
# @return [Pathname]
|
83
123
|
def mktemp(lockname)
|
84
|
-
|
85
|
-
|
86
|
-
mktmpdir.join(lockname)
|
124
|
+
Pathname.new(lockname.to_s).basename('.*').yield_self { |fp| mktmpdir.join(fp) }
|
87
125
|
end
|
88
126
|
|
89
127
|
# Create ``tmpdir``
|
90
128
|
#
|
91
|
-
# @param [Hash] options
|
92
129
|
# @return [Pathname]
|
93
|
-
def mktmpdir(options
|
94
|
-
tmpdir
|
95
|
-
|
130
|
+
def mktmpdir(**options)
|
131
|
+
self.tmpdir.tap do |tmpdir|
|
132
|
+
options[:mode] ||= 0o700
|
96
133
|
|
97
|
-
|
98
|
-
|
99
|
-
tmpdir
|
100
|
-
end
|
101
|
-
|
102
|
-
# @return [Dry::Inflector]
|
103
|
-
def inflector
|
104
|
-
require 'dry/inflector'
|
105
|
-
|
106
|
-
Dry::Inflector.new
|
134
|
+
fs.mkdir_p(tmpdir, **options)
|
135
|
+
end
|
107
136
|
end
|
108
137
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
@@ -67,10 +67,12 @@ class Kamaze::Project::Tools::Rspec < Kamaze::Project::Tools::BaseTool
|
|
67
67
|
@arguments += ['--tag', tag]
|
68
68
|
end
|
69
69
|
|
70
|
+
# @formatter:off
|
70
71
|
{
|
71
|
-
true
|
72
|
+
true => @arguments,
|
72
73
|
false => @arguments.clone.concat(options_arguments).map(&:to_s).freeze
|
73
|
-
}.fetch(caller_locations(1..1).first
|
74
|
+
}.fetch(caller_locations(1..1).first&.path == __FILE__)
|
75
|
+
# @formatter:on
|
74
76
|
end
|
75
77
|
|
76
78
|
protected
|
@@ -1,30 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
8
8
|
|
9
9
|
require_relative '../tools'
|
10
|
-
require_relative '../concern/cli/with_exit_on_failure'
|
11
|
-
require 'pathname'
|
12
|
-
|
13
|
-
# rubocop:disable Style/Documentation
|
14
|
-
|
15
|
-
module Kamaze::Project::Tools
|
16
|
-
class Rubocop < BaseTool
|
17
|
-
class Arguments < Array
|
18
|
-
require_relative 'rubocop/arguments'
|
19
|
-
end
|
20
|
-
|
21
|
-
class Config
|
22
|
-
require_relative 'rubocop/config'
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
# rubocop:enable Style/Documentation
|
28
10
|
|
29
11
|
# Tool to run ``Rubocop::CLI``
|
30
12
|
#
|
@@ -36,7 +18,17 @@ end
|
|
36
18
|
# c.options = ['--fail-level', 'E']
|
37
19
|
# end.run
|
38
20
|
# ```
|
39
|
-
class Kamaze::Project::Tools::Rubocop
|
21
|
+
class Kamaze::Project::Tools::Rubocop < Kamaze::Project::Tools::BaseTool
|
22
|
+
# @formatter:off
|
23
|
+
{
|
24
|
+
Arguments: 'arguments',
|
25
|
+
Config: 'config',
|
26
|
+
}.each { |s, fp| autoload(s, "#{__dir__}/rubocop/#{fp}") }
|
27
|
+
# @formatter:on
|
28
|
+
|
29
|
+
autoload(:Pathname, 'pathname')
|
30
|
+
autoload(:RuboCop, 'rubocop')
|
31
|
+
|
40
32
|
include Kamaze::Project::Concern::Cli::WithExitOnFailure
|
41
33
|
|
42
34
|
# Default arguments used by ``Rubocop::CLI``
|
@@ -50,17 +42,18 @@ class Kamaze::Project::Tools::Rubocop
|
|
50
42
|
end
|
51
43
|
|
52
44
|
def prepare
|
53
|
-
|
45
|
+
self.tap do
|
46
|
+
reset
|
54
47
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
arguments.freeze
|
48
|
+
if block_given?
|
49
|
+
Config.new.tap do |config|
|
50
|
+
yield(config)
|
51
|
+
arguments.concat(config.freeze.to_a)
|
52
|
+
end
|
53
|
+
end
|
62
54
|
|
63
|
-
|
55
|
+
arguments.freeze
|
56
|
+
end
|
64
57
|
end
|
65
58
|
|
66
59
|
# Arguments used by ``CLI`` (during execution/``run``)
|
@@ -92,10 +85,8 @@ class Kamaze::Project::Tools::Rubocop
|
|
92
85
|
|
93
86
|
if runnable?
|
94
87
|
with_exit_on_failure do
|
95
|
-
core.run(arguments.to_a).
|
96
|
-
|
97
|
-
reset
|
98
|
-
end
|
88
|
+
core.run(arguments.to_a).tap { |retcode| self.retcode = retcode }
|
89
|
+
reset
|
99
90
|
end
|
100
91
|
end
|
101
92
|
|
@@ -107,23 +98,21 @@ class Kamaze::Project::Tools::Rubocop
|
|
107
98
|
attr_writer :arguments
|
108
99
|
|
109
100
|
def setup
|
110
|
-
@defaults = Arguments.new(@defaults.to_a)
|
101
|
+
@defaults = Arguments.new((@defaults || ['--only-recognized-file-types']).to_a)
|
111
102
|
end
|
112
103
|
|
113
104
|
# Reset arguments + retcode
|
114
105
|
#
|
115
106
|
# @return [self]
|
116
107
|
def reset
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
108
|
+
self.tap do
|
109
|
+
@arguments = nil
|
110
|
+
self.retcode = nil if retcode.to_i.zero?
|
111
|
+
end
|
121
112
|
end
|
122
113
|
|
123
|
-
# @return [
|
114
|
+
# @return [RuboCop::CLI]
|
124
115
|
def core
|
125
|
-
require 'rubocop'
|
126
|
-
|
127
116
|
RuboCop::CLI.new
|
128
117
|
end
|
129
118
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
@@ -26,9 +26,7 @@ class Kamaze::Project::Tools::Rubocop::Config
|
|
26
26
|
|
27
27
|
# @return [Array<String>]
|
28
28
|
def to_a
|
29
|
-
|
30
|
-
|
31
|
-
self.options.to_a.clone.concat(['--'] + filepaths)
|
29
|
+
self.options.to_a.clone.concat(['--']).concat(match_patterns(patterns))
|
32
30
|
end
|
33
31
|
|
34
32
|
protected
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
@@ -43,7 +43,7 @@ class Kamaze::Project::Tools::Shell < Kamaze::Project::Tools::BaseTool
|
|
43
43
|
|
44
44
|
def setup
|
45
45
|
@console ||= Kamaze.project.tools.fetch(:console)
|
46
|
-
@provider ||= require_any(:pry) ? Pry : nil
|
46
|
+
@provider ||= require_any(:pry) ? Object.const_get(:Pry) : nil
|
47
47
|
@banner ||= nil
|
48
48
|
end
|
49
49
|
|
@@ -69,16 +69,15 @@ class Kamaze::Project::Tools::Shell < Kamaze::Project::Tools::BaseTool
|
|
69
69
|
# Require any gem based on ``Gem::Specification``
|
70
70
|
#
|
71
71
|
# @param [String|Symbol] gem_name
|
72
|
-
# @param [
|
72
|
+
# @param [Array|nil] requirements
|
73
73
|
# @return [Boolean]
|
74
|
-
def require_any(gem_name,
|
74
|
+
def require_any(gem_name, requirements = nil)
|
75
75
|
gem_name = gem_name.to_s
|
76
|
-
|
77
|
-
spec = Gem::Specification
|
76
|
+
requirements ||= [gem_name]
|
78
77
|
|
79
|
-
return false unless
|
78
|
+
return false unless Gem::Specification.find_all_by_name(gem_name).any?
|
80
79
|
|
81
|
-
require
|
80
|
+
requirements.each { |req| require req.to_s }
|
82
81
|
|
83
82
|
true
|
84
83
|
end
|