Class: XCPretty::JSONCompilationDatabase

Inherits:
Object
  • Object
show all
Includes:
FormatMethods
Defined in:
lib/xcpretty/reporters/json_compilation_database.rb

Constant Summary collapse

FILEPATH =
'build/reports/compilation_db.json'

Constants included from FormatMethods

FormatMethods::EMPTY

Instance Method Summary collapse

Methods included from FormatMethods

#format_analyze, #format_build_target, #format_check_dependencies, #format_clean, #format_clean_remove, #format_clean_target, #format_codesign, #format_compile_error, #format_compile_xib, #format_copy_strings_file, #format_cpresource, #format_duplicate_symbols, #format_error, #format_failing_test, #format_generate_dsym, #format_libtool, #format_linking, #format_passing_test, #format_pbxcp, #format_pending_test, #format_phase_script_execution, #format_preprocess, #format_process_info_plist, #format_process_pch, #format_test_run_finished, #format_test_run_started, #format_test_suite_started, #format_test_summary, #format_tiffutil, #format_touch, #format_undefined_symbols

Constructor Details

#initialize(options) ⇒ JSONCompilationDatabase

Returns a new instance of JSONCompilationDatabase.



22
23
24
25
26
27
28
29
# File 'lib/xcpretty/reporters/json_compilation_database.rb', line 22

def initialize(options)
  load_dependencies
  @filepath           = options[:path] || FILEPATH
  @parser             = Parser.new(self)
  @compilation_units  = []
  @current_file       = nil
  @current_path       = nil
end

Instance Method Details

#finishObject



45
46
47
48
# File 'lib/xcpretty/reporters/json_compilation_database.rb', line 45

def finish
  FileUtils.mkdir_p(File.dirname(@filepath))
  write_report
end

#format_compile(file_name, file_path) ⇒ Object



35
36
37
38
# File 'lib/xcpretty/reporters/json_compilation_database.rb', line 35

def format_compile(file_name, file_path)
  @current_file = file_name
  @current_path = File.dirname(file_path)
end

#format_compile_command(compiler_command) ⇒ Object



40
41
42
43
# File 'lib/xcpretty/reporters/json_compilation_database.rb', line 40

def format_compile_command(compiler_command)
  @compilation_units << { :command => compiler_command, 
    :file => @current_file, :directory => @current_path }
end

#handle(line) ⇒ Object



31
32
33
# File 'lib/xcpretty/reporters/json_compilation_database.rb', line 31

def handle(line)
  @parser.parse(line)
end

#load_dependenciesObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/xcpretty/reporters/json_compilation_database.rb', line 7

def load_dependencies
  unless @@loaded ||= false
    require 'fileutils'
    require 'pathname'
    unless Object.const_defined?(:JSON)
      begin
        require 'json'
      rescue LoadError
        require File.expand_path(File.join(File.dirname(__FILE__),'../../../vendor/json_pure/generator'))
      end
    end
    @@loaded = true
  end
end