+pro #3910 Make the build package all Activator templates
This commit is contained in:
parent
2ac79d0666
commit
5509cb3d62
1 changed files with 16 additions and 24 deletions
|
|
@ -2,9 +2,9 @@ package akka
|
|||
|
||||
import sbt._
|
||||
import sbt.Keys._
|
||||
import sbt.classpath.ClasspathUtilities
|
||||
import sbt.Project.Initialize
|
||||
import sbt.Def.Initialize
|
||||
import java.io.File
|
||||
import sbt.Task
|
||||
|
||||
object ActivatorDist {
|
||||
|
||||
|
|
@ -16,33 +16,25 @@ object ActivatorDist {
|
|||
activatorDist <<= activatorDistTask
|
||||
)
|
||||
|
||||
def aggregatedProjects(projectRef: ProjectRef, structure: Load.BuildStructure, exclude: Set[String]): Seq[ProjectRef] = {
|
||||
val aggregate = Project.getProject(projectRef, structure).toSeq.flatMap(_.aggregate)
|
||||
aggregate flatMap { ref =>
|
||||
if (exclude contains ref.project) Seq.empty
|
||||
else ref +: aggregatedProjects(ref, structure, exclude)
|
||||
}
|
||||
}
|
||||
|
||||
def activatorDistTask: Initialize[Task[File]] = {
|
||||
(thisProjectRef, baseDirectory, activatorDistDirectory, version, buildStructure, streams) map {
|
||||
(project, projectBase, activatorDistDirectory, version, structure, s) => {
|
||||
val exclude = Set("akka-sample-osgi-dining-hakkers", "akka-sample-osgi-dining-hakkers-api",
|
||||
"akka-sample-osgi-dining-hakkers-command", "akka-sample-osgi-dining-hakkers-core",
|
||||
"akka-sample-osgi-dining-hakkers-uncommons", "akka-sample-osgi-dining-hakkers-integration")
|
||||
val allProjects = aggregatedProjects(project, structure, exclude).flatMap(p => Project.getProject(p, structure))
|
||||
val directories = projectBase.listFiles(DirectoryFilter).filter(dir => (dir / "activator.properties").exists)
|
||||
val rootGitignoreLines = IO.readLines(AkkaBuild.akka.base / ".gitignore")
|
||||
for (p <- allProjects) {
|
||||
val localGitignoreLines = if ((p.base / ".gitignore").exists) IO.readLines(p.base / ".gitignore") else Nil
|
||||
val gitignorePathFinder = (".gitignore" :: localGitignoreLines ::: rootGitignoreLines).foldLeft(PathFinder.empty)(
|
||||
(acc, x) => acc +++ (p.base * x))
|
||||
val filteredPathFinder = (p.base * "*") --- gitignorePathFinder
|
||||
for (f <- filteredPathFinder.get) {
|
||||
val target = activatorDistDirectory / p.id / f.name
|
||||
println("copy: " + target)
|
||||
IO.copyDirectory(f, target, overwrite = true, preserveLastModified = true)
|
||||
for (dir <- directories) {
|
||||
val localGitignoreLines = if ((dir / ".gitignore").exists) IO.readLines(dir / ".gitignore") else Nil
|
||||
val gitignoreFileFilter = (".gitignore" :: localGitignoreLines ::: rootGitignoreLines).
|
||||
foldLeft[FileFilter](NothingFilter)((acc, x) => acc || x)
|
||||
val filteredPathFinder = PathFinder(dir) descendantsExcept("*", gitignoreFileFilter) filter(_.isFile)
|
||||
filteredPathFinder pair Path.rebase(dir, activatorDistDirectory / dir.name) map {
|
||||
case (source, target) =>
|
||||
s.log.info(s"copying: $source -> $target")
|
||||
IO.copyFile(source, target, preserveLastModified = true)
|
||||
}
|
||||
Dist.zip(activatorDistDirectory / p.id, activatorDistDirectory / (p.id + "-" + version + ".zip"))
|
||||
val targetDir = activatorDistDirectory / dir.name
|
||||
val targetFile = activatorDistDirectory / (dir.name + "-" + version + ".zip")
|
||||
s.log.info(s"zipping: $targetDir -> $targetFile")
|
||||
Dist.zip(targetDir, targetFile)
|
||||
}
|
||||
|
||||
activatorDistDirectory
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue