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