/* sbt -- Simple Build Tool
 * Copyright 2011 Mark Harrah
 */
package sbt

	import java.io.File
	import java.net.URI
	import BuildLoader.ResolveInfo
	import Def.{ScopedKey, Setting}

object RetrieveUnit
{
	def apply(info: ResolveInfo): Option[() => File] =
	{
		info.uri match {
			case Scheme("svn") | Scheme("svn+ssh") => Resolvers.subversion(info)
			case Scheme("hg") => Resolvers.mercurial(info)
			case Scheme("git") => Resolvers.git(info)
			case Path(path) if path.endsWith(".git") => Resolvers.git(info)
			case Scheme("http") | Scheme("https") | Scheme("ftp") => Resolvers.remote(info)
			case Scheme("file") => Resolvers.local(info)
			case _ => None
		}
	}

	object Scheme
	{
		def unapply(uri: URI) = Option(uri.getScheme)
	}

	object Path
	{
		import RichURI.fromURI

		def unapply(uri: URI) = Option(uri.withoutMarkerScheme.getPath)
	}
}