From 47f22231c4b67aa450b5edeed08495a4457f3054 Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Tue, 23 Aug 2016 11:16:19 -0700 Subject: turn codegen into publish-able plugin --- build.sbt | 14 +++++-- src/main/scala/CodegenPlugin.scala | 76 ++++++++++++++++++++++---------------- 2 files changed, 54 insertions(+), 36 deletions(-) diff --git a/build.sbt b/build.sbt index f583d50..b4e1cd9 100644 --- a/build.sbt +++ b/build.sbt @@ -1,12 +1,18 @@ -// sbtPlugin := true +sbtPlugin := true -val scalaVersionValue = "2.11.8" +organization := "com.drivergrp" + +name := "slick-codegen-plugin" + +version := "0.1" + +val scalaVersionValue = "2.10.6" scalaVersion := scalaVersionValue libraryDependencies ++= Seq( "com.typesafe.slick" %% "slick" % "3.1.1", "com.typesafe.slick" %% "slick-codegen" % "3.1.1", - "org.scala-lang" % "scala-reflect" % scalaVersionValue, - "org.postgresql" % "postgresql" % "9.3-1102-jdbc41" + "org.postgresql" % "postgresql" % "9.3-1102-jdbc41", + "org.scala-lang" % "scala-reflect" % scalaVersionValue ) diff --git a/src/main/scala/CodegenPlugin.scala b/src/main/scala/CodegenPlugin.scala index 36f92a3..a401632 100644 --- a/src/main/scala/CodegenPlugin.scala +++ b/src/main/scala/CodegenPlugin.scala @@ -1,39 +1,51 @@ -/* import sbt._ import sbt.Keys._ import complete.DefaultParsers._ object CodegenPlugin extends AutoPlugin { - lazy val slick = TaskKey[Seq[File]]("gen-tables") - lazy val slickCodeGenTask = (baseDirectory, //sourceManaged in Compile, - dependencyClasspath in Compile, - runner in Compile, streams) map { - (dir, cp, r, s) => - val url = "jdbc:postgresql://postgres/ctig" - val jdbcDriver = "org.postgresql.Driver" - val slickDriver = "slick.driver.PostgresDriver" - val pkg = "dbmodels" - val outputDir = (dir / "app" / pkg).getPath - val fname = outputDir + "/Tables.scala" - val typesfname = (file(sharedSrcDir) / "src" / "main" / "scala" / pkg / "rows" / "TableTypes.scala").getPath - val schemas = "patients,portal,work_queues,confidential,case_accessioning,samples.samples,samples.subsamples,samples.shipment_preps,samples.collection_methods,experiments.experiments,experiments.exp_types,experiments.somatic_snvs_indels_filtered,samples.basic_diagnosis,samples.molecular_tests,samples.sample_pathology,samples.path_molecular_tests" - val user = "ctig_portal" - val password = "coolnurseconspiracyhandbook" - toError(r.run( - "codegen.NamespacedCodegen", - cp.files, - Array( - slickDriver, - jdbcDriver, - url, - pkg, - schemas, - fname, - typesfname, - user, - password), - s.log)) - Seq(file(fname)) + object autoImport { + lazy val genTables = TaskKey[Seq[File]]("gen-tables") + lazy val slickCodeGenTask = (baseDirectory, //sourceManaged in Compile, + dependencyClasspath in Compile, + runner in Compile, streams) map { + (dir, cp, r, s) => + val url = "jdbc:postgresql://postgres/ctig" + val jdbcDriver = "org.postgresql.Driver" + val slickDriver = "slick.driver.PostgresDriver" + val pkg = "dbmodels" + val outputDir = (dir / "app" / pkg).getPath + val fname = outputDir + "/Tables.scala" + // TODO: typesfname should be a parameter + val typesfname = (file("shared") / "src" / "main" / "scala" / pkg / "rows" / "TableTypes.scala").getPath + val schemas = "patients,portal,work_queues,confidential,case_accessioning,samples.samples,samples.subsamples,samples.shipment_preps,samples.collection_methods,experiments.experiments,experiments.exp_types,experiments.somatic_snvs_indels_filtered,samples.basic_diagnosis,samples.molecular_tests,samples.sample_pathology,samples.path_molecular_tests" + val user = "ctig_portal" + val password = "coolnurseconspiracyhandbook" + codegen.NamespacedCodegen.main( + Array( + slickDriver, + jdbcDriver, + url, + pkg, + schemas, + fname, + typesfname, + user, + password)) + /*toError(r.run( + "codegen.NamespacedCodegen", + cp.files, + Array( + slickDriver, + jdbcDriver, + url, + pkg, + schemas, + fname, + typesfname, + user, + password), + s.log))*/ + Seq(file(fname)) + } } } -*/ -- cgit v1.2.3