From 00aaf8e1ac39c63d25707d15195b096c9be327fe Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Sun, 17 Apr 2016 22:00:38 +0200 Subject: [PATCH 1/4] Factor default Ivy pattern --- cache/src/main/scala/coursier/Cache.scala | 4 +--- core/shared/src/main/scala/coursier/ivy/Pattern.scala | 4 ++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cache/src/main/scala/coursier/Cache.scala b/cache/src/main/scala/coursier/Cache.scala index 40edf8023..3929dee0f 100644 --- a/cache/src/main/scala/coursier/Cache.scala +++ b/cache/src/main/scala/coursier/Cache.scala @@ -746,9 +746,7 @@ object Cache { } lazy val ivy2Local = IvyRepository( - ivy2HomeUri + "local/" + - "[organisation]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/" + - "[artifact](-[classifier]).[ext]", + ivy2HomeUri + "local/" + coursier.ivy.Pattern.default, dropInfoAttributes = true ) diff --git a/core/shared/src/main/scala/coursier/ivy/Pattern.scala b/core/shared/src/main/scala/coursier/ivy/Pattern.scala index 820fad6d0..b702c1b3f 100644 --- a/core/shared/src/main/scala/coursier/ivy/Pattern.scala +++ b/core/shared/src/main/scala/coursier/ivy/Pattern.scala @@ -9,6 +9,10 @@ import java.util.regex.Pattern.quote object Pattern { + val default = + "[organisation]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/" + + "[artifact](-[classifier]).[ext]" + val propertyRegex = (quote("${") + "[^" + quote("{[()]}") + "]*" + quote("}")).r val optionalPartRegex = (quote("(") + "[^" + quote("{()}") + "]*" + quote(")")).r val variableRegex = (quote("[") + "[^" + quote("{[()]}") + "]*" + quote("]")).r From 5f6caefff6fb8af298ea28b4ca8e0a7fc010ae76 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Sun, 17 Apr 2016 22:06:38 +0200 Subject: [PATCH 2/4] Add support for shorter syntax for Typesafe and Bintray repositories --- core/shared/src/main/scala/coursier/util/Parse.scala | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/shared/src/main/scala/coursier/util/Parse.scala b/core/shared/src/main/scala/coursier/util/Parse.scala index 2abe3ebab..1ef8b693b 100644 --- a/core/shared/src/main/scala/coursier/util/Parse.scala +++ b/core/shared/src/main/scala/coursier/util/Parse.scala @@ -132,6 +132,13 @@ object Parse { MavenRepository("https://repo1.maven.org/maven2") else if (s.startsWith("sonatype:")) MavenRepository(s"https://oss.sonatype.org/content/repositories/${s.stripPrefix("sonatype:")}") + else if (s.startsWith("bintray:")) + MavenRepository(s"https://dl.bintray.com/${s.stripPrefix("bintray:")}/maven") + else if (s.startsWith("typesafe:ivy-")) + IvyRepository( + s"https://repo.typesafe.com/typesafe/ivy-" + s.stripPrefix("typesafe:ivy-") + "/" + + coursier.ivy.Pattern.default + ) else if (s.startsWith("ivy:")) IvyRepository(s.stripPrefix("ivy:")) else From bbe9ec5a21f238999a287e60a9f927ba15868143 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Sun, 17 Apr 2016 22:08:04 +0200 Subject: [PATCH 3/4] Minor adjustment of build config --- build.sbt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.sbt b/build.sbt index ab69a90fc..28403cc94 100644 --- a/build.sbt +++ b/build.sbt @@ -31,12 +31,12 @@ lazy val releaseSettings = Seq( else Some("releases" at nexus + "service/local/staging/deploy/maven2") }, - credentials += { + credentials ++= { Seq("SONATYPE_USER", "SONATYPE_PASS").map(sys.env.get) match { case Seq(Some(user), Some(pass)) => - Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", user, pass) + Seq(Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", user, pass)) case _ => - Credentials(Path.userHome / ".ivy2" / ".credentials") + Seq() } } ) From 241cf866a09f017d33cc617ab5eeaf2d7fd505e9 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Sun, 17 Apr 2016 22:22:04 +0200 Subject: [PATCH 4/4] Switch to case-app 1.0.0-RC2, remove the need for two -- ... ...to specify user arguments with the launch command --- build.sbt | 2 +- .../scala-2.11/coursier/cli/Coursier.scala | 4 +-- .../main/scala-2.11/coursier/cli/Launch.scala | 33 ++++++++++++------- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/build.sbt b/build.sbt index 28403cc94..ddc9c2d9d 100644 --- a/build.sbt +++ b/build.sbt @@ -301,7 +301,7 @@ lazy val cli = project if (scalaVersion.value startsWith "2.10.") Seq() else - Seq("com.github.alexarchambault" %% "case-app" % "1.0.0-RC1") + Seq("com.github.alexarchambault" %% "case-app" % "1.0.0-RC2") }, resourceGenerators in Compile += packageBin.in(bootstrap).in(Compile).map { jar => Seq(jar) diff --git a/cli/src/main/scala-2.11/coursier/cli/Coursier.scala b/cli/src/main/scala-2.11/coursier/cli/Coursier.scala index a2be793d4..c7ebe5e11 100644 --- a/cli/src/main/scala-2.11/coursier/cli/Coursier.scala +++ b/cli/src/main/scala-2.11/coursier/cli/Coursier.scala @@ -10,8 +10,8 @@ import shapeless.union.Union case class CoursierCommandHelper( command: CoursierCommandHelper.U ) extends ArgsApp { - def setRemainingArgs(remainingArgs: Seq[String]): Unit = - command.unify.setRemainingArgs(remainingArgs) + def setRemainingArgs(remainingArgs: Seq[String], extraArgs: Seq[String]): Unit = + command.unify.setRemainingArgs(remainingArgs, extraArgs) def remainingArgs: Seq[String] = command.unify.remainingArgs def apply(): Unit = diff --git a/cli/src/main/scala-2.11/coursier/cli/Launch.scala b/cli/src/main/scala-2.11/coursier/cli/Launch.scala index 6cec11c28..04b31d253 100644 --- a/cli/src/main/scala-2.11/coursier/cli/Launch.scala +++ b/cli/src/main/scala-2.11/coursier/cli/Launch.scala @@ -51,23 +51,32 @@ class IsolatedClassLoader( } +// should be in case-app somehow +trait ExtraArgsApp extends caseapp.core.DefaultArgsApp { + private var remainingArgs1 = Seq.empty[String] + private var extraArgs1 = Seq.empty[String] + + override def setRemainingArgs(remainingArgs: Seq[String], extraArgs: Seq[String]): Unit = { + remainingArgs1 = remainingArgs + extraArgs1 = extraArgs + } + + override def remainingArgs: Seq[String] = + remainingArgs1 + def extraArgs: Seq[String] = + extraArgs1 +} + case class Launch( @Recurse options: LaunchOptions -) extends App { +) extends App with ExtraArgsApp { - val (rawDependencies, extraArgs) = { - val idxOpt = Some(remainingArgs.indexOf("--")).filter(_ >= 0) - idxOpt.fold((remainingArgs, Seq.empty[String])) { idx => - val (l, r) = remainingArgs.splitAt(idx) - assert(r.nonEmpty) - (l, r.tail) - } - } + val userArgs = extraArgs val helper = new Helper( options.common, - rawDependencies ++ options.isolated.rawIsolated.map { case (_, dep) => dep } + remainingArgs ++ options.isolated.rawIsolated.map { case (_, dep) => dep } ) @@ -194,10 +203,10 @@ case class Launch( } if (options.common.verbosityLevel >= 2) - Helper.errPrintln(s"Launching $mainClass0 ${extraArgs.mkString(" ")}") + Helper.errPrintln(s"Launching $mainClass0 ${userArgs.mkString(" ")}") else if (options.common.verbosityLevel == 1) Helper.errPrintln(s"Launching") Thread.currentThread().setContextClassLoader(loader) - method.invoke(null, extraArgs.toArray) + method.invoke(null, userArgs.toArray) } \ No newline at end of file