From 84c51ff91b316b7427fd4182ec2976f750cd3b74 Mon Sep 17 00:00:00 2001 From: Alex Archambault Date: Fri, 21 Apr 2023 15:32:26 +0200 Subject: [PATCH] Use class-path-util library --- build.sc | 1 + .../cli/params/SharedLaunchParams.scala | 4 +- .../coursier/cli/util/ClassPathUtil.scala | 56 ------------------- project/deps.sc | 1 + 4 files changed, 4 insertions(+), 58 deletions(-) delete mode 100644 modules/cli/src/main/scala/coursier/cli/util/ClassPathUtil.scala diff --git a/build.sc b/build.sc index 21082541d7..e8f826d8e9 100644 --- a/build.sc +++ b/build.sc @@ -556,6 +556,7 @@ trait Cli extends CsModule with CoursierPublishModule with Launchers { Deps.caseApp, Deps.catsCore, Deps.catsFree, + Deps.classPathUtil, Deps.dataClass, Deps.monadlessCats, Deps.monadlessStdlib, diff --git a/modules/cli/src/main/scala/coursier/cli/params/SharedLaunchParams.scala b/modules/cli/src/main/scala/coursier/cli/params/SharedLaunchParams.scala index 9fd6ffa2a1..d541c5b77c 100644 --- a/modules/cli/src/main/scala/coursier/cli/params/SharedLaunchParams.scala +++ b/modules/cli/src/main/scala/coursier/cli/params/SharedLaunchParams.scala @@ -8,7 +8,7 @@ import coursier.cli.fetch.FetchParams import coursier.cli.install.SharedChannelParams import coursier.cli.options.SharedLaunchOptions import coursier.cli.resolve.SharedResolveParams -import coursier.cli.util.ClassPathUtil +import coursier.cputil.ClassPathUtil final case class SharedLaunchParams( resolve: SharedResolveParams, @@ -79,7 +79,7 @@ object SharedLaunchParams { } // check if those exist? - val extraJars = options.extraJars.flatMap(ClassPathUtil.classPath(_, sys.props.get)) + val extraJars = options.extraJars.flatMap(ClassPathUtil.classPath(_)) (resolveV, artifactV, sharedLoaderV, propertiesV).mapN { (resolve, artifact, sharedLoader, properties) => diff --git a/modules/cli/src/main/scala/coursier/cli/util/ClassPathUtil.scala b/modules/cli/src/main/scala/coursier/cli/util/ClassPathUtil.scala deleted file mode 100644 index 331b8a0c94..0000000000 --- a/modules/cli/src/main/scala/coursier/cli/util/ClassPathUtil.scala +++ /dev/null @@ -1,56 +0,0 @@ -package coursier.cli.util - -import java.io.File -import java.nio.file.{Files, Path, Paths} -import java.util.regex.{Matcher, Pattern} - -import scala.collection.JavaConverters._ - -object ClassPathUtil { - - private val propertyRegex = Pattern.compile( - Pattern.quote("${") + "[^" + Pattern.quote("{[()]}") + "]*" + Pattern.quote("}") - ) - - def classPath(input: String, getProperty: String => Option[String]): Seq[Path] = - input.split(File.pathSeparator).filter(_.nonEmpty).flatMap { elem => - val processedElem = { - var value = elem - var matcher: Matcher = null - - while ({ - matcher = propertyRegex.matcher(value) - matcher.find() - }) { - val start = matcher.start(0) - val end = matcher.end(0) - val subKey = value.substring(start + 2, end - 1) - val subValue = getProperty(subKey).getOrElse("") - value = value.substring(0, start) + subValue + value.substring(end) - } - - value - } - def allJarsOf(dir: Path): Seq[Path] = - Files.list(dir) - .iterator - .asScala - .filter { path => - val name = path.toString - name.length >= ".jar".length && - name.substring(name.length() - ".jar".length).equalsIgnoreCase(".jar") - } - .toVector - if (processedElem.endsWith("/*")) { - val dir = Paths.get(processedElem.stripSuffix("/*")) - allJarsOf(dir) - } - else if (processedElem.endsWith("/*.jar")) { - val dir = Paths.get(processedElem.stripSuffix("/*.jar")) - allJarsOf(dir) - } - else - Seq(Paths.get(processedElem)) - } - -} diff --git a/project/deps.sc b/project/deps.sc index 863782a900..db8244f1a6 100644 --- a/project/deps.sc +++ b/project/deps.sc @@ -6,6 +6,7 @@ object Deps { def catsCore = ivy"org.typelevel::cats-core:${Versions.cats}" def catsFree = ivy"org.typelevel::cats-free:${Versions.cats}" def catsEffect = ivy"org.typelevel::cats-effect::3.4.8" + def classPathUtil = ivy"io.get-coursier::class-path-util:0.1.1" def collectionCompat = ivy"org.scala-lang.modules::scala-collection-compat::2.9.0" def concurrentReferenceHashMap = ivy"io.github.alexarchambault:concurrent-reference-hash-map:1.1.0"