Class: Examine::CLI::Clair

Inherits:
Thor
  • Object
show all
Defined in:
lib/examine/cli/clair.rb

Overview

Entrypoint into the ‘examine clair` subcommand.

Constant Summary collapse

DOWNLOAD_PATH =
'https://github.com/arminc/clair-scanner/releases/download/'
EXECUTABLES =
{
  'x86-darwin' => 'clair-scanner_darwin_386',
  'x86-linux' => 'clair-scanner_linux_386',
  'x86_64-darwin' => 'clair-scanner_darwin_amd64',
  'x86_64-linux' => 'clair-scanner_linux_amd64'
}.freeze

Instance Method Summary collapse

Instance Method Details

#scan(image) ⇒ Object



37
38
39
40
41
42
# File 'lib/examine/cli/clair.rb', line 37

def scan(image)
  start

  system "docker pull #{image}"
  system scan_command_for(image, options)
end

#startObject



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/examine/cli/clair.rb', line 20

def start
  ensure_docker_installed!
  return if started?

  spawn clair_db
  wait_until clair_db_running?

  spawn clair_local_scan(options[:local_scan_version])
  wait_until clair_local_scan_running?
  wait_until clair_local_scan_api_reachable?
end

#statusObject



45
46
47
# File 'lib/examine/cli/clair.rb', line 45

def status
  system 'docker ps -a | grep clair'
end

#stopObject



50
51
52
53
# File 'lib/examine/cli/clair.rb', line 50

def stop
  system "docker stop $(docker ps | grep -v CONT | grep clair- | awk '{ print $1 }')"
  system 'docker system prune -f'
end