aboutsummaryrefslogtreecommitdiff
path: root/stage2/Lib.scala
diff options
context:
space:
mode:
authorChavXO <mchavinda@colgate.edu>2016-07-17 20:59:44 +0000
committerChristopher Vogt <oss.nsp@cvogt.org>2016-08-28 23:37:16 -0400
commit2d291a4fe19330020d7c1845bbb1deee204c6d69 (patch)
tree52f6bb16a1a6faf2e93675ed5c22f58ac21d8404 /stage2/Lib.scala
parentc35fd1fd51c44cbb954084d0e048b3613c7cdd45 (diff)
downloadcbt-2d291a4fe19330020d7c1845bbb1deee204c6d69.tar.gz
cbt-2d291a4fe19330020d7c1845bbb1deee204c6d69.tar.bz2
cbt-2d291a4fe19330020d7c1845bbb1deee204c6d69.zip
Add clean task
Diffstat (limited to 'stage2/Lib.scala')
-rw-r--r--stage2/Lib.scala41
1 files changed, 40 insertions, 1 deletions
diff --git a/stage2/Lib.scala b/stage2/Lib.scala
index 118c9a4..e05085e 100644
--- a/stage2/Lib.scala
+++ b/stage2/Lib.scala
@@ -4,7 +4,7 @@ import java.io._
import java.net._
import java.lang.reflect.InvocationTargetException
import java.nio.file.{Path =>_,_}
-import java.nio.file.Files.readAllBytes
+import java.nio.file.Files.{readAllBytes, deleteIfExists}
import java.security.MessageDigest
import java.util.jar._
import java.lang.reflect.Method
@@ -199,6 +199,45 @@ final class Lib(logger: Logger) extends Stage1Lib(logger) with Scaffold{
}
}
+ def clean (compileTarget : File, option: String) : ExitCode = {
+ /* recursively deletes folders*/
+ def deleteRecursive(file: File): Boolean = {
+ if (file.isDirectory) {
+ file.listFiles.map(deleteRecursive(_))
+ }
+ deleteIfExists(file.toPath)
+ }
+
+ def listFilesToDelete(file: File): Unit = {
+ if (file.isDirectory) {
+ file.listFiles.map(listFilesToDelete(_))
+ }
+ println(file.toString)
+ }
+ listFilesToDelete(compileTarget)
+ val delete = if (option != "-f") {
+ Option(System.console).getOrElse(
+ throw new Exception("Can't access Console. Try running `cbt direct clean` or `cbt clean -f`.")
+ ).readLine(
+ "Delete file(s) [y/n]: "
+ ).head.toLower
+ } else 'y'
+
+ if (delete == 'y') {
+ logger.lib(s"""Cleaning ${compileTarget}""")
+ if (!compileTarget.exists) return ExitCode.Success
+ if (deleteRecursive(compileTarget)) {
+ logger.lib("Succeeded")
+ ExitCode.Success
+ } else {
+ logger.lib("Failed")
+ ExitCode.Failure
+ }
+ } else {
+ ExitCode.Failure
+ }
+ }
+
// file system helpers
def basename(path: File): String = path.toString.stripSuffix("/").split("/").last
def dirname(path: File): File = new File(realpath(path).string.stripSuffix("/").split("/").dropRight(1).mkString("/"))