class Primo::Remote

Constants

DIRECTORY

Attributes

name[RW]
url[RW]

Public Class Methods

list() click to toggle source
# File lib/primo/remote.rb, line 5
def self.list
  Primo::Config.instance.config[:remotes]
end
new(name, url = nil) click to toggle source
# File lib/primo/remote.rb, line 11
def initialize name, url = nil
  @name = name
  @url = url || Primo::Config.instance.config[:remotes][name]
  ensure_saved
end

Public Instance Methods

directory() click to toggle source
# File lib/primo/remote.rb, line 32
def directory
  "#{DIRECTORY}/#{name}"
end
ensure_cloned() click to toggle source
# File lib/primo/remote.rb, line 36
def ensure_cloned
  unless File.exists? "#{directory}/.git"
    system "git clone #{url} #{directory} -q"
  end
rescue
  raise "Could not load templates from #{url}"
end
remove() click to toggle source
# File lib/primo/remote.rb, line 26
def remove
  Primo::Config.instance.config[:remotes].delete(name)
  Primo::Config.instance.save
  FileUtils.rm_rf directory
end
templates() click to toggle source
# File lib/primo/remote.rb, line 17
def templates
  template_names.map {|name| Primo::Template.new(name, self)}
end
update() click to toggle source
# File lib/primo/remote.rb, line 21
def update
  ensure_cloned
  system "cd #{directory}; git fetch -q && git reset --hard origin/master -q"
end

Private Instance Methods

ensure_saved() click to toggle source
# File lib/primo/remote.rb, line 46
def ensure_saved
  if !Primo::Config.instance.config[:remotes][name] && url
    Primo::Config.instance.config[:remotes][name] = url
    Primo::Config.instance.save
  end
end
template_names() click to toggle source
# File lib/primo/remote.rb, line 53
def template_names
  Dir.entries(directory).select do |filename|
    filename =~ /\.rb$/
  end
end