From 638f4647a4c05b0418e5105b6d36cf8af0e54981 Mon Sep 17 00:00:00 2001 From: Brice Jaglin Date: Sun, 11 Jun 2023 19:00:37 +0200 Subject: [PATCH] expose low-level API for scalafix repo dogfooding --- .../internal/sbt/ScalafixInterface.scala | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/scala/scalafix/internal/sbt/ScalafixInterface.scala b/src/main/scala/scalafix/internal/sbt/ScalafixInterface.scala index 1a31a795..4faaefdd 100644 --- a/src/main/scala/scalafix/internal/sbt/ScalafixInterface.scala +++ b/src/main/scala/scalafix/internal/sbt/ScalafixInterface.scala @@ -159,4 +159,25 @@ object ScalafixInterface { ) ) }) + + def fromClassloader( + classloader: () => ClassLoader, + logger: Logger = ConsoleLogger(System.out) + ): () => ScalafixInterface = () => { + val callback = new ScalafixLogger(logger) + val scalafixArguments = ScalafixAPI + .classloadInstance(classloader()) + .newArguments() + .withMainCallback(callback) + val printStream = + new PrintStream( + LoggingOutputStream( + logger, + Level.Info + ) + ) + new ScalafixInterface(scalafixArguments, Nil) + .withArgs(Arg.PrintStream(printStream)) + } + }