From 45b920c3528a8cd7f9b0515e95afe9e8fd044ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93lafur=20P=C3=A1ll=20Geirsson?= Date: Tue, 4 Apr 2017 10:25:35 +0200 Subject: [PATCH] Support --repository bintray-ivy:org/repo/ in cli. This commit adds support for a `bintray-ivy:` repository prefix to the `--repository` flag in the cli. This option is equivalent to the `Resolver.bintrayIvyRepo` helper in sbt. With this new helper, it's possible to write `-r bintray-ivy:scalameta/maven/` instead of ``` -r ivy:https://dl.bintray.com/scalameta/maven/[organisation]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext] ``` --- .../scala-2.11/coursier/cli/Options.scala | 3 ++- .../src/main/scala/coursier/util/Parse.scala | 5 +++++ .../test/scala/coursier/test/ParseTests.scala | 21 +++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 tests/shared/src/test/scala/coursier/test/ParseTests.scala 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 9b780b365..258e6377e 100644 --- a/cli/src/main/scala-2.11/coursier/cli/Options.scala +++ b/cli/src/main/scala-2.11/coursier/cli/Options.scala @@ -29,6 +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:releases|ivy:pattern") @Short("r") repository: List[String] = Nil, @Help("Source repository - for multiple repositories, separate with comma and/or add this option multiple times") @@ -282,4 +283,4 @@ final case class SparkSubmitOptions( artifactOptions: ArtifactOptions = ArtifactOptions(), @Recurse common: CommonOptions = CommonOptions() -) \ No newline at end of file +) diff --git a/core/shared/src/main/scala/coursier/util/Parse.scala b/core/shared/src/main/scala/coursier/util/Parse.scala index 0a8f20117..aa6a45172 100644 --- a/core/shared/src/main/scala/coursier/util/Parse.scala +++ b/core/shared/src/main/scala/coursier/util/Parse.scala @@ -188,6 +188,11 @@ object Parse { MavenRepository(s"https://oss.sonatype.org/content/repositories/${s.stripPrefix("sonatype:")}").right else if (s.startsWith("bintray:")) 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("/")}" +: "/" +: + coursier.ivy.Pattern.default + ).right else if (s.startsWith("typesafe:ivy-")) IvyRepository.fromPattern( (s"https://repo.typesafe.com/typesafe/ivy-" + s.stripPrefix("typesafe:ivy-") + "/") +: diff --git a/tests/shared/src/test/scala/coursier/test/ParseTests.scala b/tests/shared/src/test/scala/coursier/test/ParseTests.scala new file mode 100644 index 000000000..2c200cd42 --- /dev/null +++ b/tests/shared/src/test/scala/coursier/test/ParseTests.scala @@ -0,0 +1,21 @@ +package coursier.test + +import scalaz.\/- + +import coursier.MavenRepository +import coursier.ivy.IvyRepository +import coursier.util.Parse +import utest._ + +object ParseTests extends TestSuite { + val tests = TestSuite { + "bintray-ivy:" - { + val obtained = Parse.repository("bintray-ivy:scalameta/maven") + assert(obtained.exists(_.isInstanceOf[IvyRepository])) + } + "bintray:" - { + val obtained = Parse.repository("bintray:scalameta/maven") + assert(obtained.exists(_.isInstanceOf[MavenRepository])) + } + } +}