Skip to content

Commit

Permalink
Merge pull request #62 from Sa1to/fix/SCL-22163
Browse files Browse the repository at this point in the history
Fixing artifacts downloading logging
  • Loading branch information
azdrojowa123 committed Apr 16, 2024
2 parents 114dc39 + 0f3055c commit 38de1c9
Show file tree
Hide file tree
Showing 9 changed files with 87 additions and 22 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package sbt.jetbrains

import sbt._
import org.jetbrains.sbt.SbtStateOps

object LogDownloadArtifacts extends (State => State) with SbtStateOps {

def apply(state: State): State =
applySettings(state, Seq[Setting[_]](), Seq[Setting[_]]())
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package sbt.jetbrains

import sbt.{Def, File, Task, TaskKey}
import sbt.{Def, File, Task, Setting}

object keysAdapterEx {
val myScalaCompilerBridgeBinaryJar: Def.Initialize[Task[Option[File]]] = Def.taskDyn {
Def.task {
None
}
}

val artifactDownload: Seq[Setting[_]] = Seq.empty
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package sbt.jetbrains

import sbt._
import org.jetbrains.sbt.SbtStateOps

object LogDownloadArtifacts extends (State => State) with SbtStateOps {

def apply(state: State): State =
applySettings(state, Seq[Setting[_]](), Seq[Setting[_]]())
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package sbt.jetbrains

import sbt.{Def, File, Task, TaskKey}
import sbt.{Def, File, Task, Setting}

object keysAdapterEx {
val myScalaCompilerBridgeBinaryJar: Def.Initialize[Task[Option[File]]] = Def.taskDyn {
Def.task {
None
}
}

val artifactDownload: Seq[Setting[_]] = Seq.empty
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package sbt.jetbrains

import org.jetbrains.sbt.SbtStateOps
import sbt.Keys.csrLogger
import sbt._

object LogDownloadArtifacts extends (State => State) with SbtStateOps {

lazy val globalSettings: Seq[Setting[_]] = Seq[Setting[_]](
csrLogger := keysAdapterEx.artifactDownloadCsrLogger.value
)

def apply(state: State): State =
applySettings(state, globalSettings, Seq[Setting[_]]())
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,33 @@
package sbt.jetbrains

import sbt.{Def, File, Task, TaskKey}
import lmcoursier.definitions.CacheLogger
import sbt.Keys.useSuperShell
import sbt.{Def, File, Keys, Logger, Setting, Task, ThisBuild}

object keysAdapterEx {
//NOTE: sbt.Keys.scalaCompilerBridgeBinaryJar exists since SBT 1.2.3, so we detect it only since 1.3.0
val myScalaCompilerBridgeBinaryJar: Def.Initialize[Task[Option[File]]] = Def.taskDyn {
sbt.Keys.scalaCompilerBridgeBinaryJar
}
lazy val artifactDownloadCsrLogger: Def.Initialize[Task[Option[CacheLogger]]] = Def.task {
val st = Keys.streams.value
val progress = (ThisBuild / useSuperShell).value
if (progress) None
else Some(new CoursierLogger(st.log))

}

val artifactDownload: Seq[Setting[_]] = Seq(
Keys.csrLogger := keysAdapterEx.artifactDownloadCsrLogger.value
)

class CoursierLogger(logger: Logger) extends CacheLogger {
override def downloadedArtifact(url: String, success: Boolean): Unit = {
logger.info(s"downloaded $url")
}

override def downloadingArtifact(url: String): Unit = {
logger.info(s"downloading $url")
}
}
}
17 changes: 0 additions & 17 deletions extractor/src/main/scala/org/jetbrains/sbt/CreateTasks.scala
Original file line number Diff line number Diff line change
Expand Up @@ -52,21 +52,4 @@ object CreateTasks extends (State => State) with SbtStateOps {
def apply(state: State): State =
applySettings(state, globalSettings, projectSettings)

private def applySettings(state: State, globalSettings: Seq[Setting[_]], projectSettings: Seq[Setting[_]]): State = {
val extracted = Project.extract(state)
import extracted.{structure => extractedStructure, _}
val transformedGlobalSettings = Project.transform(_ => GlobalScope, globalSettings)
val transformedProjectSettings = extractedStructure.allProjectRefs.flatMap { projectRef =>
transformSettings(projectScope(projectRef), projectRef.build, rootProject, projectSettings)
}
reapply(extracted.session.appendRaw(transformedGlobalSettings ++ transformedProjectSettings), state)
}

// copied from sbt.internal.Load
private def transformSettings(thisScope: Scope, uri: URI, rootProject: URI => String, settings: Seq[Setting[_]]): Seq[Setting[_]] =
Project.transform(Scope.resolveScope(thisScope, uri, rootProject), settings)

// copied from sbt.internal.SessionSettings
private def reapply(session: SessionSettings, s: State): State =
BuiltinCommands.reapply(session, Project.structure(s), s)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import org.jetbrains.sbt.structure.XmlSerializer._
import sbt._
import sbt.complete.DefaultParsers
import sbt.plugins.JvmPlugin
import sbt.jetbrains.keysAdapterEx

/**
* Created by jast on 2017-02-22.
Expand All @@ -18,7 +19,7 @@ object StructurePlugin extends AutoPlugin {
StructureKeys.sbtStructureOutputFile := None,
StructureKeys.sbtStructureOptions := "prettyPrint download",
StructureKeys.dumpStructureTo := pluginOnlyTasks.dumpStructureTo.evaluated
) ++ CreateTasks.globalSettings
) ++ keysAdapterEx.artifactDownload ++ CreateTasks.globalSettings

override lazy val projectSettings: Seq[Setting[_]] = CreateTasks.projectSettings

Expand Down Expand Up @@ -52,4 +53,4 @@ private object pluginOnlyTasks {
outputFile
}
}
}
}
19 changes: 19 additions & 0 deletions extractor/src/main/scala/org/jetbrains/sbt/operations.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,25 @@ import sbt.jetbrains.apiAdapter._
* @since 4/10/15.
*/
trait SbtStateOps {

def applySettings(state: State, globalSettings: Seq[Setting[_]], projectSettings: Seq[Setting[_]]): State = {
val extracted = Project.extract(state)
import extracted.{structure => extractedStructure, _}
val transformedGlobalSettings = Project.transform(_ => GlobalScope, globalSettings)
val transformedProjectSettings = extractedStructure.allProjectRefs.flatMap { projectRef =>
transformSettings(projectScope(projectRef), projectRef.build, rootProject, projectSettings)
}
reapply(extracted.session.appendRaw(transformedGlobalSettings ++ transformedProjectSettings), state)
}

// copied from sbt.internal.Load
private def transformSettings(thisScope: Scope, uri: URI, rootProject: URI => String, settings: Seq[Setting[_]]): Seq[Setting[_]] =
Project.transform(Scope.resolveScope(thisScope, uri, rootProject), settings)

// copied from sbt.internal.SessionSettings
private def reapply(session: SessionSettings, s: State): State =
BuiltinCommands.reapply(session, Project.structure(s), s)

def structure(state: State): BuildStructure =
sbt.Project.structure(state)

Expand Down

0 comments on commit 38de1c9

Please sign in to comment.