lib/spoom/cli/coverage.rb in spoom-1.0.7 vs lib/spoom/cli/coverage.rb in spoom-1.0.8
- old
+ new
@@ -11,35 +11,40 @@
DATA_DIR = "spoom_data"
default_task :snapshot
- desc "snapshot", "run srb tc and display metrics"
- option :save, type: :string, desc: "Save snapshot data as json", lazy_default: DATA_DIR
+ desc "snapshot", "Run srb tc and display metrics"
+ option :save, type: :string, lazy_default: DATA_DIR, desc: "Save snapshot data as json"
+ option :rbi, type: :boolean, default: true, desc: "Exclude RBI files from metrics"
+ option :sorbet, type: :string, desc: "Path to custom Sorbet bin"
def snapshot
in_sorbet_project!
-
path = exec_path
- snapshot = Spoom::Coverage.snapshot(path: path)
+ sorbet = options[:sorbet]
+
+ snapshot = Spoom::Coverage.snapshot(path: path, rbi: options[:rbi], sorbet_bin: sorbet)
snapshot.print
save_dir = options[:save]
return unless save_dir
FileUtils.mkdir_p(save_dir)
file = "#{save_dir}/#{snapshot.commit_sha || snapshot.timestamp}.json"
File.write(file, snapshot.to_json)
puts "\nSnapshot data saved under #{file}"
end
- desc "timeline", "replay a project and collect metrics"
- option :from, type: :string
- option :to, type: :string, default: Time.now.strftime("%F")
- option :save, type: :string, desc: "Save snapshot data as json", lazy_default: DATA_DIR
+ desc "timeline", "Replay a project and collect metrics"
+ option :from, type: :string, desc: "From commit date"
+ option :to, type: :string, default: Time.now.strftime("%F"), desc: "To commit date"
+ option :save, type: :string, lazy_default: DATA_DIR, desc: "Save snapshot data as json"
option :bundle_install, type: :boolean, desc: "Execute `bundle install` before collecting metrics"
+ option :sorbet, type: :string, desc: "Path to custom Sorbet bin"
def timeline
in_sorbet_project!
path = exec_path
+ sorbet = options[:sorbet]
sha_before = Spoom::Git.last_commit(path: path)
unless sha_before
say_error("Not in a git repository")
$stderr.puts "\nSpoom needs to checkout into your previous commits to build the timeline."
@@ -81,14 +86,14 @@
snapshot = T.let(nil, T.nilable(Spoom::Coverage::Snapshot))
if options[:bundle_install]
Bundler.with_clean_env do
next unless bundle_install(path, sha)
- snapshot = Spoom::Coverage.snapshot(path: path)
+ snapshot = Spoom::Coverage.snapshot(path: path, sorbet_bin: sorbet)
end
else
- snapshot = Spoom::Coverage.snapshot(path: path)
+ snapshot = Spoom::Coverage.snapshot(path: path, sorbet_bin: sorbet)
end
next unless snapshot
snapshot.print(indent_level: 2)
puts "\n"
@@ -99,18 +104,24 @@
puts " Snapshot data saved under #{file}\n\n"
end
Spoom::Git.checkout(sha_before, path: path)
end
- desc "report", "produce a typing coverage report"
- option :data, type: :string, desc: "Snapshots JSON data", default: DATA_DIR
- option :file, type: :string, default: "spoom_report.html", aliases: :f
- option :color_ignore, type: :string, default: Spoom::Coverage::D3::COLOR_IGNORE
- option :color_false, type: :string, default: Spoom::Coverage::D3::COLOR_FALSE
- option :color_true, type: :string, default: Spoom::Coverage::D3::COLOR_TRUE
- option :color_strict, type: :string, default: Spoom::Coverage::D3::COLOR_STRICT
- option :color_strong, type: :string, default: Spoom::Coverage::D3::COLOR_STRONG
+ desc "report", "Produce a typing coverage report"
+ option :data, type: :string, default: DATA_DIR, desc: "Snapshots JSON data"
+ option :file, type: :string, default: "spoom_report.html", aliases: :f,
+ desc: "Save report to file"
+ option :color_ignore, type: :string, default: Spoom::Coverage::D3::COLOR_IGNORE,
+ desc: "Color used for typed: ignore"
+ option :color_false, type: :string, default: Spoom::Coverage::D3::COLOR_FALSE,
+ desc: "Color used for typed: false"
+ option :color_true, type: :string, default: Spoom::Coverage::D3::COLOR_TRUE,
+ desc: "Color used for typed: true"
+ option :color_strict, type: :string, default: Spoom::Coverage::D3::COLOR_STRICT,
+ desc: "Color used for typed: strict"
+ option :color_strong, type: :string, default: Spoom::Coverage::D3::COLOR_STRONG,
+ desc: "Color used for typed: strong"
def report
in_sorbet_project!
data_dir = options[:data]
files = Dir.glob("#{data_dir}/*.json")
@@ -137,10 +148,10 @@
File.write(file, report.html)
puts "Report generated under #{file}"
puts "\nUse #{colorize('spoom coverage open', :blue)} to open it."
end
- desc "open", "open the typing coverage report"
+ desc "open", "Open the typing coverage report"
def open(file = "spoom_report.html")
unless File.exist?(file)
say_error("No report file to open #{colorize(file, :blue)}")
$stderr.puts <<~OUT