Skip to content
This repository has been archived by the owner on Jul 11, 2019. It is now read-only.

Fix publishing issue with multi-project #16

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 54 additions & 41 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,23 +1,9 @@
import ReleaseTransformations._
import execnpm.NpmDeps
import execnpm.NpmDeps.Dep


homepage := Some(url("https://github.com/cibotech/leaflet-facade"))

headerLicense := Some(HeaderLicense.Custom(
s"""/* Copyright (c) 2018 CiBO Technologies - All Rights Reserved
| * You may use, distribute, and modify this code under the
| * terms of the BSD 3-Clause license.
| *
| * A copy of the license can be found on the root of this repository,
| * at ${homepage.value.get.toString}/LICENSE.md,
| * or at https://opensource.org/licenses/BSD-3-Clause
| */
|
|""".stripMargin)
)

// How does this now work !?
//commentStyle := CommentStyle.cStyleBlockComment
name := "leaflet-facade"

lazy val globalSettings = Seq(
organization := "com.cibo",
Expand Down Expand Up @@ -46,40 +32,67 @@ lazy val globalSettings = Seq(
bintrayOrganization := Some("cibotech"),
bintrayRepository := "public",
bintrayPackageLabels := Seq("scala", "scala.js", "leaflet"),
requiresDOM := true,
licenses += ("BSD Simplified", url("https://opensource.org/licenses/BSD-3-Clause"))
)

lazy val root = project.in(file("."))
.aggregate(`leaflet-facade`, `leaflet-draw`)
.settings(
crossScalaVersions := Seq("2.11.8", "2.12.4"),
releaseCrossBuild := true,
publishArtifact := false,
publish := {}
licenses += ("BSD Simplified", url("https://opensource.org/licenses/BSD-3-Clause")),
homepage := Some(url("https://github.com/cibotech/leaflet-facade")),
headerLicense := Some(HeaderLicense.Custom(
s"""/* Copyright (c) 2018 CiBO Technologies - All Rights Reserved
| * You may use, distribute, and modify this code under the
| * terms of the BSD 3-Clause license.
| *
| * A copy of the license can be found on the root of this repository,
| * at ${homepage.value.get.toString}/LICENSE.md,
| * or at https://opensource.org/licenses/BSD-3-Clause
| */
|
|""".stripMargin)
)
)

lazy val `leaflet-facade` = project.in(file("leaflet"))
lazy val `leaflet` = project.in(file("leaflet"))
.settings(globalSettings)
.settings(
crossScalaVersions := Seq("2.11.8", "2.12.4"),
releaseCrossBuild := true,
name := "leaflet-facade",
libraryDependencies ++= Seq(
"org.scala-js" %%% "scalajs-dom" % "0.9.4"
),
jsDependencies ++= Seq(
"org.webjars.npm" % "leaflet" % "1.3.1" / "1.3.1/dist/leaflet.js"
)
) enablePlugins (ScalaJSPlugin)
npmDeps in Compile += Dep("leaflet", "1.3.4", List("leaflet.js"))
) enablePlugins (ExecNpmPlugin)

lazy val `leaflet-draw` = project.in(file("leaflet-draw"))
.settings(globalSettings)
.settings(
crossScalaVersions := Seq("2.11.8", "2.12.4"),
releaseCrossBuild := true,
name := "leaflet-draw-facade",
jsDependencies ++= Seq(
"org.webjars.npm" % "leaflet-draw" % "1.0.2" / "leaflet.draw.js"
)
) dependsOn (`leaflet-facade`) enablePlugins (ScalaJSPlugin)
npmDeps in Compile += Dep("leaflet-draw", "1.0.4", List("leaflet.draw.js"))
) dependsOn (`leaflet`) enablePlugins (ExecNpmPlugin)

lazy val `leaflet-pm` = project.in(file("leaflet-pm"))
.settings(globalSettings)
.settings(
name := "leaflet-pm",
npmDeps in Compile += Dep("leaflet.pm", "0.25.0", List("leaflet.pm.min.js"), true)
) dependsOn (`leaflet`) enablePlugins (ExecNpmPlugin)

lazy val buildExample = taskKey[Unit]("build")
lazy val example = project.in(file("example"))
.settings(
publishArtifact := false,
name := "leaflet-example",
publish := {},
buildExample := {
val exampleTarget = (target in Compile).value
val exampleResource = (resourceDirectory in Compile).value
val buildJS = (fullOptJS in Compile).value

// Copy js and deps files and resource directory in exemple target
IO.copyFile(buildJS.data, exampleTarget / "js/leaflet-facade.js")
IO.copyFile(dependencyFile.value, exampleTarget / "js/leaflet-facade-deps.js")
IO.copyDirectory(exampleResource, exampleTarget)
}) enablePlugins (ExecNpmPlugin) dependsOn(`leaflet-pm`, `leaflet-draw`)


