class EnvLint::DotEnvFile

Attributes

name[R]
variables[R]

Public Class Methods

from_file(file_name) click to toggle source
# File lib/env_lint/dot_env_file.rb, line 30
def self.from_file(file_name)
  new(file_name, DotEnvParser.new.parse(File.read(file_name)))
end
new(name, variables) click to toggle source
# File lib/env_lint/dot_env_file.rb, line 5
def initialize(name, variables)
  @name = name
  @variables = variables

  @variables_by_name = variables.each_with_object({}) do |variable, hash|
    hash[variable.name] = variable
  end
end

Public Instance Methods

find_variable(name) click to toggle source
# File lib/env_lint/dot_env_file.rb, line 14
def find_variable(name)
  @variables_by_name[name]
end
verify_no_missing(variable_names) click to toggle source
# File lib/env_lint/dot_env_file.rb, line 18
def verify_no_missing(variable_names)
  find_missing(variable_names).tap do |missing_variables|
    raise(MissingVariables.new(self, missing_variables)) if missing_variables.any?
  end
end
verify_no_unknown(variable_names) click to toggle source
# File lib/env_lint/dot_env_file.rb, line 24
def verify_no_unknown(variable_names)
  find_unknown(variable_names).tap do |unknown_names|
    raise(UnknownVariables.new(self, unknown_names)) if unknown_names.any?
  end
end

Private Instance Methods

find_missing(variable_names) click to toggle source
# File lib/env_lint/dot_env_file.rb, line 36
def find_missing(variable_names)
  @variables.find_all do |variable|
    !variable.optional? && !variable_names.include?(variable.name)
  end
end
find_unknown(variable_names) click to toggle source
# File lib/env_lint/dot_env_file.rb, line 42
def find_unknown(variable_names)
  variable_names.find_all do |name|
    !@variables_by_name.key?(name)
  end
end