diff options
Diffstat (limited to 'project/mavlink-library/src/main/scala/com/github/jodersky/mavlink/Main.scala')
-rw-r--r-- | project/mavlink-library/src/main/scala/com/github/jodersky/mavlink/Main.scala | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/project/mavlink-library/src/main/scala/com/github/jodersky/mavlink/Main.scala b/project/mavlink-library/src/main/scala/com/github/jodersky/mavlink/Main.scala new file mode 100644 index 0000000..5f77c1a --- /dev/null +++ b/project/mavlink-library/src/main/scala/com/github/jodersky/mavlink/Main.scala @@ -0,0 +1,41 @@ +package com.github.jodersky.mavlink + +import scala.xml.XML +import com.github.jodersky.mavlink.parsing.Protocol +import java.io.FileWriter +import java.io.BufferedWriter +import scalax.file.Path +import java.io.File + +object Main { + + def prettify(str: String) = str.replaceAll("(\\s*\n)(\\s*\n)+", "\n\n") + + private def processTemplates(protocol: Protocol, rootOut: Path) = { + val root = rootOut / Path.fromString("org/mavlink") + val mappings: List[(String, Path)] = List( + org.mavlink.txt.Crc().body -> Path("Crc.scala"), + org.mavlink.txt.Packet(protocol.messages).body -> Path("Packet.scala"), + org.mavlink.txt.Parser().body -> Path("Parser.scala"), + org.mavlink.messages.txt.Message(protocol.messages).body -> Path.fromString("messages/messages.scala") + ) + + for ((str, file) <- mappings) yield { + val out = root / file + out.createFile(true, false) + out.write(prettify(str)) + out + } + } + + def run(dialect: File, out: File) = { + val xml = XML.loadFile(dialect) + val protocol = Protocol.parse(xml) + processTemplates(protocol, Path(out)).map(_.fileOption.get) + } + + def main(args: Array[String]): Unit = { + run(new File(args(0)), new File(args(1))) + } + +}
\ No newline at end of file |