![JAR search and dependency download from the Maven repository](/logo.png)
mdoc.internal.markdown.Instrumented.scala Maven / Gradle / Ivy
package mdoc.internal.markdown
import coursierapi.Dependency
import mdoc.internal.BuildInfo
import scala.util.matching.Regex
import scala.meta.Name
import scala.collection.mutable
import coursierapi.IvyRepository
import coursierapi.Repository
import coursierapi.MavenRepository
import mdoc.Reporter
import scala.util.Failure
import scala.util.Success
import coursierapi.error.CoursierError
case class Instrumented(
source: String,
scalacOptionImports: List[Name.Indeterminate],
dependencyImports: List[Name.Indeterminate],
repositoryImports: List[Name.Indeterminate],
fileImports: List[FileImport],
positionedDependencies: List[PositionedDependency],
dependencies: Set[Dependency],
repositories: List[Repository]
)
object Instrumented {
def fromSource(
source: String,
scalacOptionImports: List[Name.Indeterminate],
dependencyImports: List[Name.Indeterminate],
repositoryImports: List[Name.Indeterminate],
fileImports: List[FileImport],
reporter: Reporter
): Instrumented = {
val positioned = dependencyImports.flatMap(i => PositionedDependency.fromName(i, reporter))
val dependencies = positioned.map(_.dep).toSet
val repositories =
for {
name <- repositoryImports
repo <- SharedRepositoryParser.repository(name.value) match {
case Failure(exception) =>
exception match {
case _: CoursierError =>
reporter.error(name.pos, exception.getMessage())
case _ =>
reporter.error(name.pos, exception)
}
Nil
case Success(value) =>
List(value)
}
} yield repo
Instrumented(
source,
scalacOptionImports,
dependencyImports,
repositoryImports,
fileImports,
positioned,
dependencies,
repositories
)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy