class DotEnvDotExample

Attributes

dot_env[R]
filename[R]

Public Class Methods

new( options = {} ) click to toggle source
# File lib/dot_example/dot_env_dot_example.rb, line 2
def initialize( options = {} )
  @filename = options[:filename] || ".env.example"
  @dot_env = options[:dot_env] || DotEnv.new
end

Public Instance Methods

keys_new_to_example() click to toggle source
# File lib/dot_example/dot_env_dot_example.rb, line 18
def keys_new_to_example
  dot_env.keys.reject do |key|
    keys.map(&:chomp).include? key
  end
end
missing_keys() click to toggle source
# File lib/dot_example/dot_env_dot_example.rb, line 32
def missing_keys
  keys.reject { |key| dot_env.keys.include?(key) } 
end
pre_commit_hook() click to toggle source
# File lib/dot_example/dot_env_dot_example.rb, line 46
def pre_commit_hook
  # TODO: Make it possible to put .env and .env.example files somewhere else?
  # Maybe later if people actually want this feature
  [
    "dot_example sync",
    "git add .env.example"
  ].join("\n")
end
print_missing_keys_message() click to toggle source
print_new_keys_message() click to toggle source
write!() click to toggle source
# File lib/dot_example/dot_env_dot_example.rb, line 9
def write!
  if keys_new_to_example.any?
    print_new_keys_message
    File.open(filename, "a") do |file|
      file.puts keys_new_to_example.map { |key| "#{key}=" }
    end
  end
end

Private Instance Methods

keys() click to toggle source
# File lib/dot_example/dot_env_dot_example.rb, line 57
def keys
  lines.map{ |line| line.split("=")[0] }
end
lines() click to toggle source
# File lib/dot_example/dot_env_dot_example.rb, line 61
def lines
  unless Dir.glob(filename).any? 
    `touch #{filename}`
  end
  File.readlines(filename)
end