class Forge::Config

Reads/Writes a configuration file in the user's home directory

Attributes

config[RW]

Public Class Methods

new() click to toggle source
# File lib/forge/config.rb, line 10
def initialize()
  @config = {
    :theme => {
      :author     => nil,
      :author_url => nil,
    },
    :links => []
  }
end

Public Instance Methods

[](var) click to toggle source

Provides access to the config using the Hash square brackets

# File lib/forge/config.rb, line 21
def [](var)
  @config[var]
end
[]=(var, value) click to toggle source

Allows modifying variables through hash square brackets

# File lib/forge/config.rb, line 26
def []=(var, value)
  @config[var] = value
end
config_file() click to toggle source

Returns the path to the user's configuration file

# File lib/forge/config.rb, line 31
def config_file
  @config_file ||= File.expand_path(File.join('~', '.forge', 'config.yml'))
end
read() click to toggle source

Loads config declarations in user's home dir

If file does not exist then it will be created

# File lib/forge/config.rb, line 51
def read
  return write unless File.exists?(self.config_file)

  data = File.open(self.config_file).read

  @config = data.empty? ? {} : JSON.parse(data)

  self
end
write(options={}) click to toggle source

Writes the configuration file

# File lib/forge/config.rb, line 36
def write(options={})
  # If we're unit testing then it helps to use a
  # StringIO object instead of a file buffer
  io = options[:io] || File.open(self.config_file, 'w')

  io.write JSON.generate(@config)

  io.close

  self
end