Module: Morsel::Installer

Extended by:
Installer
Included in:
Installer
Defined in:
lib/morsel/installer.rb

Instance Method Summary collapse

Instance Method Details

#install_recipe(recipe) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/morsel/installer.rb', line 7

def install_recipe(recipe)
  repo_dir = File.join(File.expand_path('~'), '.morsel', 'repos')
  FileUtils.mkdir_p(repo_dir) unless File.exists? repo_dir
  g = File.exists?(File.join(repo_dir, recipe.name)) ? Git.open(File.join(repo_dir, recipe.name)) : Git.clone(recipe.url, recipe.name, :path => repo_dir)
  g.fetch
  g.branch(recipe.branch ? recipe.branch : 'HEAD').checkout
  recipe.files.each do |f|
    dirname = File.join('morsels', recipe.name, File.dirname(f))
    FileUtils.mkdir_p(dirname)
    FileUtils.cp(File.join(g.dir.path, f), dirname)
  end
end