class Canals::Repository

Constants

ENVIRONMENTS
TUNNELS

Public Class Methods

new(root = nil) click to toggle source
# File lib/canals/repository.rb, line 15
def initialize(root = nil)
  @root = root
  @repo = load_repository(repo_file)
end

Public Instance Methods

add(options, save=true) click to toggle source
# File lib/canals/repository.rb, line 30
def add(options, save=true)
  @repo[TUNNELS][options.name.to_sym] = options.to_hash
  if options.env_name.nil? && !options.env.nil? && options.env.is_default?
    @repo[TUNNELS][options.name.to_sym][:env] = options.env.name
  end
  save! if save
end
add_environment(environment, save=true) click to toggle source
# File lib/canals/repository.rb, line 53
def add_environment(environment, save=true)
  if environment.is_default?
    @repo[ENVIRONMENTS].each { |name, env| env.delete(:default) }
  end
  if @repo[ENVIRONMENTS].empty?
    environment.default = true
  end
  @repo[ENVIRONMENTS][environment.name.to_sym] = environment.to_hash
  save! if save
end
delete(name, save=true) click to toggle source
# File lib/canals/repository.rb, line 38
def delete(name, save=true)
  @repo[TUNNELS].delete(name)
  save! if save
end
each(&block) click to toggle source
# File lib/canals/repository.rb, line 22
def each(&block)
  @repo[TUNNELS].map{ |n, r| Canals::CanalOptions.new(r) }.each(&block)
end
empty?() click to toggle source
# File lib/canals/repository.rb, line 26
def empty?
  @repo[TUNNELS].empty?
end
environment(name=nil) click to toggle source
# File lib/canals/repository.rb, line 69
def environment(name=nil)
  if name.nil?
    args = @repo[ENVIRONMENTS].select{ |n,e| e[:default] }.values[0]
  else
    args = @repo[ENVIRONMENTS][name.to_sym]
  end
  Canals::Environment.new(args) if !args.nil?
end
environments() click to toggle source
# File lib/canals/repository.rb, line 78
def environments
  @repo[ENVIRONMENTS].map { |n, e| Canals::Environment.new(e) }
end
get(name) click to toggle source
# File lib/canals/repository.rb, line 43
def get(name)
  name = name.to_sym
  return nil if !@repo[:tunnels].has_key? name
  CanalOptions.new(@repo[:tunnels][name])
end
has?(name) click to toggle source
# File lib/canals/repository.rb, line 49
def has?(name)
  return @repo[:tunnels].has_key? name.to_sym
end
save!() click to toggle source
# File lib/canals/repository.rb, line 64
def save!
  FileUtils.mkdir_p(repo_file.dirname)
  Canals::Tools::YAML.dump_file(repo_file, @repo)
end

Private Instance Methods

load_repository(repository_file) click to toggle source
# File lib/canals/repository.rb, line 89
def load_repository(repository_file)
  valid_file = repository_file && repository_file.exist? && !repository_file.size.zero?
  return { ENVIRONMENTS => {}, TUNNELS => {} } if !valid_file
  return Canals::Tools::YAML.load_file(repository_file)
end
repo_file() click to toggle source
# File lib/canals/repository.rb, line 84
def repo_file
  file = File.join(Dir.home, '.canals/repository')
  Pathname.new(file)
end