class Danger::SwiftFormat

Constants

ERRORS_REGEX
RUNTIME_REGEX

Public Class Methods

new(path = nil) click to toggle source
# File lib/swiftformat/swiftformat.rb, line 5
def initialize(path = nil)
  @path = path || "swiftformat"
end

Public Instance Methods

check_format(files, additional_args = "", swiftversion = "") click to toggle source
# File lib/swiftformat/swiftformat.rb, line 13
def check_format(files, additional_args = "", swiftversion = "")
  cmd = [@path] + files
  cmd << additional_args.split unless additional_args.nil? || additional_args.empty?

  unless swiftversion.nil? || swiftversion.empty?
    cmd << "--swiftversion"
    cmd << swiftversion
  end

  cmd << %w(--lint --lenient)
  stdout, stderr, status = Cmd.run(cmd.flatten)

  output = stdout.empty? ? stderr : stdout
  raise "Error running SwiftFormat: Empty output." unless output

  output = output.strip.no_color

  if status && !status.success?
    raise "Error running SwiftFormat:\nError: #{output}"
  else
    raise "Error running SwiftFormat: Empty output." if output.empty?
  end

  process(output)
end
installed?() click to toggle source
# File lib/swiftformat/swiftformat.rb, line 9
def installed?
  Cmd.run([@path, "--version"])
end

Private Instance Methods

errors(output) click to toggle source
# File lib/swiftformat/swiftformat.rb, line 52
def errors(output)
  errors = []
  output.scan(ERRORS_REGEX) do |match|
    next if match.count < 2

    errors << {
        file: match[0].sub("#{Dir.pwd}/", ""),
        rules: match[1].split(",").map(&:strip)
    }
  end
  errors
end
process(output) click to toggle source
# File lib/swiftformat/swiftformat.rb, line 41
def process(output)
  {
      errors: errors(output),
      stats: {
          run_time: run_time(output)
      }
  }
end
run_time(output) click to toggle source
# File lib/swiftformat/swiftformat.rb, line 67
def run_time(output)
  if RUNTIME_REGEX.match(output)
    RUNTIME_REGEX.match(output)[1]
  else
    logger = Logger.new($stderr)
    logger.error("Invalid run_time output: #{output}")
    "-1"
  end
end