aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Lawson2017-02-27 10:48:01 -0800
committerGitHub2017-02-27 10:48:01 -0800
commit8528ba768003a359bf6c40d2fdc102c4a0d6bea7 (patch)
tree827d99b4c32a426549ac43e69791f5fb0c3483eb
parent6b030c982c11a330c81daeee7b798f6c147b9a05 (diff)
Add chisel2 isVCSAvailable, isCommandAvailable to FileUtils. (#439)
-rw-r--r--src/main/scala/firrtl/Driver.scala17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/Driver.scala b/src/main/scala/firrtl/Driver.scala
index fb897936..0fdfa768 100644
--- a/src/main/scala/firrtl/Driver.scala
+++ b/src/main/scala/firrtl/Driver.scala
@@ -4,6 +4,7 @@ package firrtl
import scala.collection._
import scala.io.Source
+import scala.sys.process.{BasicIO,stringSeqToProcess}
import java.io.{File, FileNotFoundException}
import net.jcazevedo.moultingyaml._
@@ -257,4 +258,20 @@ object FileUtils {
result
}
}
+
+ /** Indicate if an external command (executable) is available.
+ *
+ * @param cmd the command/executable
+ * @return true if ```cmd``` is found in PATH.
+ */
+ def isCommandAvailable(cmd: String): Boolean = {
+ // Eat any output.
+ val sb = new StringBuffer
+ val ioToDevNull = BasicIO(false, sb, None)
+
+ Seq("bash", "-c", "which %s".format(cmd)).run(ioToDevNull).exitValue == 0
+ }
+
+ /** isVCSAvailable - flag indicating vcs is available (for Verilog compilation and testing. */
+ lazy val isVCSAvailable: Boolean = isCommandAvailable("vcs")
}