diff options
author | Jakob Odersky <jakob@driver.xyz> | 2018-08-17 14:41:16 -0600 |
---|---|---|
committer | Jakob Odersky <jakob@driver.xyz> | 2018-08-17 14:41:16 -0600 |
commit | e74356f96daf49fcfcf35983014342161baa921a (patch) | |
tree | 76b6a960427272d727320a19e6f9777b9776b00c /src | |
parent | cc3ab9c29f7b772e9194e4181b6de7c4d4784956 (diff) | |
download | sbt-settings-e74356f96daf49fcfcf35983014342161baa921a.tar.gz sbt-settings-e74356f96daf49fcfcf35983014342161baa921a.tar.bz2 sbt-settings-e74356f96daf49fcfcf35983014342161baa921a.zip |
Add workspace plugin
Diffstat (limited to 'src')
-rw-r--r-- | src/main/scala/xyz.driver.sbt/WorkspacePlugin.scala | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/main/scala/xyz.driver.sbt/WorkspacePlugin.scala b/src/main/scala/xyz.driver.sbt/WorkspacePlugin.scala new file mode 100644 index 0000000..9a66eb7 --- /dev/null +++ b/src/main/scala/xyz.driver.sbt/WorkspacePlugin.scala @@ -0,0 +1,32 @@ +package xyz.driver.sbt + +import java.nio.file.{Path, Paths} + +import sbt._ + +/** Enables using both source and binary dependencies for the same module, + * for faster development cycles in multi-project workflows. + * Adapted from https://github.com/sbt/sbt-sriracha. */ +object WorkspacePlugin extends AutoPlugin { + + private var _workspace = sys.props.get("sbt.workspace").orElse(sys.env.get("SBT_WORKSPACE")).map { base => + Paths.get(base) + } + def workspace: Option[Path] = synchronized(_workspace) + + override val requires = plugins.JvmPlugin + override val trigger = allRequirements + + object autoImport { + implicit class WorkspaceProject(project: Project) { + def dependsOn(binary: ModuleID, projectName: String, directory: Option[String] = None): Project = + WorkspacePlugin.workspace match { + case Some(base) => + project.dependsOn( + ProjectRef(base.resolve(directory.getOrElse(projectName)).toUri, projectName) + ) + case None => project.settings(Keys.libraryDependencies += binary) + } + } + } +} |