codeclimate/codeclimate

View on GitHub
lib/cc/cli/engines/install.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module CC
  module CLI
    module Engines
      class Install < EngineCommand
        SHORT_HELP = "Pull the latest images for enabled engines in your configuration".freeze

        ImagePullFailure = Class.new(StandardError)

        def run
          say "Pulling docker images."
          pull_docker_images
        end

        private

        def config
          @config ||= CC::Config.load
        end

        def pull_docker_images
          config.engines.each(&method(:pull_engine))
        end

        def pull_engine(engine)
          metadata = engine_registry.fetch_engine_details(engine)
          unless system("docker pull #{metadata.image}")
            raise ImagePullFailure, "unable to pull image #{metadata.image}"
          end
        rescue EngineRegistry::EngineDetailsNotFoundError
          warn("unknown engine <#{engine.name}:#{engine.channel}>")
        end
      end
    end
  end
end