lazy val root = project.in(file("."))
.aggregate(`leaflet`, `leaflet-draw`, `leaflet-pm`)
.settings(
publishLocal := {},
publish := {}
)
9 changes: 0 additions & 9 deletions example/leaflet-facade-jsdeps.js

This file was deleted.

82 changes: 0 additions & 82 deletions example/leaflet-facade-opt.js

This file was deleted.

122 changes: 122 additions & 0 deletions example/src/main/resources/css/leaflet.pm.css

Large diffs are not rendered by default.

9 changes: 5 additions & 4 deletions example/index.html → example/src/main/resources/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@
<meta charset="UTF-8">
<title>Leaflet Facade Demo</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.0.0-rc.2/leaflet.css">
<link rel="stylesheet" type="text/css" href="./styles.css">
<link rel="stylesheet" type="text/css" href="css/styles.css">
<link rel="stylesheet" type="text/css" href="css/leaflet.pm.css">
</head>
<body>

<div id="demo-map"></div>

<script type="text/javascript" src="./leaflet-facade-jsdeps.js"></script>
<script type="text/javascript" src="./leaflet-facade-opt.js"></script>
<script type="text/javascript" src="js/leaflet-facade.js"></script>
<script type="text/javascript" src="js/leaflet-facade-deps.js"></script>

<script type="text/javascript">
demo.LeafletExample().main();
example();
</script>
</body>

Expand Down
13 changes: 10 additions & 3 deletions example/src/main/scala/demo/LeafletExample.scala
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package demo


import com.cibo.leaflet.{LatLng, Leaflet}
import com.cibo.leaflet.pm._
import com.cibo.leaflet.pm.PM._
import com.cibo.leaflet._

import scala.scalajs.js
import scala.scalajs.js.annotation.JSExportTopLevel


