class Percheron::Validators::DockerClient

Public Instance Methods

valid?() click to toggle source
# File lib/percheron/validators/docker_client.rb, line 5
def valid?
  message = rules.return { |rule| send(rule) }
  message ? fail(Errors::DockerClientInvalid, formatted_message(message)) : true
end

Private Instance Methods

current_version() click to toggle source
# File lib/percheron/validators/docker_client.rb, line 50
def current_version
  `#{Actions::Shell::DOCKER_CLIENT} --version`.chomp.match(/version (.+),/)[1]
end
docker_client_exists?() click to toggle source
# File lib/percheron/validators/docker_client.rb, line 38
def docker_client_exists?
  paths.each do |path|
    exe = File.join(path, Actions::Shell::DOCKER_CLIENT)
    return true if File.executable?(exe) && !File.directory?(exe)
  end
  false
end
formatted_message(message) click to toggle source
# File lib/percheron/validators/docker_client.rb, line 12
def formatted_message(message)
  "Docker client is invalid: #{message}"
end
minimum_version() click to toggle source
# File lib/percheron/validators/docker_client.rb, line 46
def minimum_version
  @minimum_version ||= Semantic::Version.new('1.6.0')
end
paths() click to toggle source
# File lib/percheron/validators/docker_client.rb, line 34
def paths
  ENV['PATH'].split(File::PATH_SEPARATOR)
end
rules() click to toggle source
# File lib/percheron/validators/docker_client.rb, line 16
def rules
  [
    :validate_existence,
    :validate_version
  ]
end
validate_existence() click to toggle source
# File lib/percheron/validators/docker_client.rb, line 23
def validate_existence
  return nil if docker_client_exists?
  'Is not in your PATH'
end
validate_version() click to toggle source
# File lib/percheron/validators/docker_client.rb, line 28
def validate_version
  return nil if docker_client_exists? &&
                Semantic::Version.new(current_version) >= minimum_version
  "Version is insufficient, need #{minimum_version}"
end