aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/options/OptionParser.scala
diff options
context:
space:
mode:
authorJack Koenig2019-04-26 13:10:44 -0700
committerGitHub2019-04-26 13:10:44 -0700
commita7cf6ff3416a11088d811a435ba71fd36b191fb4 (patch)
tree79e2e8c5753903ca6d14e9b952c26a07442bd980 /src/main/scala/firrtl/options/OptionParser.scala
parent99ae1d6649f1731c5dec2098b10733735232b72c (diff)
parentef8f06f23b9ee6cf86de2450752dfd0fcd32da80 (diff)
Merge pull request #1005 from freechipsproject/f764.7
Stage/Phase
Diffstat (limited to 'src/main/scala/firrtl/options/OptionParser.scala')
-rw-r--r--src/main/scala/firrtl/options/OptionParser.scala18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/main/scala/firrtl/options/OptionParser.scala b/src/main/scala/firrtl/options/OptionParser.scala
index 6d8095c0..986c5a8a 100644
--- a/src/main/scala/firrtl/options/OptionParser.scala
+++ b/src/main/scala/firrtl/options/OptionParser.scala
@@ -2,16 +2,28 @@
package firrtl.options
-import firrtl.{FIRRTLException, AnnotationSeq}
+import firrtl.AnnotationSeq
import scopt.OptionParser
-/** Causes an OptionParser to not call exit (call `sys.exit`) if the `--help` option is passed
- */
+case object OptionsHelpException extends Exception("Usage help invoked")
+
+/** OptionParser mixin that causes the OptionParser to not call exit (call `sys.exit`) if the `--help` option is
+ * passed */
trait DoNotTerminateOnExit { this: OptionParser[_] =>
override def terminate(exitState: Either[String, Unit]): Unit = Unit
}
+/** OptionParser mixin that converts to [[OptionsException]]
+ *
+ * Scopt, by default, will print errors to stderr, e.g., invalid arguments will do this. However, a [[Stage]] uses
+ * [[StageUtils.dramaticError]]. By converting this to an [[OptionsException]], a [[Stage]] can then catch the error an
+ * convert it to an [[OptionsException]] that a [[Stage]] can get at.
+ */
+trait ExceptOnError { this: OptionParser[_] =>
+ override def reportError(msg: String): Unit = throw new OptionsException(msg)
+}
+
/** A modified OptionParser with mutable termination and additional checks
*/
trait DuplicateHandling extends OptionParser[AnnotationSeq] {