def self.detect_from_uri(uri)
is_git_dir = File.directory?("#{uri}/.git")
has_single_slash = uri.scan('/').count == 1
via_ssh = uri.start_with?('git@')
if File.directory?(uri) && !is_git_dir && !via_ssh
return LocalFileStrategy
elsif is_git_dir
return GitDownloadStrategy
elsif has_single_slash && !via_ssh
return GitHubDownloadStrategy
end
case uri
when /^git@/ then GitDownloadStrategy
when %r{^https?://.+\.git$} then GitDownloadStrategy
else
raise "Cannot determine download startegy from #{uri}"
end
end