Cloning will now try to init and update git submodules, if they exist.

This commit is contained in:
Joshua Nichols
2010-04-01 21:59:15 -04:00
parent 00b6f9b390
commit c0797dd607
2 changed files with 28 additions and 3 deletions

View File

@@ -19,13 +19,28 @@ class Homesick < Thor
desc "clone URI", "Clone +uri+ as a castle for homesick"
def clone(uri)
inside repos_dir do
destination = nil
if File.exist?(uri)
ln_s uri, File.basename(uri)
destination = Pathname.new(uri).basename
ln_s uri, destination
elsif uri =~ GITHUB_NAME_REPO_PATTERN
git_clone "git://github.com/#{$1}.git", :destination => $1
destination = Pathname.new($1)
git_clone "git://github.com/#{$1}.git", :destination => destination
else
if uri =~ /\/([^\/]*).git\Z/
destination = Pathname.new($1)
end
git_clone uri
end
if destination.join('.gitmodules').exist?
inside destination do
git_submodule_init
git_submodule_update
end
end
end
end

View File

@@ -19,6 +19,16 @@ class Homesick
end
end
def git_submodule_init(config = {})
say_status 'git submodule', 'init', :green unless options[:quiet]
system "git submodule --quiet init" unless options[:pretend]
end
def git_submodule_update(config = {})
say_status 'git submodule', 'update', :green unless options[:quiet]
system "git submodule --quiet update >/dev/null 2>&1" unless options[:pretend]
end
def ln_s(source, destination, config = {})
source = Pathname.new(source)
destination = Pathname.new(destination)