From eb6ba341dac6309805aee2f8939bcc348b05e9ff Mon Sep 17 00:00:00 2001 From: Albert Meltzer <7529386+kitbellew@users.noreply.github.com> Date: Sat, 25 Nov 2023 09:32:20 -0800 Subject: [PATCH] AbsoluteFile: add `apply(String*)` --- .../main/scala/org/scalafmt/config/ScalafmtConfig.scala | 6 ++---- .../src/main/scala/org/scalafmt/sysops/AbsoluteFile.scala | 7 ++++++- .../shared/src/main/scala/org/scalafmt/sysops/GitOps.scala | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/ScalafmtConfig.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/ScalafmtConfig.scala index 10cd30e873..c4a25755eb 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/ScalafmtConfig.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/ScalafmtConfig.scala @@ -209,9 +209,7 @@ case class ScalafmtConfig( } def getConfigFor(filename: String): Try[ScalafmtConfig] = { - val absfile = AbsoluteFile(FileOps.getFile(filename)) - @inline def otherDialect(style: ScalafmtConfig): Boolean = - !style.dialect.isEquivalentTo(dialect) + val absfile = AbsoluteFile(filename) def onLang[A](f: (ProjectFiles.Layout, String) => A): Option[A] = project.layout.flatMap { layout => layout.getLang(absfile).map { lang => f(layout, lang) } @@ -223,7 +221,7 @@ case class ScalafmtConfig( } val pmStyle = pmStyles.collectFirst { case (pm, style) if pm.matches(absfile.path) => - if (otherDialect(style)) style + if (!style.dialect.isEquivalentTo(dialect)) style else style.withDialect(onLang { _.getDialectByLang(_)(style.dialect) diff --git a/scalafmt-sysops/shared/src/main/scala/org/scalafmt/sysops/AbsoluteFile.scala b/scalafmt-sysops/shared/src/main/scala/org/scalafmt/sysops/AbsoluteFile.scala index 592e3e5b20..6f63dff32b 100644 --- a/scalafmt-sysops/shared/src/main/scala/org/scalafmt/sysops/AbsoluteFile.scala +++ b/scalafmt-sysops/shared/src/main/scala/org/scalafmt/sysops/AbsoluteFile.scala @@ -44,10 +44,15 @@ object AbsoluteFile { def apply(file: File): AbsoluteFile = apply(file.toPath) def apply(path: Path): AbsoluteFile = new AbsoluteFile(path.toAbsolutePath) + @inline def apply(path: Seq[String]): AbsoluteFile = + apply(FileOps.getFile(path)) + @inline def apply(head: String, tail: String*): AbsoluteFile = + apply(FileOps.getPath(head, tail: _*)) + def fromPathIfAbsolute(path: String): Option[AbsoluteFile] = { val file = FileOps.getFile(path) if (file.isAbsolute) Some(new AbsoluteFile(file)) else None } - def userDir = AbsoluteFile(FileOps.getFile(System.getProperty("user.dir"))) + def userDir = AbsoluteFile(System.getProperty("user.dir")) } diff --git a/scalafmt-sysops/shared/src/main/scala/org/scalafmt/sysops/GitOps.scala b/scalafmt-sysops/shared/src/main/scala/org/scalafmt/sysops/GitOps.scala index 04008e7625..1b71d1e67a 100644 --- a/scalafmt-sysops/shared/src/main/scala/org/scalafmt/sysops/GitOps.scala +++ b/scalafmt-sysops/shared/src/main/scala/org/scalafmt/sysops/GitOps.scala @@ -75,7 +75,7 @@ private class GitOpsImpl(val workingDirectory: AbsoluteFile) extends GitOps { private lazy val tryRoot: Try[AbsoluteFile] = { val cmd = Seq("git", "rev-parse", "--show-toplevel") Try(execImpl(cmd)).flatMap { x => - val file = AbsoluteFile(FileOps.getFile(x)) + val file = AbsoluteFile(x) if (file.isDirectory) Success(file) else Failure(new InvalidPathException(x, "not a directory")) }