class JamesBond::MissionBuild::Config
Attributes
docker_config[RW]
raw_hash[RW]
yaml_path[RW]
Public Class Methods
new(yaml_path:)
click to toggle source
# File lib/james_bond/mission_build/config.rb, line 12 def initialize(yaml_path:) @yaml_path = yaml_path extract_config_from_yaml(@yaml_path) validate_config @docker_config = @raw_hash["build"]["docker"] end
Private Instance Methods
extract_config_from_yaml(yaml_path)
click to toggle source
# File lib/james_bond/mission_build/config.rb, line 22 def extract_config_from_yaml(yaml_path) raise(self.class::InvalidFileError, yaml_path) if !file_exists?(yaml_path) @raw_hash = YAML.load(File.read(yaml_path)).freeze end
file_exists?(path)
click to toggle source
# File lib/james_bond/mission_build/config.rb, line 27 def file_exists?(path) File.file?(path) end
validate_config()
click to toggle source
# File lib/james_bond/mission_build/config.rb, line 31 def validate_config build_config = (@raw_hash || {})["build"] raise(self.class::NoConfigAvailableError, { file_path: yaml_path, config_path: "build" }) if !build_config docker_config = build_config["docker"] raise(self.class::NoConfigAvailableError, { file_path: yaml_path, config_path: "build.docker" }) if !docker_config docker_image_config = docker_config["image"] raise(self.class::NoConfigAvailableError, { file_path: yaml_path, config_path: "build.docker.image" }) if !docker_image_config if !docker_image_config["namespace"] raise(self.class::NoConfigAvailableError, { file_path: yaml_path, config_path: "build.docker.image.namespace" }) end if !docker_image_config["name"] raise(self.class::NoConfigAvailableError, { file_path: yaml_path, config_path: "build.docker.image.name" }) end dockerfile_config = docker_config["dockerfile"] raise(self.class::NoConfigAvailableError, { file_path: yaml_path, config_path: "build.docker.dockerfile" }) if !dockerfile_config if !dockerfile_config["pattern"] raise(self.class::NoConfigAvailableError, { file_path: yaml_path, config_path: "build.docker.dockerfile.pattern" }) end end