Skip to content

Commit 1ba23e4

Browse files
committed
Expose settings to allow for more granular control
1 parent 5983be7 commit 1ba23e4

File tree

15 files changed

+134
-0
lines changed

15 files changed

+134
-0
lines changed

src/main/scala/ai/kien/scalapy/plugin/ScalaPyJVMPlugin.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,7 @@ object ScalaPyJVMPlugin extends AutoPlugin {
6767
"scalapy.python.programname" -> scalapyPythonProgramName.value
6868
).map { case (k, v) => s"""-D$k=$v""" }.toSeq
6969
)
70+
71+
lazy val scalapySettings: Seq[Setting[_]] =
72+
projectSettings ++ ScalaPyPlugin.projectSettings
7073
}

src/main/scala/ai/kien/scalapy/plugin/ScalaPyNativePlugin.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,7 @@ object ScalaPyNativePlugin extends AutoPlugin {
2626
).value,
2727
nativeLinkingOptions ++= scalapyLinkingOptions.value
2828
)
29+
30+
lazy val scalapySettings: Seq[Setting[_]] =
31+
projectSettings ++ ScalaPyPlugin.projectSettings
2932
}

src/sbt-test/jvm/split/build.sbt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import scala.util.Properties
2+
import ai.kien.scalapy.plugin.ScalaPyJVMPlugin.scalapySettings
3+
4+
lazy val root = project
5+
.in(file("."))
6+
.settings(
7+
libraryDependencies ++= Seq(
8+
"me.shadaj" %% "scalapy-core" % "0.5.2",
9+
"org.scalatest" %% "scalatest" % "3.2.11" % Test
10+
),
11+
inConfig(Test)(scalapySettings)
12+
)
13+
14+
lazy val pythonExecutable = Properties.propOrNone("plugin.python.executable")
15+
16+
inThisBuild(
17+
pythonExecutable
18+
.map(p => Def.settings(scalapyPythonExecutable := p))
19+
.getOrElse(Def.settings())
20+
)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
project/
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
sbt.version=1.7.1
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
sys.props.get("plugin.version") match {
2+
case Some(v) => addSbtPlugin("ai.kien" % "sbt-scalapy" % v)
3+
case _ =>
4+
sys.error(
5+
"""|The system property 'plugin.version' is not defined.
6+
|Specify this property using the scriptedLaunchOpts -D.""".stripMargin
7+
)
8+
}
9+
10+
libraryDependencies += "ai.kien" %% "python-native-libs" % "0.2.3"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import me.shadaj.scalapy.py
2+
import me.shadaj.scalapy.py.{PyQuote, SeqConverters}
3+
4+
import scala.util.{Try, Success, Failure}
5+
6+
object Main {
7+
def main(args: Array[String]): Unit = {
8+
(try {
9+
py.Dynamic.global.list(Seq(1, 2, 3).toPythonCopy)
10+
Success(true)
11+
} catch {
12+
case t: Throwable => Failure(t)
13+
}) fold (
14+
t => println(s"Successfully failed with $t}"),
15+
_ => sys.error("This should not succeed")
16+
)
17+
}
18+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import me.shadaj.scalapy.py
2+
import me.shadaj.scalapy.py.{PyQuote, SeqConverters}
3+
import org.scalatest.funsuite.AnyFunSuite
4+
5+
class PythonTest extends AnyFunSuite {
6+
test("ScalaPy runs successfully") {
7+
py.Dynamic.global.list(Seq(1, 2, 3).toPythonCopy)
8+
py"'Hello from ScalaPy!'"
9+
if (System.getenv.containsKey("CI_VIRTUALENV")) {
10+
println(s"Successfully load ${py.module("dummy")}")
11+
}
12+
}
13+
}

src/sbt-test/jvm/split/test

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
> run
2+
> test
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import scala.util.Properties
2+
import ai.kien.scalapy.plugin.ScalaPyNativePlugin.scalapySettings
3+
4+
lazy val root = project
5+
.in(file("."))
6+
.enablePlugins(ScalaNativePlugin)
7+
.settings(
8+
libraryDependencies ++= Seq(
9+
"me.shadaj" %%% "scalapy-core" % "0.5.2" % Test,
10+
"org.scalatest" %%% "scalatest" % "3.2.10" % Test
11+
),
12+
inConfig(Test)(scalapySettings),
13+
TaskKey[Unit]("check") := {
14+
println(
15+
s"Compile / nativeLinkingOptions == ${(Compile / nativeLinkingOptions).??(Seq[String]()).value}"
16+
)
17+
println(
18+
s"Test / nativeLinkingOptions == ${(Test / nativeLinkingOptions).value}"
19+
)
20+
if (
21+
(Compile / nativeLinkingOptions)
22+
.??(Seq[String]())
23+
.value == (Test / nativeLinkingOptions).value
24+
) {
25+
sys.error("Settings from ScalaPyNativePlugin should not have been applied to Compile.")
26+
}
27+
}
28+
)
29+
30+
lazy val pythonExecutable = Properties.propOrNone("plugin.python.executable")
31+
32+
inThisBuild(
33+
pythonExecutable
34+
.map(p => Def.settings(scalapyPythonExecutable := p))
35+
.getOrElse(Def.settings())
36+
)

0 commit comments

Comments
 (0)