Module: Undercover::CLI
- Defined in:
- lib/undercover/cli.rb
Class Method Summary collapse
- .build_formatter(flagged, validation_error, opts) ⇒ Object
- .changeset(opts) ⇒ Object
- .handle_missing_coverage_path(opts) ⇒ Object
- .handle_missing_file(coverage_path) ⇒ Object
- .handle_report_validation(report, coverage_path, opts) ⇒ Object
- .run(args) ⇒ Object
-
.run_report(opts) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/MethodLength.
- .syntax_version(version) ⇒ Object
Class Method Details
.build_formatter(flagged, validation_error, opts) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/undercover/cli.rb', line 54 def self.build_formatter(flagged, validation_error, opts) if opts.formatter == 'json' Undercover::JsonFormatter.new(flagged, validation_error) else Undercover::Formatter.new(flagged, validation_error) end end |
.changeset(opts) ⇒ Object
68 69 70 71 |
# File 'lib/undercover/cli.rb', line 68 def self.changeset(opts) git_dir = File.join(opts.path, opts.git_dir) Undercover::Changeset.new(git_dir, opts.compare) end |
.handle_missing_coverage_path(opts) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/undercover/cli.rb', line 32 def self.handle_missing_coverage_path(opts) puts Rainbow('❌ ERROR: No coverage report found. Checked default paths:').red puts Rainbow(' - ./coverage/coverage.json (SimpleCov)').red puts Rainbow(" - ./coverage/lcov/#{Pathname.new(File.(opts.path)).split.last}.lcov (LCOV)").red puts Rainbow('Set a custom path with --lcov or --simplecov option').red 1 end |
.handle_missing_file(coverage_path) ⇒ Object
40 41 42 43 |
# File 'lib/undercover/cli.rb', line 40 def self.handle_missing_file(coverage_path) puts Rainbow("❌ ERROR: Coverage report not found at: #{coverage_path}").red 1 end |
.handle_report_validation(report, coverage_path, opts) ⇒ Object
45 46 47 48 49 50 51 52 |
# File 'lib/undercover/cli.rb', line 45 def self.handle_report_validation(report, coverage_path, opts) validation_error = report.validate(coverage_path) flagged = validation_error ? [] : report.flagged_results formatter = build_formatter(flagged, validation_error, opts) puts formatter formatter.exit_code end |
.run(args) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/undercover/cli.rb', line 8 def self.run(args) opts = Undercover::Options.new.parse(args) syntax_version(opts.syntax_version) run_report(opts) end |
.run_report(opts) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/MethodLength
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/undercover/cli.rb', line 15 def self.run_report(opts) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength coverage_path = opts.simplecov_resultset || opts.lcov return handle_missing_coverage_path(opts) if coverage_path.nil? return handle_missing_file(coverage_path) unless File.exist?(coverage_path) simplecov_adapter = if opts.simplecov_resultset SimplecovResultAdapter.parse(File.open(opts.simplecov_resultset), opts) else # TODO: lcov will be deprecated end of 2025 and we'll be able to refactor harder LcovParser.parse(File.open(opts.lcov), opts) end changeset_obj = changeset(opts) report = Undercover::Report.new(changeset_obj, opts, simplecov_adapter).build handle_report_validation(report, coverage_path, opts) end |
.syntax_version(version) ⇒ Object
62 63 64 65 66 |
# File 'lib/undercover/cli.rb', line 62 def self.syntax_version(version) return unless version Imagen.parser_version = version end |