diff --git a/cli/src/main/scala-2.11/coursier/cli/Options.scala b/cli/src/main/scala-2.11/coursier/cli/Options.scala index a663c24b6..0649423e1 100644 --- a/cli/src/main/scala-2.11/coursier/cli/Options.scala +++ b/cli/src/main/scala-2.11/coursier/cli/Options.scala @@ -29,7 +29,7 @@ final case class CommonOptions( @Short("N") maxIterations: Int = 100, @Help("Repository - for multiple repositories, separate with comma and/or add this option multiple times (e.g. -r central,ivy2local -r sonatype-snapshots, or equivalently -r central,ivy2local,sonatype-snapshots)") - @Value("maven|sonatype:$repo|ivy2local|bintray:$org/$repo|bintray-ivy:$org/$repo|typesafe:ivy-$repo|ivy:$pattern") + @Value("maven|sonatype:$repo|ivy2local|bintray:$org/$repo|bintray-ivy:$org/$repo|typesafe:ivy-$repo|typesafe:$repo|sbt-plugin:$repo|ivy:$pattern") @Short("r") repository: List[String] = Nil, @Help("Source repository - for multiple repositories, separate with comma and/or add this option multiple times") diff --git a/core/shared/src/main/scala/coursier/util/Parse.scala b/core/shared/src/main/scala/coursier/util/Parse.scala index aa6a45172..b8c28731d 100644 --- a/core/shared/src/main/scala/coursier/util/Parse.scala +++ b/core/shared/src/main/scala/coursier/util/Parse.scala @@ -190,12 +190,19 @@ object Parse { MavenRepository(s"https://dl.bintray.com/${s.stripPrefix("bintray:")}").right else if (s.startsWith("bintray-ivy:")) IvyRepository.fromPattern( - s"https://dl.bintray.com/${s.stripPrefix("bintray-ivy:").stripSuffix("/")}" +: "/" +: + s"https://dl.bintray.com/${s.stripPrefix("bintray-ivy:").stripSuffix("/")}/" +: coursier.ivy.Pattern.default ).right else if (s.startsWith("typesafe:ivy-")) IvyRepository.fromPattern( - (s"https://repo.typesafe.com/typesafe/ivy-" + s.stripPrefix("typesafe:ivy-") + "/") +: + s"https://repo.typesafe.com/typesafe/ivy-${s.stripPrefix("typesafe:ivy-")}/" +: + coursier.ivy.Pattern.default + ).right + else if (s.startsWith("typesafe:")) + MavenRepository(s"https://repo.typesafe.com/typesafe/${s.stripPrefix("typesafe:")}").right + else if (s.startsWith("sbt-plugin:")) + IvyRepository.fromPattern( + s"https://repo.scala-sbt.org/scalasbt/sbt-plugin-${s.stripPrefix("sbt-plugin:")}/" +: coursier.ivy.Pattern.default ).right else if (s.startsWith("ivy:")) diff --git a/tests/shared/src/test/scala/coursier/test/ParseTests.scala b/tests/shared/src/test/scala/coursier/test/ParseTests.scala index 2c200cd42..aa625a13d 100644 --- a/tests/shared/src/test/scala/coursier/test/ParseTests.scala +++ b/tests/shared/src/test/scala/coursier/test/ParseTests.scala @@ -1,21 +1,46 @@ package coursier.test -import scalaz.\/- - -import coursier.MavenRepository +import coursier.{MavenRepository, Repository} import coursier.ivy.IvyRepository import coursier.util.Parse import utest._ object ParseTests extends TestSuite { + + def isMavenRepo(repo: Repository): Boolean = + repo match { + case _: MavenRepository => true + case _ => false + } + + def isIvyRepo(repo: Repository): Boolean = + repo match { + case _: IvyRepository => true + case _ => false + } + val tests = TestSuite { "bintray-ivy:" - { val obtained = Parse.repository("bintray-ivy:scalameta/maven") - assert(obtained.exists(_.isInstanceOf[IvyRepository])) + assert(obtained.exists(isIvyRepo)) } "bintray:" - { val obtained = Parse.repository("bintray:scalameta/maven") - assert(obtained.exists(_.isInstanceOf[MavenRepository])) + assert(obtained.exists(isMavenRepo)) + } + + "sbt-plugin:" - { + val res = Parse.repository("sbt-plugin:releases") + assert(res.exists(isIvyRepo)) + } + + "typesafe:ivy-" - { + val res = Parse.repository("typesafe:ivy-releases") + assert(res.exists(isIvyRepo)) + } + "typesafe:" - { + val res = Parse.repository("typesafe:releases") + assert(res.exists(isMavenRepo)) } } }