diff options
| author | Chick Markley | 2017-09-19 09:36:56 -0700 |
|---|---|---|
| committer | GitHub | 2017-09-19 09:36:56 -0700 |
| commit | a4c072d5afd56cbc1d8292c865e9f8331d6e6f0f (patch) | |
| tree | f2cf57a46b7e5dcddf2636f06e7073499b04c053 /src | |
| parent | c5627f355767d4c4f5232fee81a61b7e8510672f (diff) | |
Create way of collecting program arguments in Driver (#659)
Adds programArgs to commonOptions
programArgs is all arguments on command line with out leading -/+
or are not bound to a flag.
Create simple test
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/ExecutionOptionsManager.scala | 8 | ||||
| -rw-r--r-- | src/test/scala/firrtlTests/DriverSpec.scala | 24 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/ExecutionOptionsManager.scala b/src/main/scala/firrtl/ExecutionOptionsManager.scala index e0bd1975..4ffc7915 100644 --- a/src/main/scala/firrtl/ExecutionOptionsManager.scala +++ b/src/main/scala/firrtl/ExecutionOptionsManager.scala @@ -34,7 +34,9 @@ case class CommonOptions( globalLogLevel: LogLevel.Value = LogLevel.None, logToFile: Boolean = false, logClassNames: Boolean = false, - classLogLevels: Map[String, LogLevel.Value] = Map.empty) extends ComposableOptions { + classLogLevels: Map[String, LogLevel.Value] = Map.empty, + programArgs: Seq[String] = Seq.empty +) extends ComposableOptions { def getLogFileName(optionsManager: ExecutionOptionsManager): String = { if(topName.isEmpty) { @@ -126,6 +128,10 @@ trait HasCommonOptions { .text(s"shows class names and log level in logging output, useful for target --class-log-level") parser.help("help").text("prints this usage text") + + parser.arg[String]("<arg>...").unbounded().optional().action( (x, c) => + commonOptions = commonOptions.copy(programArgs = commonOptions.programArgs :+ x) ).text("optional unbounded args") + } /** Firrtl output configuration specified by [[FirrtlExecutionOptions]] diff --git a/src/test/scala/firrtlTests/DriverSpec.scala b/src/test/scala/firrtlTests/DriverSpec.scala index e3164f89..190b2b42 100644 --- a/src/test/scala/firrtlTests/DriverSpec.scala +++ b/src/test/scala/firrtlTests/DriverSpec.scala @@ -11,6 +11,7 @@ import firrtl.transforms.BlackBoxSourceHelper import firrtl._ import firrtl.util.BackendCompilationUtilities +//noinspection ScalaStyle class DriverSpec extends FreeSpec with Matchers with BackendCompilationUtilities { "CommonOptions are some simple options available across the chisel3 ecosystem" - { "CommonOption provide an scopt implementation of an OptionParser" - { @@ -53,6 +54,29 @@ class DriverSpec extends FreeSpec with Matchers with BackendCompilationUtilities FileUtils.deleteDirectoryHierarchy("a") should be (true) } } + "options include by default a list of strings that are returned in commonOptions.programArgs" in { + val optionsManager = new ExecutionOptionsManager("test") + + optionsManager.parse(Array("--top-name", "dog", "fox", "tardigrade", "stomatopod")) should be (true) + println(s"programArgs ${optionsManager.commonOptions.programArgs}") + optionsManager.commonOptions.programArgs.length should be (3) + optionsManager.commonOptions.programArgs should be ("fox" :: "tardigrade" :: "stomatopod" :: Nil) + + optionsManager.commonOptions = CommonOptions() + optionsManager.parse( + Array("dog", "stomatopod")) should be (true) + println(s"programArgs ${optionsManager.commonOptions.programArgs}") + optionsManager.commonOptions.programArgs.length should be (2) + optionsManager.commonOptions.programArgs should be ("dog" :: "stomatopod" :: Nil) + + optionsManager.commonOptions = CommonOptions() + optionsManager.parse( + Array("fox", "--top-name", "dog", "tardigrade", "stomatopod")) should be (true) + println(s"programArgs ${optionsManager.commonOptions.programArgs}") + optionsManager.commonOptions.programArgs.length should be (3) + optionsManager.commonOptions.programArgs should be ("fox" :: "tardigrade" :: "stomatopod" :: Nil) + + } } "FirrtlOptions holds option information for the firrtl compiler" - { "It includes a CommonOptions" in { |