object LeafletExample extends js.JSApp {
object LeafletExample {

import js.JSConverters._

def main(): Unit = {
@JSExportTopLevel("example")
def example(): Unit = {

val leafletMap = Leaflet.map("demo-map").setView(LatLng(51.505, -0.09), 13)

Expand All @@ -25,5 +29,8 @@ object LeafletExample extends js.JSApp {
).toJSArray

Leaflet.polygon(js.Array(coords)).addTo(leafletMap)

// PM
leafletMap.pm.addControls(ToolbarOptions.drawPolygon(false).drawMarker(true))
}
}
159 changes: 159 additions & 0 deletions leaflet-pm/src/main/scala/com/cibo/leaflet/Pm.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
package com.cibo.leaflet.pm

import scala.scalajs.js
import js.annotation._
import com.cibo.leaflet._

object PM {

// Monkey patching
@js.native
trait Mapify extends LeafletMap {
def pm: Map = js.native
}

// Monkey patching with implicit conversion
implicit def leafmap2Mapify(jq: LeafletMap): Mapify = jq.asInstanceOf[Mapify]
}

@JSGlobal
@js.native
class Map extends js.Object {
def addControls(options: js.UndefOr[ToolbarOptions]): Unit = js.native

def enableDraw(shape: String, options: js.UndefOr[DrawOptions]): Unit = js.native

def disableDraw(shape: String): Unit = js.native

def setPathOptions(options: PathOptions): Unit = js.native

def toggleRemoval(enabled: Boolean): Unit = js.native

def globalEditEnabled(): Boolean = js.native

def toggleGlobalEditMode(options: js.UndefOr[EditOptions]): Unit = js.native

// var Draw: Draw = js.native
}

@JSGlobal
@js.native
class ToolbarOptions extends js.Object

object ToolbarOptions extends ToolBarOptionsBuilder(noOpts)

class ToolBarOptionsBuilder(val dict: OptMap)
extends JSOptionBuilder[ToolbarOptions, ToolBarOptionsBuilder](
new ToolBarOptionsBuilder(_)) {

def position(v: String): ToolBarOptionsBuilder = jsOpt("position", v)

def drawMarker(v: Boolean): ToolBarOptionsBuilder = jsOpt("drawMarker", v)

def drawPolygon(v: Boolean): ToolBarOptionsBuilder = jsOpt("drawPolygon", v)

def drawPolyline(v: Boolean): ToolBarOptionsBuilder = jsOpt("drawPolyline", v)

def editPolygon(v: Boolean): ToolBarOptionsBuilder = jsOpt("editPolygon", v)

def deleteLayer(v: Boolean): ToolBarOptionsBuilder = jsOpt("deleteLayer", v)
}

@JSGlobal
@js.native
class DrawOptions extends js.Object

object DrawOptions extends DrawOptionsBuilder(noOpts)

class DrawOptionsBuilder(val dict: OptMap)
extends JSOptionBuilder[DrawOptions, DrawOptionsBuilder](
new DrawOptionsBuilder(_)) {
def templineStyle(v: PathOptions): DrawOptionsBuilder = jsOpt("templineStyle", v)

def hintlineStyle(v: PathOptions): DrawOptionsBuilder = jsOpt("hintlineStyle", v)

def pathOptions(v: PathOptions): DrawOptionsBuilder = jsOpt("pathOptions", v)
}

@JSGlobal
@js.native
class EditOptions extends js.Object

object EditOptions extends EditOptionsBuilder(noOpts)

class EditOptionsBuilder(val dict: OptMap)
extends JSOptionBuilder[EditOptions, EditOptionsBuilder](
new EditOptionsBuilder(_)) {
def draggable(v: PathOptions): EditOptionsBuilder = jsOpt("draggable", v)

def snappable(v: PathOptions): EditOptionsBuilder = jsOpt("snappable", v)

def snapDistance(v: PathOptions): EditOptionsBuilder = jsOpt("snapDistance", v)
}

package Edit {

@JSGlobal
@js.native
class Line extends js.Object{
def enabled: Boolean = js.native
}

object Line extends LineBuilder(noOpts)

class LineBuilder(val dict: OptMap)
extends JSOptionBuilder[Line, LineBuilder](
new LineBuilder(_)) {
def enable(v: js.UndefOr[EditOptions]): LineBuilder = jsOpt("enable", v)

def disable(v: js.UndefOr[Layer]): LineBuilder = jsOpt("disable", v)

def toggleEdit(v: js.UndefOr[EditOptions]): LineBuilder = jsOpt("toggleEdit", v)
}

@JSGlobal
@js.native
class Marker extends js.Object{
def enabled: Boolean = js.native
}

object Marker extends MarkerBuilder(noOpts)

class MarkerBuilder(val dict: OptMap)
extends JSOptionBuilder[Marker, MarkerBuilder](
new MarkerBuilder(_)) {

def enable(v: js.UndefOr[EditOptions]): MarkerBuilder = jsOpt("enable", v)

def disable(): MarkerBuilder = jsOpt("disable", js.undefined)

def toggleEdit(v: js.UndefOr[EditOptions]): MarkerBuilder = jsOpt("toggleEdit", v)
}

@JSGlobal
@js.native
class LayerGroup extends js.Object {

def findLayers(): js.Array[Layer] = js.native

def dragging(): Boolean = js.native

def getOptions(): EditOptions = js.native
}

object LayerGroup extends LayerGroupBuilder(noOpts)

class LayerGroupBuilder(val dict: OptMap)
extends JSOptionBuilder[LayerGroup, LayerGroupBuilder](
new LayerGroupBuilder(_)) {

def enable(v: js.UndefOr[EditOptions]): LayerGroupBuilder = jsOpt("enable", v)

def disable(): LayerGroupBuilder = jsOpt("disable", js.undefined)

def toggleEdit(v: js.UndefOr[EditOptions]): LayerGroupBuilder = jsOpt("toggleEdit", v)

def enabled(v: Boolean): LayerGroupBuilder = jsOpt("enabled", v)
}

}
4 changes: 4 additions & 0 deletions leaflet/src/main/scala/com/cibo/leaflet/package.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

package com.cibo

import scalajs.js

package object leaflet {

/**
Expand All @@ -19,4 +21,6 @@ package object leaflet {
type OptMap = scala.collection.Map[String, Any]

val noOpts = Map.empty[String, Any]

implicit def jsOptionBuilderToUndefOr[A <: js.Object ,B <: JSOptionBuilder[A, _]](builder: JSOptionBuilder[A, B]): js.UndefOr[A] = builder.build
}
5 changes: 4 additions & 1 deletion project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
resolvers += Resolver.sonatypeRepo("releases")

addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.25")
addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.0.0")
addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.9")
addSbtPlugin("org.foundweekends" % "sbt-bintray" % "0.5.4")
addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0")
addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0")
addSbtPlugin("fr.iscpif" % "scalajs-execnpm" % "0.1")