From 126dbcb4dc30a420185674e26fc0a6acf450c9c9 Mon Sep 17 00:00:00 2001 From: Oliver Kennedy Date: Fri, 7 Jul 2023 18:41:25 -0400 Subject: [PATCH] WIP: getting a workflow together to allow code generation --- .../com/astraldb/catalyst/OptimizerTest.scala | 9 ++++ .../src/com/astraldb/catalyst/Generate.scala | 9 ++++ build.sc | 46 ++++++++++++++++++- 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 astral/catalyst/impl/src/com/astraldb/catalyst/OptimizerTest.scala create mode 100644 astral/catalyst/src/com/astraldb/catalyst/Generate.scala diff --git a/astral/catalyst/impl/src/com/astraldb/catalyst/OptimizerTest.scala b/astral/catalyst/impl/src/com/astraldb/catalyst/OptimizerTest.scala new file mode 100644 index 0000000..ecc8d75 --- /dev/null +++ b/astral/catalyst/impl/src/com/astraldb/catalyst/OptimizerTest.scala @@ -0,0 +1,9 @@ +package com.astraldb.catalyst + +object OptimizerTest +{ + def main(args: Array[String]): Unit = + { + println("Hello world") + } +} \ No newline at end of file diff --git a/astral/catalyst/src/com/astraldb/catalyst/Generate.scala b/astral/catalyst/src/com/astraldb/catalyst/Generate.scala new file mode 100644 index 0000000..adb7c37 --- /dev/null +++ b/astral/catalyst/src/com/astraldb/catalyst/Generate.scala @@ -0,0 +1,9 @@ +package com.astraldb.catalyst + +object Generate +{ + def main(args: Array[String]): Unit = + { + println("Optimizer.sql") + } +} \ No newline at end of file diff --git a/build.sc b/build.sc index 8b126c7..93fe37c 100644 --- a/build.sc +++ b/build.sc @@ -53,9 +53,53 @@ object astral extends Module { def scalaVersion = astral.scalaVersion - def mainClass = Some("com.astraldb.catalyst.Astral") + def mainClass = Some("com.astraldb.catalyst.Generate") def moduleDeps = Seq(astral.compiler) + + def classPath = T{ Seq[PathRef](compile().classes) ++ resources() } + + def rendered = T { + val target = T.dest + val files = scala.collection.mutable.Buffer[String]() + os.proc( + "scala", + "-cp", + classPath().mkString(":"), + mainClass().get, + target + ).call( + cwd = target, + stdout = os.ProcessOutput.Readlines( + line => files += line + ) + ) + + for(f <- files) + { + println(s"GOT : $f") + } + + /* return */ + files.map { + file => PathRef(target / file) + }.toSeq + } + + def render(args: String*) = T.command { + println(rendered()) + } + + object impl extends ScalaModule + { + def scalaVersion = "2.13.8" + + def generatedSources = T{ astral.catalyst.rendered() } + + def ivyDeps = Agg( + ivy"org.apache.spark::spark-sql::3.4.1", + ) + } } }