aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2018-08-17 14:41:16 -0600
committerJakob Odersky <jakob@driver.xyz>2018-08-17 14:41:16 -0600
commite74356f96daf49fcfcf35983014342161baa921a (patch)
tree76b6a960427272d727320a19e6f9777b9776b00c /src
parentcc3ab9c29f7b772e9194e4181b6de7c4d4784956 (diff)
downloadsbt-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.scala32
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)
+ }
+ }
+ }
+}