diff --git a/project/ActivatorDist.scala b/project/ActivatorDist.scala index 249bef252f..48e84078e4 100644 --- a/project/ActivatorDist.scala +++ b/project/ActivatorDist.scala @@ -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