diff --git a/bootstrap/src/main/java/coursier/Bootstrap.java b/bootstrap/src/main/java/coursier/Bootstrap.java index b0899fd7e..9caa2e4ec 100644 --- a/bootstrap/src/main/java/coursier/Bootstrap.java +++ b/bootstrap/src/main/java/coursier/Bootstrap.java @@ -217,6 +217,8 @@ public class Bootstrap { }); } + String clearLine = "\033[2K"; + try { while (localURLs.size() < urls.size()) { Future future = completionService.take(); @@ -224,7 +226,6 @@ public class Bootstrap { URL url = future.get(); localURLs.add(url); int nowMissing = urls.size() - localURLs.size(); - String clearLine = "\033[2K"; String up = "\033[1A"; System.err.print(clearLine + "Downloaded " + (missingURLs.size() - nowMissing) + " missing file(s) / " + missingURLs.size() + "\n" + up); } catch (ExecutionException ex) { @@ -236,6 +237,8 @@ public class Bootstrap { exit("Interrupted"); } + System.err.print(clearLine); + return localURLs; } 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 30143a5fa..0366ea41d 100644 --- a/cli/src/main/scala-2.11/coursier/cli/Coursier.scala +++ b/cli/src/main/scala-2.11/coursier/cli/Coursier.scala @@ -375,6 +375,10 @@ case class Bootstrap( @Value("key=value") @Short("P") property: List[String], + @Help("Set Java command-line options in the generated launcher.") + @Value("option") + @Short("J") + javaOpt: List[String], @Recurse isolated: IsolatedLoaderOptions, @Recurse @@ -475,7 +479,7 @@ case class Bootstrap( ) else ( - helper.res.artifacts.map(_.url), + helper.artifacts(sources = false, javadoc = false).map(_.url), Seq.empty[File] ) @@ -552,10 +556,10 @@ case class Bootstrap( outputZip.close() - + // escaping of javaOpt possibly a bit loose :-| val shellPreamble = Seq( "#!/usr/bin/env sh", - "exec java -jar \"$0\" \"$@\"" + "exec java -jar " + javaOpt.map(s => "'" + s.replace("'", "\\'") + "'").mkString(" ") + " \"$0\" \"$@\"" ).mkString("", "\n", "\n") try NIOFiles.write(output0.toPath, shellPreamble.getBytes("UTF-8") ++ buffer.toByteArray) diff --git a/cli/src/main/scala-2.11/coursier/cli/Helper.scala b/cli/src/main/scala-2.11/coursier/cli/Helper.scala index 5f33b6955..1d282edc3 100644 --- a/cli/src/main/scala-2.11/coursier/cli/Helper.scala +++ b/cli/src/main/scala-2.11/coursier/cli/Helper.scala @@ -283,11 +283,11 @@ class Helper( sys.exit(1) } - def fetch( + def artifacts( sources: Boolean, javadoc: Boolean, subset: Set[Dependency] = null - ): Seq[File] = { + ): Seq[Artifact] = { if (subset == null && verbose0 >= 0) { val msg = cachePolicies match { @@ -302,17 +302,25 @@ class Helper( val res0 = Option(subset).fold(res)(res.subset) - val artifacts = - if (classifier0.nonEmpty || sources || javadoc) { - var classifiers = classifier0 - if (sources) - classifiers = classifiers :+ "sources" - if (javadoc) - classifiers = classifiers :+ "javadoc" + if (classifier0.nonEmpty || sources || javadoc) { + var classifiers = classifier0 + if (sources) + classifiers = classifiers :+ "sources" + if (javadoc) + classifiers = classifiers :+ "javadoc" - res0.classifiersArtifacts(classifiers.distinct) - } else - res0.artifacts + res0.classifiersArtifacts(classifiers.distinct) + } else + res0.artifacts + } + + def fetch( + sources: Boolean, + javadoc: Boolean, + subset: Set[Dependency] = null + ): Seq[File] = { + + val artifacts0 = artifacts(sources, javadoc, subset) val logger = if (verbose0 >= 0) @@ -320,10 +328,10 @@ class Helper( else None - if (verbose0 >= 1 && artifacts.nonEmpty) - println(s" Found ${artifacts.length} artifacts") + if (verbose0 >= 1 && artifacts0.nonEmpty) + println(s" Found ${artifacts0.length} artifacts") - val tasks = artifacts.map(artifact => + val tasks = artifacts0.map(artifact => (Cache.file(artifact, caches, cachePolicies.head, checksums = checksums, logger = logger, pool = pool) /: cachePolicies.tail)( _ orElse Cache.file(artifact, caches, _, checksums = checksums, logger = logger, pool = pool) ).run.map(artifact.->) diff --git a/coursier b/coursier index 61cbb7305..e067ee3b1 100755 Binary files a/coursier and b/coursier differ diff --git a/project/generate-launcher.sh b/project/generate-launcher.sh index 6bf88bffc..94474d5e9 100755 --- a/project/generate-launcher.sh +++ b/project/generate-launcher.sh @@ -11,6 +11,9 @@ fi "$SBTPACK_LAUNCHER" bootstrap \ com.github.alexarchambault:coursier-cli_2.11:$VERSION \ + --classifier standalone \ + --intransitive \ + -J "-noverify" \ --no-default \ -r central \ -r sonatype:releases \ diff --git a/project/plugins.sbt b/project/plugins.sbt index 08f06411f..8ccf88857 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -3,6 +3,6 @@ addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.5") addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0") addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.1.0") addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.4.0") -addSbtPlugin("com.github.alexarchambault" % "coursier-sbt-plugin" % "1.0.0-M4") +addSbtPlugin("com.github.alexarchambault" % "coursier-sbt-plugin" % "1.0.0-M8") addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2") addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.8")