class Accesslint::Ci::Cli

Attributes

host[R]

Public Instance Methods

scan(host) click to toggle source
# File lib/accesslint/ci/cli.rb, line 12
def scan(host)
  @host = host

  save_diff

  if skip_ci?
    puts current_errors
  elsif pr? && changes?
    post_comment
  end
end

Private Instance Methods

baseline_errors() click to toggle source
# File lib/accesslint/ci/cli.rb, line 58
def baseline_errors
  if baseline_file
    @baseline_errors ||= ReadAccesslintLog.perform(baseline_file)
  else
    []
  end
end
baseline_file() click to toggle source
# File lib/accesslint/ci/cli.rb, line 66
def baseline_file
  options[:base]
end
changes?() click to toggle source
# File lib/accesslint/ci/cli.rb, line 36
def changes?
  new_diff.any?
end
circle_ci?() click to toggle source
# File lib/accesslint/ci/cli.rb, line 84
def circle_ci?
  !skip_ci?
end
current_errors() click to toggle source
# File lib/accesslint/ci/cli.rb, line 54
def current_errors
  @current_errors ||= Scanner.perform(host: host).split("\n")
end
existing_diff() click to toggle source
# File lib/accesslint/ci/cli.rb, line 70
def existing_diff
  if previous_diff_file
    @existing_diff ||= ReadAccesslintLog.perform(previous_diff_file)
  elsif circle_ci? && pr?
    @existing_diff ||= LogManager.get.split("\n")
  else
    []
  end
end
new_diff() click to toggle source
# File lib/accesslint/ci/cli.rb, line 40
def new_diff
  normalize_host(errors: new_errors) - normalize_host(errors: existing_diff)
end
new_diff_file() click to toggle source
# File lib/accesslint/ci/cli.rb, line 95
def new_diff_file
  options[:outfile] || previous_diff_file || "accesslint.diff"
end
new_errors() click to toggle source
# File lib/accesslint/ci/cli.rb, line 44
def new_errors
  normalize_host(errors: current_errors) - normalize_host(errors: baseline_errors)
end
normalize_host(errors:) click to toggle source
# File lib/accesslint/ci/cli.rb, line 48
def normalize_host(errors:)
  errors.map do |error|
    error.gsub(/localhost:\d+/, "localhost")
  end
end
post_comment() click to toggle source
# File lib/accesslint/ci/cli.rb, line 99
def post_comment
  Commenter.perform(new_diff)
end
pr?() click to toggle source
# File lib/accesslint/ci/cli.rb, line 32
def pr?
  ENV.fetch("CIRCLE_BRANCH") != "master"
end
previous_diff_file() click to toggle source
# File lib/accesslint/ci/cli.rb, line 80
def previous_diff_file
  options[:compare]
end
save_diff() click to toggle source
# File lib/accesslint/ci/cli.rb, line 88
def save_diff
  WriteAccesslintLog.perform(
    file_name: new_diff_file,
    contents: new_diff.join("\n"),
  )
end
skip_ci?() click to toggle source
# File lib/accesslint/ci/cli.rb, line 28
def skip_ci?
  options[:"skip-ci"]
end