From fe65dd173d5388d94f7ea018a301195117f90d4a Mon Sep 17 00:00:00 2001
From: Peter van 't Hof
Date: Wed, 9 Nov 2016 19:57:53 +0100
Subject: [PATCH] Added sanity checks for outputDir
---
.../nl/lumc/sasc/biopet/core/BiopetQScript.scala | 14 ++++++++++++++
.../nl/lumc/sasc/biopet/core/PipelineCommand.scala | 1 +
2 files changed, 15 insertions(+)
diff --git a/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala b/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala
index 14689457c..427b79ade 100644
--- a/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala
+++ b/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala
@@ -38,6 +38,8 @@ trait BiopetQScript extends Configurable with GatkLogging { qscript: QScript =>
if (config.contains("output_dir", path = Nil)) config("output_dir", path = Nil).asFile
else new File(".")
}
+ require(outputDir.canRead, s"No premision to read outputdir: $outputDir")
+ require(outputDir.canWrite, s"No premision to read outputdir: $outputDir")
@Argument(doc = "Disable all scatters", shortName = "DSC", required = false)
var disableScatter: Boolean = false
@@ -67,6 +69,9 @@ trait BiopetQScript extends Configurable with GatkLogging { qscript: QScript =>
final def script() {
outputDir = config("output_dir")
outputDir = outputDir.getAbsoluteFile
+
+ BiopetQScript.checkOutputDir(outputDir)
+
init()
biopetScript()
logger.info("Biopet script done")
@@ -153,4 +158,13 @@ trait BiopetQScript extends Configurable with GatkLogging { qscript: QScript =>
object BiopetQScript {
case class InputFile(file: File, md5: Option[String] = None)
+
+ def checkOutputDir(outputDir: File): Unit = {
+ // Sanity checks
+ require(outputDir.getParentFile.canRead, s"No premision to read parent of outputdir: ${outputDir.getParentFile}")
+ require(outputDir.getParentFile.canWrite, s"No premision to write parent of outputdir: ${outputDir.getParentFile}")
+ outputDir.mkdir()
+ require(outputDir.canRead, s"No premision to read outputdir: $outputDir")
+ require(outputDir.canWrite, s"No premision to write outputdir: $outputDir")
+ }
}
diff --git a/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/PipelineCommand.scala b/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/PipelineCommand.scala
index cc9e1a0b6..84d0a170b 100644
--- a/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/PipelineCommand.scala
+++ b/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/PipelineCommand.scala
@@ -77,6 +77,7 @@ trait PipelineCommand extends MainCommand with GatkLogging with ImplicitConversi
val pipelineName = this.getClass.getSimpleName.toLowerCase.split("""\$""").head
val pipelineConfig = globalConfig.map.getOrElse(pipelineName, Map()).asInstanceOf[Map[String, Any]]
val pipelineOutputDir = new File(globalConfig.map.getOrElse("output_dir", pipelineConfig.getOrElse("output_dir", "./")).toString)
+ BiopetQScript.checkOutputDir(pipelineOutputDir)
val logDir: File = new File(pipelineOutputDir, ".log")
logDir.mkdirs()
new File(logDir, "biopet." + BiopetQCommandLine.timestamp + ".log")
--
GitLab