module GoldenRose module BuildLog class Parser def initialize(log_path) @log_path = log_path end def parse! @build_targets = build_targets_logs.map do |target| BuildTarget.new(target) end end def logs @logs ||= read_unzip_xcactivitylog end def read_unzip_xcactivitylog XcactivitylogReader.read(@log_path) end def build_targets_logs @build_targets_logs ||= parse_build_target_array end def parse_build_target_array _, *build_targets_array = logs.split('=== BUILD TARGET') ommit_short_build_target(build_targets_array) end def ommit_short_build_target(build_targets_array) build_targets_array.map.with_index do |item, idx| patern = item[/.*===/] next_item = build_targets_array[idx + 1] next_item && next_item[0..patern.size - 1] == patern ? nil : item end.compact end end end end