class Bundler::Audit::CLI


The ‘bundle-audit` command.

def self.exit_on_failure?

Other tags:
    Note: - Silence deprecation warnings from Thor.
def self.exit_on_failure?
  true
end

def check(dir=Dir.pwd)

def check(dir=Dir.pwd)
  unless File.directory?(dir)
    say_error "No such file or directory: #{dir}", :red
    exit 1
  end
  begin
    extend Formats.load(options[:format])
  rescue Formats::FormatNotFound
    say_error "Unknown format: #{options[:format]}", :red
    exit 1
  end
  if !Database.exists?(options[:database])
    download(options[:database])
  elsif options[:update]
    update(options[:database])
  end
  database = Database.new(options[:database])
  scanner  = begin
               Scanner.new(dir,options[:gemfile_lock],database, options[:config])
             rescue Bundler::GemfileLockNotFound => exception
               say exception.message, :red
               exit 1
             end
  report = scanner.report(ignore: options.ignore)
  output = if options[:output]
             File.new(options[:output],'w')
           else
             $stdout
           end
  print_report(report,output)
  output.close if options[:output]
  exit(1) if report.vulnerable?
end

def download(path=Database.path)

def download(path=Database.path)
  if Database.exists?(path)
    say "Database already exists", :yellow
    return
  end
  say("Download ruby-advisory-db ...") unless options.quiet?
  begin
    Database.download(path: path, quiet: options.quiet?)
  rescue Database::DownloadFailed => error
    say error.message, :red
    exit 1
  end
  stats(path) unless options.quiet?
end

def print_report(report)

Other tags:
    Abstract: -
def print_report(report)
  raise(NotImplementedError,"#{self.class}##{__method__} not defined")
end

def stats(path=Database.path)

def stats(path=Database.path)
  database = Database.new(path)
  puts "ruby-advisory-db:"
  puts "  advisories:\t#{database.size} advisories"
  puts "  last updated:\t#{database.last_updated_at}"
  if (commit_id = database.commit_id)
    puts "  commit:\t#{commit_id}"
  end
end

def update(path=Database.path)

def update(path=Database.path)
  unless Database.exists?(path)
    download(path)
    return
  end
  say("Updating ruby-advisory-db ...") unless options.quiet?
  database = Database.new(path)
  case database.update!(quiet: options.quiet?)
  when true
    say("Updated ruby-advisory-db", :green) unless options.quiet?
  when false
    say_error "Failed updating ruby-advisory-db!", :red
    exit 1
  when nil
    unless Bundler.git_present?
      say_error "Git is not installed!", :red
      exit 1
    end
    say "Skipping update", :yellow
  end
  stats(path) unless options.quiet?
end

def version

def version
  puts "bundler-audit #{VERSION}"
end