class StackMaster::ParameterValidator

Public Class Methods

new(stack:, stack_definition:) click to toggle source
# File lib/stack_master/parameter_validator.rb, line 5
def initialize(stack:, stack_definition:)
  @stack = stack
  @stack_definition = stack_definition
end

Public Instance Methods

error_message() click to toggle source
# File lib/stack_master/parameter_validator.rb, line 10
def error_message
  return nil unless missing_parameters?
  message = "Empty/blank parameters detected. Please provide values for these parameters:\n"
  missing_parameters.each do |parameter_name|
    message << " - #{parameter_name}\n"
  end
  if @stack_definition.parameter_files.empty?
    message << message_for_parameter_globs
  else
    message << message_for_parameter_files
  end
  message
end
missing_parameters?() click to toggle source
# File lib/stack_master/parameter_validator.rb, line 24
def missing_parameters?
  missing_parameters.any?
end

Private Instance Methods

message_for_parameter_files() click to toggle source
# File lib/stack_master/parameter_validator.rb, line 30
def message_for_parameter_files
  "Parameters are configured to be read from the following files:\n".tap do |message|
    @stack_definition.parameter_files.each do |parameter_file|
      message << " - #{parameter_file}\n"
    end
  end
end
message_for_parameter_globs() click to toggle source
# File lib/stack_master/parameter_validator.rb, line 38
def message_for_parameter_globs
  "Parameters will be read from files matching the following globs:\n".tap do |message|
    base_dir = Pathname.new(@stack_definition.base_dir)
    @stack_definition.parameter_file_globs.each do |glob|
      parameter_file = Pathname.new(glob).relative_path_from(base_dir)
      message << " - #{parameter_file}\n"
    end
  end
end
missing_parameters() click to toggle source
# File lib/stack_master/parameter_validator.rb, line 48
def missing_parameters
  @missing_parameters ||=
    @stack.parameters_with_defaults.select { |_key, value| value.nil? }.keys
end