diff options
Diffstat (limited to 'src/main/scala/firrtl/Driver.scala')
| -rw-r--r-- | src/main/scala/firrtl/Driver.scala | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/Driver.scala b/src/main/scala/firrtl/Driver.scala index 97d0ce4e..2315ad55 100644 --- a/src/main/scala/firrtl/Driver.scala +++ b/src/main/scala/firrtl/Driver.scala @@ -148,6 +148,16 @@ object Driver { LegacyAnnotation.convertLegacyAnnos(annos) } + private sealed trait FileExtension + private case object FirrtlFile extends FileExtension + private case object ProtoBufFile extends FileExtension + + private def getFileExtension(filename: String): FileExtension = + filename.drop(filename.lastIndexOf('.')) match { + case ".pb" => ProtoBufFile + case _ => FirrtlFile // Default to FIRRTL File + } + // Useful for handling erros in the options case class OptionsException(msg: String) extends Exception(msg) @@ -183,7 +193,11 @@ object Driver { } val inputFileName = firrtlConfig.getInputFileName(optionsManager) try { - Parser.parseFile(inputFileName, firrtlConfig.infoMode) + // TODO What does InfoMode mean to ProtoBuf? + getFileExtension(inputFileName) match { + case ProtoBufFile => proto.FromProto.fromFile(inputFileName) + case FirrtlFile => Parser.parseFile(inputFileName, firrtlConfig.infoMode) + } } catch { case _: FileNotFoundException => |
