class DEIS::Config

Attributes

environment[RW]
verbose[RW]

Public Class Methods

new(options) click to toggle source
# File lib/rdeis/config.rb, line 6
def initialize(options)
  @repo = DEIS::Git.name
  @verbose = options[:verbose]
  @environment = options[:environment]
  @set_selector = self.class.to_s.downcase.gsub("deis::", "")
  @remove_selector = "removed_"+@set_selector
end

Public Instance Methods

add(vars) click to toggle source
# File lib/rdeis/config.rb, line 45
def add(vars)
  self.set(vars)
end
export(vars) click to toggle source

vars should just be the file name

# File lib/rdeis/config.rb, line 68
def export(vars)
  raw = DEIS::Storage.load(@repo, @environment)
  if ! vars.nil? && vars.length > 0 && (file = vars.first)
    File.open(file, "w"){|f| f.write( raw.to_json ) }
    say "Data for #{@repo} -> #{@environment} written to #{file}", :green
  else
    say "Please specify a file path to export to", :red
  end
end
import(vars) click to toggle source

import from a file

# File lib/rdeis/config.rb, line 79
def import(vars)
  if !vars.nil? && vars.length > 0 && (file = vars.first) && (content = File.open(file, "r"){ |f| f.read } )
    content = JSON.parse(content)
    DEIS::Storage.save(@repo, @environment, content)
    say "Data imported from #{file} into #{@repo} -> #{@environment}", :green
  else
    say "Please specify a valid file", :red
  end
end
list(vars=nil, show=true) click to toggle source

output data using thors print_table & say

# File lib/rdeis/config.rb, line 15
def list(vars=nil, show=true)
  data = DEIS::Storage.get(@repo, @environment, @set_selector)
  # if vars have been set then we filter the config data to matching keys
  if ! vars.nil? && vars.length > 0
    keys = []
    DEIS::Parse.var_array(vars).each { |f| keys.push(f[:k]) }
    data = data.select!{ |k,v| keys.include? (k) }
  end

  self.results("#{@set_selector} for #{@repo} -> #{@environment}", "No data found" ,data, :green) if ! show.nil?
  to_remove = DEIS::Storage.get(@repo, @environment, @remove_selector)
  self.results("\n\n#{@set_selector} to be removed", nil, to_remove, :blue) if ! show.nil?
  # return the data set
  return data
end
remove(vars) click to toggle source
# File lib/rdeis/config.rb, line 63
def remove(vars)
  self.unset(vars)
end
results(message, error_message, data, colour) click to toggle source
# File lib/rdeis/config.rb, line 89
def results(message, error_message, data, colour)
  if ! data.nil? && data.length > 0
    say message, colour
    say "----------------------------------", colour
    print_table data
    say "----------------------------------", colour
  elsif ! error_message.nil?
    say message, colour
    say error_message, :red
  end

end
set(vars) click to toggle source

set config vars for the repo

# File lib/rdeis/config.rb, line 32
def set(vars)
  if vars.nil? || vars.length == 0
    say "Please provide a value", :red
  else
    set = {}
    DEIS::Parse.var_array(vars).each do |var|
      set[var[:k]] = var[:v]
      DEIS::Storage.subset(@repo, @environment, @set_selector, var[:k], var[:v])
    end
    self.results("Setting #{@set_selector} for #{@repo} -> #{@environment}", "Error setting #{@set_selector}", set, :green)
  end
end
unset(vars) click to toggle source

remove vars

# File lib/rdeis/config.rb, line 50
def unset(vars)
  if vars.nil? || vars.length == 0
    say "Please enter a key to unset", :red
  else
    unset = {}
    DEIS::Parse.var_array(vars).each do |var|
      unset[var[:k]] = "\u2713"
      DEIS::Storage.subunset(@repo, @environment, @set_selector, var[:k])
    end
    self.results("Removing #{@set_selector} for #{@repo} -> #{@environment}", "Error removing #{@set_selector}", unset, :green)
  end
end