diff --git a/src/main/scala/InputArgs.scala b/src/main/scala/InputArgs.scala index 7cde77b..9b7a2fd 100644 --- a/src/main/scala/InputArgs.scala +++ b/src/main/scala/InputArgs.scala @@ -10,7 +10,8 @@ case class InputArgs( outputDirectory: Option[File] = None, inputFileInsteadOfStdin: Option[File] = None, suppressMatched: Boolean = false, - silentMode: Boolean = false + silentMode: Boolean = false, + elideEmptyFiles: Boolean = false ) /** Use [[OParserBuilder]] API to specify how to take input args from the @@ -68,6 +69,10 @@ object InputArgs { .optional() .text("Quiet") .action((_, conf) => conf.copy(silentMode = true)), + opt[Unit]('z', "elide-empty-files") + .optional() + .text("remove empty output files") + .action((_, conf) => conf.copy(elideEmptyFiles = true)), help("help").text("prints this usage text") ) } diff --git a/src/main/scala/Resplit.scala b/src/main/scala/Resplit.scala index 653c7b1..ae0ed03 100644 --- a/src/main/scala/Resplit.scala +++ b/src/main/scala/Resplit.scala @@ -34,6 +34,10 @@ object Resplit { args.regexToMatch.matches(thisLine) ) } + .filter { chunk => + if (args.elideEmptyFiles) chunk.nonEmpty || chunk.forall(_.nonEmpty) + else true + } .zipWithIndex .map { (chunkOfLines, chunkNumber) => (