summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Fischer <nfischer921@gmail.com>2019-04-09 16:36:25 -0700
committerTobias Roeser <le.petit.fou@web.de>2019-04-17 08:06:46 +0200
commit1b2267cb3e52f713e2a68f0182124224cd18f341 (patch)
tree7f2e7320e236d1711ccfc569bb045b331a77eac9
parentc285ddaabe980b72e6cff240ed1c22664913a2e6 (diff)
downloadmill-1b2267cb3e52f713e2a68f0182124224cd18f341.tar.gz
mill-1b2267cb3e52f713e2a68f0182124224cd18f341.tar.bz2
mill-1b2267cb3e52f713e2a68f0182124224cd18f341.zip
Add other essential commands
-rw-r--r--contrib/flyway/src/FlywayModule.scala33
1 files changed, 23 insertions, 10 deletions
diff --git a/contrib/flyway/src/FlywayModule.scala b/contrib/flyway/src/FlywayModule.scala
index 86e7ea32..3d0e7552 100644
--- a/contrib/flyway/src/FlywayModule.scala
+++ b/contrib/flyway/src/FlywayModule.scala
@@ -6,10 +6,13 @@ import java.net.URLClassLoader
import mill.scalalib.Lib.resolveDependencies
import mill.scalalib._
import org.flywaydb.core.Flyway
+import org.flywaydb.core.api.MigrationVersion
import org.flywaydb.core.api.logging.LogFactory
import org.flywaydb.core.internal.configuration.{ConfigUtils => flyway}
+import org.flywaydb.core.internal.info.MigrationInfoDumper
import org.flywaydb.core.internal.logging.console.ConsoleLog.Level
import org.flywaydb.core.internal.logging.console.ConsoleLogCreator
+import upickle.default.writer
import scala.collection.JavaConverters._
@@ -29,31 +32,41 @@ trait FlywayModule extends JavaModule {
flywayDriverDeps()
))
- private def tToOptPair[A](key: String, t: A) =
- Option(t)
+ private def strToOptPair[A](key: String, v: String) =
+ Option(v)
.filter {
case a: String => a.nonEmpty
case _ => true
}
.map(key -> _)
-
- def flywayInstance = T {
+
+ private implicit val flywayWriter = writer[String].comap[Flyway](_.toString)
+ def flywayInstance = T.command {
val jdbcClassloader = new URLClassLoader(jdbcClasspath().map(_.path.toIO.toURI.toURL).toArray)
val configProps = Map(flyway.URL -> flywayUrl()) ++
- tToOptPair(flyway.USER, flywayUser()) ++
- tToOptPair(flyway.PASSWORD, flywayPassword())
+ strToOptPair(flyway.USER, flywayUser()) ++
+ strToOptPair(flyway.PASSWORD, flywayPassword())
LogFactory.setLogCreator(new ConsoleLogCreator(Level.INFO))
Flyway
.configure(jdbcClassloader)
- .locations(flywayFileLocations().map("filesystem:" + _.path):_*)
+ .locations(flywayFileLocations().map("filesystem:" + _.path): _*)
.configuration(configProps.asJava)
.load
}
- def flywayMigrate() = T.command (
- flywayInstance().migrate()
- )
+ def flywayMigrate() = T.command(flywayInstance().migrate())
+ def flywayClean() = T.command(flywayInstance().clean())
+ def flywayBaseline() = T.command(flywayInstance().baseline())
+ def flywayInfo() = T.command {
+ val log = T.ctx().log
+ val info = flywayInstance().info
+ val current = info.current
+ val currentSchemaVersion = if (current == null) MigrationVersion.EMPTY
+ else current.getVersion
+ log.info("Schema version: " + currentSchemaVersion)
+ log.info(MigrationInfoDumper.dumpToAsciiTable(info.all))
+ }
}