Module: Spoom::Sorbet
- Extended by:
- T::Sig
- Defined in:
- lib/spoom/sorbet.rb,
lib/spoom/sorbet/config.rb,
lib/spoom/sorbet/errors.rb,
lib/spoom/sorbet/sigils.rb,
lib/spoom/sorbet/metrics.rb
Defined Under Namespace
Modules: Errors, MetricsParser, Sigils
Classes: Config
Constant Summary
collapse
- CONFIG_PATH =
"sorbet/config"
- GEM_PATH =
T.let(Gem::Specification.find_by_name("sorbet-static").full_gem_path, String)
- BIN_PATH =
T.let((Pathname.new(GEM_PATH) / "libexec" / "sorbet").to_s, String)
- SEGFAULT_CODE =
139
Class Method Summary
collapse
-
.srb(*arg, path: '.', capture_err: false, sorbet_bin: nil) ⇒ Object
-
.srb_files(config, path: '.') ⇒ Object
-
.srb_metrics(*arg, path: '.', capture_err: false, sorbet_bin: nil) ⇒ Object
-
.srb_tc(*arg, path: '.', capture_err: false, sorbet_bin: nil) ⇒ Object
-
.srb_version(*arg, path: '.', capture_err: false, sorbet_bin: nil) ⇒ Object
-
.version_from_gemfile_lock(gem: 'sorbet', path: '.') ⇒ Object
Class Method Details
.srb(*arg, path: '.', capture_err: false, sorbet_bin: nil) ⇒ Object
31
32
33
34
35
36
37
38
|
# File 'lib/spoom/sorbet.rb', line 31
def srb(*arg, path: '.', capture_err: false, sorbet_bin: nil)
if sorbet_bin
arg.prepend(sorbet_bin)
else
arg.prepend("bundle", "exec", "srb")
end
Spoom.exec(*T.unsafe(arg), path: path, capture_err: capture_err)
end
|
.srb_files(config, path: '.') ⇒ Object
55
56
57
58
59
60
61
|
# File 'lib/spoom/sorbet.rb', line 55
def srb_files(config, path: '.')
regs = config.ignore.map { |string| Regexp.new(Regexp.escape(string)) }
exts = config.allowed_extensions.empty? ? ['.rb', '.rbi'] : config.allowed_extensions
Dir.glob((Pathname.new(path) / "**/*{#{exts.join(',')}}").to_s).reject do |f|
regs.any? { |re| re.match?(f) }
end.sort
end
|
.srb_metrics(*arg, path: '.', capture_err: false, sorbet_bin: nil) ⇒ Object
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/spoom/sorbet.rb', line 92
def srb_metrics(*arg, path: '.', capture_err: false, sorbet_bin: nil)
metrics_file = "metrics.tmp"
metrics_path = "#{path}/#{metrics_file}"
T.unsafe(self).srb_tc(
"--metrics-file",
metrics_file,
*arg,
path: path,
capture_err: capture_err,
sorbet_bin: sorbet_bin
)
if File.exist?(metrics_path)
metrics = Spoom::Sorbet::MetricsParser.parse_file(metrics_path)
File.delete(metrics_path)
return metrics
end
nil
end
|
.srb_tc(*arg, path: '.', capture_err: false, sorbet_bin: nil) ⇒ Object
48
49
50
51
|
# File 'lib/spoom/sorbet.rb', line 48
def srb_tc(*arg, path: '.', capture_err: false, sorbet_bin: nil)
arg.prepend("tc") unless sorbet_bin
srb(*T.unsafe(arg), path: path, capture_err: capture_err, sorbet_bin: sorbet_bin)
end
|
.srb_version(*arg, path: '.', capture_err: false, sorbet_bin: nil) ⇒ Object
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/spoom/sorbet.rb', line 71
def srb_version(*arg, path: '.', capture_err: false, sorbet_bin: nil)
result = T.let(T.unsafe(self).srb_tc(
"--no-config",
"--version",
*arg,
path: path,
capture_err: capture_err,
sorbet_bin: sorbet_bin
), ExecResult)
return nil unless result.status
result.out.split(" ")[2]
end
|
.version_from_gemfile_lock(gem: 'sorbet', path: '.') ⇒ Object
115
116
117
118
119
120
121
|
# File 'lib/spoom/sorbet.rb', line 115
def version_from_gemfile_lock(gem: 'sorbet', path: '.')
gemfile_path = "#{path}/Gemfile.lock"
return nil unless File.exist?(gemfile_path)
content = File.read(gemfile_path).match(/^ #{gem} \(.*(\d+\.\d+\.\d+).*\)/)
return nil unless content
content[1]
end
|