1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-06-10 08:29:37 +00:00

Release package building script

This commit is contained in:
Karol Stasiak 2018-01-20 23:32:34 +01:00
parent 5d6be83499
commit 474639760a
2 changed files with 34 additions and 1 deletions

3
.gitignore vendored
View File

@ -4,6 +4,7 @@ target/
project/target
project/project/target/
stuff
releases
# hidden files
*.~
@ -11,6 +12,8 @@ stuff
# compiled Scala files
*.jar
*.class
*.zip
*.js
# compiled Millfork files
*.prg

View File

@ -32,4 +32,34 @@ lazy val root = (project in file(".")).
settings(
buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion),
buildInfoPackage := "millfork.buildinfo"
)
)
import sbtassembly.AssemblyKeys
val releaseDist = TaskKey[File]("release-dist", "Creates a distributable zip file.")
releaseDist := {
val jar = AssemblyKeys.assembly.value
val base = Keys.baseDirectory.value
val target = Keys.target.value
val name = Keys.name.value
val version = Keys.version.value
val distDir = target / (name + "-" + version)
val releasesDir = base / "releases"
val zipFile = releasesDir / (name + "-" + version + ".zip")
IO.delete(zipFile)
IO.delete(distDir)
IO.createDirectory(releasesDir)
IO.createDirectory(distDir)
IO.copyFile(jar, distDir / jar.name)
def copyDir(name: String): Unit = {
IO.createDirectory(distDir / name)
IO.copyDirectory(base / name, distDir / name)
}
copyDir("include")
copyDir("doc")
def entries(f: File): List[File] = f :: (if (f.isDirectory) IO.listFiles(f).toList.flatMap(entries) else Nil)
IO.zip(entries(distDir).map(d => (d, d.getAbsolutePath.substring(distDir.getParent.length + 1))), zipFile)
IO.delete(distDir)
zipFile
}