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