summaryrefslogtreecommitdiff
path: root/scalalib/src/publish/LocalPublisher.scala
blob: d9839831b7ff4d83d2955edadc98a21cb03f136a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package mill.scalalib.publish


object LocalPublisher {

  private val root: os.Path = os.home / ".ivy2" / "local"

  def publish(jar: os.Path,
              sourcesJar: os.Path,
              docJar: os.Path,
              pom: os.Path,
              ivy: os.Path,
              artifact: Artifact): Unit = {
    val releaseDir = root / artifact.group / artifact.id / artifact.version
    writeFiles(
      jar -> releaseDir / "jars" / s"${artifact.id}.jar",
      sourcesJar -> releaseDir / "srcs" / s"${artifact.id}-sources.jar",
      docJar -> releaseDir / "docs" / s"${artifact.id}-javadoc.jar",
      pom -> releaseDir / "poms" / s"${artifact.id}.pom",
      ivy -> releaseDir / "ivys" / "ivy.xml"
    )
  }

  private def writeFiles(fromTo: (os.Path, os.Path)*): Unit = {
    fromTo.foreach {
      case (from, to) =>
        os.makeDir.all(to / os.up)
        os.copy.over(from, to)
    }
  }

}