aboutsummaryrefslogtreecommitdiff
path: root/stage2/Lib.scala
diff options
context:
space:
mode:
authorJan Christopher Vogt <oss.nsp@cvogt.org>2016-06-23 22:20:09 -0400
committerGitHub <noreply@github.com>2016-06-23 22:20:09 -0400
commit7291a83f1e5fbcf8ee9c824b9b309130253e6673 (patch)
treec2dd99ebc5e61a22d4d05743b772dab3d7fb74fb /stage2/Lib.scala
parent2cbc42fd0809b60b1ee2116657d18b3f44f8aef1 (diff)
downloadcbt-7291a83f1e5fbcf8ee9c824b9b309130253e6673.tar.gz
cbt-7291a83f1e5fbcf8ee9c824b9b309130253e6673.tar.bz2
cbt-7291a83f1e5fbcf8ee9c824b9b309130253e6673.zip
close jar file in case of exception (#175)
Diffstat (limited to 'stage2/Lib.scala')
-rw-r--r--stage2/Lib.scala42
1 files changed, 22 insertions, 20 deletions
diff --git a/stage2/Lib.scala b/stage2/Lib.scala
index c08657f..8dd6e72 100644
--- a/stage2/Lib.scala
+++ b/stage2/Lib.scala
@@ -223,29 +223,31 @@ final class Lib(logger: Logger) extends Stage1Lib(logger) with Scaffold{
val manifest = new Manifest
manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0")
val jar = new JarOutputStream(new FileOutputStream(jarFile.toString), manifest)
+ try{
+ val names = for {
+ base <- files.filter(_.exists).map(realpath)
+ file <- listFilesRecursive(base) if file.isFile
+ } yield {
+ val name = if(base.isDirectory){
+ file.toString stripPrefix (base.toString ++ File.separator)
+ } else file.toString
+ val entry = new JarEntry( name )
+ entry.setTime(file.lastModified)
+ jar.putNextEntry(entry)
+ jar.write( readAllBytes( file.toPath ) )
+ jar.closeEntry
+ name
+ }
- val names = for {
- base <- files.filter(_.exists).map(realpath)
- file <- listFilesRecursive(base) if file.isFile
- } yield {
- val name = if(base.isDirectory){
- file.toString stripPrefix (base.toString ++ File.separator)
- } else file.toString
- val entry = new JarEntry( name )
- entry.setTime(file.lastModified)
- jar.putNextEntry(entry)
- jar.write( readAllBytes( file.toPath ) )
- jar.closeEntry
- name
+ val duplicateFiles = (names diff names.distinct).distinct
+ assert(
+ duplicateFiles.isEmpty,
+ s"Conflicting file names when trying to create $jarFile: "++duplicateFiles.mkString(", ")
+ )
+ } finally {
+ jar.close
}
- val duplicateFiles = (names diff names.distinct).distinct
- assert(
- duplicateFiles.isEmpty,
- s"Conflicting file names when trying to create $jarFile: "++duplicateFiles.mkString(", ")
- )
-
- jar.close
logger.lib("Done packaging " ++ jarFile.toString)
Some(jarFile)