mirror of
https://github.com/apple/pkl.git
synced 2026-05-26 00:29:14 +02:00
Compare commits
60 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e99d145299 | |||
| 5c944600fa | |||
| 5030061412 | |||
| 219e766003 | |||
| d29ae07e14 | |||
| 4226c21a42 | |||
| 40c88930c5 | |||
| d5beb3f331 | |||
| d8adb28dd1 | |||
| 85529c9b7e | |||
| 50541d9cda | |||
| ea778a7e7a | |||
| ffc9167bf5 | |||
| ede48d0fff | |||
| eab71229e7 | |||
| 10eccb100c | |||
| 2c18f13d08 | |||
| 9427387019 | |||
| db800d4521 | |||
| 08c414f3ac | |||
| 9469dd885d | |||
| 7df447924e | |||
| 7bf150055c | |||
| 1d6261b263 | |||
| 72874ec34a | |||
| 28c20a8652 | |||
| bbeeffdd32 | |||
| 825fcf5d1d | |||
| fbcf83aa76 | |||
| be0142d46b | |||
| ef4989aa35 | |||
| 1a25e044ac | |||
| fdb2bd8c75 | |||
| a8f76d6209 | |||
| c7680aea1f | |||
| 3223083324 | |||
| cce49a40fa | |||
| f6d3fb1228 | |||
| 6c036bf82a | |||
| c602dbb84c | |||
| bed008b3da | |||
| 80a4dc9617 | |||
| b8aad85943 | |||
| 91fec70668 | |||
| 8c5bd3b7dd | |||
| 42dcad25c6 | |||
| 3a29ea8998 | |||
| 98ab741c54 | |||
| ffa3c14fb3 | |||
| e230fcf1a9 | |||
| cf9d87373d | |||
| 55eac2088b | |||
| cecaf39aff | |||
| d03a074f63 | |||
| c585a40601 | |||
| 2e77d44877 | |||
| 5d90cf8f4e | |||
| 63f89fb679 | |||
| d1171db3d5 | |||
| f327c8e086 |
+10
-6
@@ -14,11 +14,11 @@
|
|||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// File gets rendered to .circleci/config.yml via git hook.
|
// File gets rendered to .circleci/config.yml via git hook.
|
||||||
amends "package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.circleci@1.2.0#/PklCI.pkl"
|
amends "package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.circleci@1.2.1#/PklCI.pkl"
|
||||||
|
|
||||||
import "jobs/BuildNativeJob.pkl"
|
import "jobs/BuildNativeJob.pkl"
|
||||||
import "jobs/GradleCheckJob.pkl"
|
|
||||||
import "jobs/DeployJob.pkl"
|
import "jobs/DeployJob.pkl"
|
||||||
|
import "jobs/GradleCheckJob.pkl"
|
||||||
import "jobs/SimpleGradleJob.pkl"
|
import "jobs/SimpleGradleJob.pkl"
|
||||||
|
|
||||||
local prbJobs: Listing<String> = gradleCheckJobs.keys.toListing()
|
local prbJobs: Listing<String> = gradleCheckJobs.keys.toListing()
|
||||||
@@ -130,15 +130,18 @@ jobs {
|
|||||||
[jobName] = job.job
|
[jobName] = job.job
|
||||||
}
|
}
|
||||||
["bench"] = new SimpleGradleJob { command = "bench:jmh" }.job
|
["bench"] = new SimpleGradleJob { command = "bench:jmh" }.job
|
||||||
["gradle-compatibility"] = new SimpleGradleJob {
|
["gradle-compatibility"] =
|
||||||
|
new SimpleGradleJob {
|
||||||
name = "gradle compatibility"
|
name = "gradle compatibility"
|
||||||
command = #"""
|
command =
|
||||||
|
#"""
|
||||||
:pkl-gradle:build \
|
:pkl-gradle:build \
|
||||||
:pkl-gradle:compatibilityTestReleases
|
:pkl-gradle:compatibilityTestReleases
|
||||||
"""#
|
"""#
|
||||||
}.job
|
}.job
|
||||||
["deploy-snapshot"] = new DeployJob { command = "publishToSonatype" }.job
|
["deploy-snapshot"] = new DeployJob { command = "publishToSonatype" }.job
|
||||||
["deploy-release"] = new DeployJob {
|
["deploy-release"] =
|
||||||
|
new DeployJob {
|
||||||
isRelease = true
|
isRelease = true
|
||||||
command = "publishToSonatype closeAndReleaseSonatypeStagingRepository"
|
command = "publishToSonatype closeAndReleaseSonatypeStagingRepository"
|
||||||
}.job
|
}.job
|
||||||
@@ -150,7 +153,8 @@ jobs {
|
|||||||
new AttachWorkspaceStep { at = "." }
|
new AttachWorkspaceStep { at = "." }
|
||||||
new RunStep {
|
new RunStep {
|
||||||
name = "Publish release on GitHub"
|
name = "Publish release on GitHub"
|
||||||
command = #"""
|
command =
|
||||||
|
#"""
|
||||||
# exclude build_artifacts.txt from publish
|
# exclude build_artifacts.txt from publish
|
||||||
rm -f */build/executable/*.build_artifacts.txt
|
rm -f */build/executable/*.build_artifacts.txt
|
||||||
find */build/executable/* -type d | xargs rm -rf
|
find */build/executable/* -type d | xargs rm -rf
|
||||||
|
|||||||
+21
-16
@@ -34,9 +34,9 @@ jobs:
|
|||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
||||||
resource_class: m2pro.large
|
resource_class: m4pro.large
|
||||||
macos:
|
macos:
|
||||||
xcode: 15.3.0
|
xcode: 16.4.0
|
||||||
pkl-cli-linux-amd64-release:
|
pkl-cli-linux-amd64-release:
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
@@ -142,9 +142,9 @@ jobs:
|
|||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
||||||
resource_class: m2pro.large
|
resource_class: m4pro.large
|
||||||
macos:
|
macos:
|
||||||
xcode: 15.3.0
|
xcode: 16.4.0
|
||||||
pkl-cli-linux-aarch64-release:
|
pkl-cli-linux-aarch64-release:
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
@@ -347,9 +347,9 @@ jobs:
|
|||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
||||||
resource_class: macos.m1.large.gen1
|
resource_class: m4pro.large
|
||||||
macos:
|
macos:
|
||||||
xcode: 15.3.0
|
xcode: 16.4.0
|
||||||
pkl-doc-linux-amd64-release:
|
pkl-doc-linux-amd64-release:
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
@@ -455,9 +455,9 @@ jobs:
|
|||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
||||||
resource_class: macos.m1.large.gen1
|
resource_class: m4pro.large
|
||||||
macos:
|
macos:
|
||||||
xcode: 15.3.0
|
xcode: 16.4.0
|
||||||
pkl-doc-linux-aarch64-release:
|
pkl-doc-linux-aarch64-release:
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
@@ -660,9 +660,9 @@ jobs:
|
|||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
||||||
resource_class: m2pro.large
|
resource_class: m4pro.large
|
||||||
macos:
|
macos:
|
||||||
xcode: 15.3.0
|
xcode: 16.4.0
|
||||||
pkl-cli-linux-amd64-snapshot:
|
pkl-cli-linux-amd64-snapshot:
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
@@ -768,9 +768,9 @@ jobs:
|
|||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
||||||
resource_class: m2pro.large
|
resource_class: m4pro.large
|
||||||
macos:
|
macos:
|
||||||
xcode: 15.3.0
|
xcode: 16.4.0
|
||||||
pkl-cli-linux-aarch64-snapshot:
|
pkl-cli-linux-aarch64-snapshot:
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
@@ -973,9 +973,9 @@ jobs:
|
|||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
||||||
resource_class: macos.m1.large.gen1
|
resource_class: m4pro.large
|
||||||
macos:
|
macos:
|
||||||
xcode: 15.3.0
|
xcode: 16.4.0
|
||||||
pkl-doc-linux-amd64-snapshot:
|
pkl-doc-linux-amd64-snapshot:
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
@@ -1081,9 +1081,9 @@ jobs:
|
|||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
JAVA_HOME: /Users/distiller/jdk/Contents/Home
|
||||||
resource_class: macos.m1.large.gen1
|
resource_class: m4pro.large
|
||||||
macos:
|
macos:
|
||||||
xcode: 15.3.0
|
xcode: 16.4.0
|
||||||
pkl-doc-linux-aarch64-snapshot:
|
pkl-doc-linux-aarch64-snapshot:
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
@@ -1265,6 +1265,7 @@ jobs:
|
|||||||
path: ~/test-results
|
path: ~/test-results
|
||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
|
resource_class: 2xlarge
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/openjdk:21.0
|
- image: cimg/openjdk:21.0
|
||||||
gradle-check-windows:
|
gradle-check-windows:
|
||||||
@@ -1303,6 +1304,7 @@ jobs:
|
|||||||
path: ~/test-results
|
path: ~/test-results
|
||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
|
resource_class: 2xlarge
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/openjdk:21.0
|
- image: cimg/openjdk:21.0
|
||||||
gradle-compatibility:
|
gradle-compatibility:
|
||||||
@@ -1317,6 +1319,7 @@ jobs:
|
|||||||
path: ~/test-results
|
path: ~/test-results
|
||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
|
resource_class: 2xlarge
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/openjdk:21.0
|
- image: cimg/openjdk:21.0
|
||||||
deploy-snapshot:
|
deploy-snapshot:
|
||||||
@@ -1337,6 +1340,7 @@ jobs:
|
|||||||
path: ~/test-results
|
path: ~/test-results
|
||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
|
resource_class: 2xlarge
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/openjdk:21.0
|
- image: cimg/openjdk:21.0
|
||||||
deploy-release:
|
deploy-release:
|
||||||
@@ -1357,6 +1361,7 @@ jobs:
|
|||||||
path: ~/test-results
|
path: ~/test-results
|
||||||
environment:
|
environment:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
|
resource_class: 2xlarge
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/openjdk:21.0
|
- image: cimg/openjdk:21.0
|
||||||
github-release:
|
github-release:
|
||||||
|
|||||||
@@ -16,10 +16,10 @@
|
|||||||
/// Builds the native `pkl` CLI
|
/// Builds the native `pkl` CLI
|
||||||
extends "GradleJob.pkl"
|
extends "GradleJob.pkl"
|
||||||
|
|
||||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.5.0#/Config.pkl"
|
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.7.0#/Config.pkl"
|
||||||
|
|
||||||
/// The architecture to use
|
/// The architecture to use
|
||||||
arch: "amd64"|"aarch64"
|
arch: "amd64" | "aarch64"
|
||||||
|
|
||||||
/// Whether to link to musl. Otherwise, links to glibc.
|
/// Whether to link to musl. Otherwise, links to glibc.
|
||||||
musl: Boolean = false
|
musl: Boolean = false
|
||||||
@@ -44,7 +44,8 @@ local setupLinuxEnvironment: Config.RunStep =
|
|||||||
new {
|
new {
|
||||||
name = "Set up environment"
|
name = "Set up environment"
|
||||||
shell = "#!/bin/bash -exo pipefail"
|
shell = "#!/bin/bash -exo pipefail"
|
||||||
command = new Listing {
|
command =
|
||||||
|
new Listing {
|
||||||
#"""
|
#"""
|
||||||
sed -ie '/\[ol8_codeready_builder\]/,/^$/s/enabled=0/enabled=1/g' /etc/yum.repos.d/oracle-linux-ol8.repo \
|
sed -ie '/\[ol8_codeready_builder\]/,/^$/s/enabled=0/enabled=1/g' /etc/yum.repos.d/oracle-linux-ol8.repo \
|
||||||
&& microdnf -y install util-linux tree coreutils-single findutils curl tar gzip git zlib-devel gcc-c++ make openssl glibc-langpack-en libstdc++-static \
|
&& microdnf -y install util-linux tree coreutils-single findutils curl tar gzip git zlib-devel gcc-c++ make openssl glibc-langpack-en libstdc++-static \
|
||||||
@@ -53,7 +54,11 @@ local setupLinuxEnvironment: Config.RunStep =
|
|||||||
|
|
||||||
# install jdk
|
# install jdk
|
||||||
curl -Lf \
|
curl -Lf \
|
||||||
https://github.com/adoptium/temurin\#(module.majorJdkVersion)-binaries/releases/download/\#(module.jdkGitHubReleaseName)/OpenJDK\#(module.majorJdkVersion)U-jdk_\#(if (arch == "amd64") "x64" else "aarch64")_linux_hotspot_\#(module.jdkVersionAlt).tar.gz -o /tmp/jdk.tar.gz
|
https://github.com/adoptium/temurin\#(module.majorJdkVersion)-binaries/releases/download/\#(module
|
||||||
|
.jdkGitHubReleaseName)/OpenJDK\#(module.majorJdkVersion)U-jdk_\#(if (arch == "amd64")
|
||||||
|
"x64"
|
||||||
|
else
|
||||||
|
"aarch64")_linux_hotspot_\#(module.jdkVersionAlt).tar.gz -o /tmp/jdk.tar.gz
|
||||||
|
|
||||||
mkdir /jdk \
|
mkdir /jdk \
|
||||||
&& cd /jdk \
|
&& cd /jdk \
|
||||||
@@ -99,21 +104,24 @@ local setupLinuxEnvironment: Config.RunStep =
|
|||||||
}.join("\n\n")
|
}.join("\n\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
local setupMacEnvironment: Config.RunStep =
|
local setupMacEnvironment: Config.RunStep = new {
|
||||||
new {
|
|
||||||
name = "Set up environment"
|
name = "Set up environment"
|
||||||
shell = "#!/bin/bash -exo pipefail"
|
shell = "#!/bin/bash -exo pipefail"
|
||||||
command =
|
command =
|
||||||
#"""
|
#"""
|
||||||
# install jdk
|
# install jdk
|
||||||
curl -Lf \
|
curl -Lf \
|
||||||
https://github.com/adoptium/temurin\#(module.majorJdkVersion)-binaries/releases/download/\#(module.jdkGitHubReleaseName)/OpenJDK\#(module.majorJdkVersion)U-jdk_\#(if (arch == "amd64") "x64" else "aarch64")_mac_hotspot_\#(module.jdkVersionAlt).tar.gz -o /tmp/jdk.tar.gz
|
https://github.com/adoptium/temurin\#(module.majorJdkVersion)-binaries/releases/download/\#(module
|
||||||
|
.jdkGitHubReleaseName)/OpenJDK\#(module.majorJdkVersion)U-jdk_\#(if (arch == "amd64")
|
||||||
|
"x64"
|
||||||
|
else
|
||||||
|
"aarch64")_mac_hotspot_\#(module.jdkVersionAlt).tar.gz -o /tmp/jdk.tar.gz
|
||||||
|
|
||||||
mkdir $HOME/jdk \
|
mkdir $HOME/jdk \
|
||||||
&& cd $HOME/jdk \
|
&& cd $HOME/jdk \
|
||||||
&& cat /tmp/jdk.tar.gz | tar --strip-components=1 -xzC .
|
&& cat /tmp/jdk.tar.gz | tar --strip-components=1 -xzC .
|
||||||
"""#
|
"""#
|
||||||
}
|
}
|
||||||
|
|
||||||
steps {
|
steps {
|
||||||
when (os == "linux") {
|
when (os == "linux") {
|
||||||
@@ -134,7 +142,8 @@ steps {
|
|||||||
when (arch == "amd64") {
|
when (arch == "amd64") {
|
||||||
new Config.RunStep {
|
new Config.RunStep {
|
||||||
name = "Installing Rosetta 2"
|
name = "Installing Rosetta 2"
|
||||||
command = """
|
command =
|
||||||
|
"""
|
||||||
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
|
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
@@ -146,7 +155,8 @@ steps {
|
|||||||
when (module.os == "windows") {
|
when (module.os == "windows") {
|
||||||
shell = "bash.exe"
|
shell = "bash.exe"
|
||||||
}
|
}
|
||||||
command = #"""
|
command =
|
||||||
|
#"""
|
||||||
export PATH=~/staticdeps/bin:$PATH
|
export PATH=~/staticdeps/bin:$PATH
|
||||||
./gradlew \#(module.gradleArgs) \#(project):buildNative
|
./gradlew \#(module.gradleArgs) \#(project):buildNative
|
||||||
"""#
|
"""#
|
||||||
@@ -162,9 +172,9 @@ steps {
|
|||||||
job {
|
job {
|
||||||
when (os == "macOS") {
|
when (os == "macOS") {
|
||||||
macos {
|
macos {
|
||||||
xcode = "15.3.0"
|
xcode = "16.4.0"
|
||||||
}
|
}
|
||||||
resource_class = "m2pro.large"
|
resource_class = "m4pro.large"
|
||||||
environment {
|
environment {
|
||||||
["JAVA_HOME"] = "/Users/distiller/jdk/Contents/Home"
|
["JAVA_HOME"] = "/Users/distiller/jdk/Contents/Home"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
extends "GradleJob.pkl"
|
extends "GradleJob.pkl"
|
||||||
|
|
||||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.5.0#/Config.pkl"
|
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.7.0#/Config.pkl"
|
||||||
|
|
||||||
local self = this
|
local self = this
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
extends "GradleJob.pkl"
|
extends "GradleJob.pkl"
|
||||||
|
|
||||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.5.0#/Config.pkl"
|
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.7.0#/Config.pkl"
|
||||||
|
|
||||||
steps {
|
steps {
|
||||||
new Config.RunStep {
|
new Config.RunStep {
|
||||||
|
|||||||
@@ -15,21 +15,19 @@
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
abstract module GradleJob
|
abstract module GradleJob
|
||||||
|
|
||||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.5.0#/Config.pkl"
|
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.7.0#/Config.pkl"
|
||||||
import "package://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.uri@1.0.3#/URI.pkl"
|
import "package://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.uri@1.0.3#/URI.pkl"
|
||||||
|
|
||||||
/// Whether this is a release build or not.
|
/// Whether this is a release build or not.
|
||||||
isRelease: Boolean = false
|
isRelease: Boolean = false
|
||||||
|
|
||||||
/// The OS to run on
|
/// The OS to run on
|
||||||
os: "macOS"|"linux"|"windows"
|
os: "macOS" | "linux" | "windows"
|
||||||
|
|
||||||
/// The version of Java to use.
|
/// The version of Java to use.
|
||||||
javaVersion: "17.0"|"21.0"
|
javaVersion: "17.0" | "21.0"
|
||||||
|
|
||||||
fixed javaVersionFull =
|
fixed javaVersionFull = if (javaVersion == "17.0") "17.0.9+9" else "21.0.5+11"
|
||||||
if (javaVersion == "17.0") "17.0.9+9"
|
|
||||||
else "21.0.5+11"
|
|
||||||
|
|
||||||
fixed jdkVersionAlt = javaVersionFull.replaceLast("+", "_")
|
fixed jdkVersionAlt = javaVersionFull.replaceLast("+", "_")
|
||||||
|
|
||||||
@@ -38,12 +36,15 @@ fixed majorJdkVersion = javaVersionFull.split(".").first
|
|||||||
fixed jdkGitHubReleaseName =
|
fixed jdkGitHubReleaseName =
|
||||||
let (ver =
|
let (ver =
|
||||||
// 17.0.9+9 is missing some binaries (see https://github.com/adoptium/adoptium-support/issues/994)
|
// 17.0.9+9 is missing some binaries (see https://github.com/adoptium/adoptium-support/issues/994)
|
||||||
if (javaVersionFull == "17.0.9+9" && os == "windows") "jdk-17.0.9+9.1"
|
if (javaVersionFull == "17.0.9+9" && os == "windows")
|
||||||
else "jdk-\(javaVersionFull)"
|
"jdk-17.0.9+9.1"
|
||||||
|
else
|
||||||
|
"jdk-\(javaVersionFull)"
|
||||||
)
|
)
|
||||||
URI.encodeComponent(ver)
|
URI.encodeComponent(ver)
|
||||||
|
|
||||||
fixed gradleArgs = new Listing {
|
fixed gradleArgs =
|
||||||
|
new Listing {
|
||||||
"--info"
|
"--info"
|
||||||
"--stacktrace"
|
"--stacktrace"
|
||||||
"-DtestReportsDir=${HOME}/test-results"
|
"-DtestReportsDir=${HOME}/test-results"
|
||||||
@@ -52,7 +53,7 @@ fixed gradleArgs = new Listing {
|
|||||||
"-DreleaseBuild=true"
|
"-DreleaseBuild=true"
|
||||||
}
|
}
|
||||||
...extraGradleArgs
|
...extraGradleArgs
|
||||||
}.join(" ")
|
}.join(" ")
|
||||||
|
|
||||||
extraGradleArgs: Listing<String>
|
extraGradleArgs: Listing<String>
|
||||||
|
|
||||||
@@ -71,6 +72,7 @@ job: Config.Job = new {
|
|||||||
image = "cimg/openjdk:\(javaVersion)"
|
image = "cimg/openjdk:\(javaVersion)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
resource_class = "2xlarge"
|
||||||
}
|
}
|
||||||
when (os == "windows") {
|
when (os == "windows") {
|
||||||
machine {
|
machine {
|
||||||
@@ -84,7 +86,8 @@ job: Config.Job = new {
|
|||||||
new Config.RunStep {
|
new Config.RunStep {
|
||||||
name = "Set up environment"
|
name = "Set up environment"
|
||||||
shell = "bash.exe"
|
shell = "bash.exe"
|
||||||
command = #"""
|
command =
|
||||||
|
#"""
|
||||||
# install jdk
|
# install jdk
|
||||||
curl -Lf \
|
curl -Lf \
|
||||||
https://github.com/adoptium/temurin\#(majorJdkVersion)-binaries/releases/download/\#(jdkGitHubReleaseName)/OpenJDK\#(majorJdkVersion)U-jdk_x64_windows_hotspot_\#(jdkVersionAlt).zip -o /tmp/jdk.zip
|
https://github.com/adoptium/temurin\#(majorJdkVersion)-binaries/releases/download/\#(jdkGitHubReleaseName)/OpenJDK\#(majorJdkVersion)U-jdk_x64_windows_hotspot_\#(jdkVersionAlt).zip -o /tmp/jdk.zip
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
extends "GradleJob.pkl"
|
extends "GradleJob.pkl"
|
||||||
|
|
||||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.5.0#/Config.pkl"
|
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.7.0#/Config.pkl"
|
||||||
|
|
||||||
name: String = command
|
name: String = command
|
||||||
|
|
||||||
@@ -28,7 +28,8 @@ javaVersion = "21.0"
|
|||||||
steps {
|
steps {
|
||||||
new Config.RunStep {
|
new Config.RunStep {
|
||||||
name = module.name
|
name = module.name
|
||||||
command = """
|
command =
|
||||||
|
"""
|
||||||
./gradlew \(module.gradleArgs) \(module.command)
|
./gradlew \(module.gradleArgs) \(module.command)
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ testgenerated/
|
|||||||
!.idea/runConfigurations/
|
!.idea/runConfigurations/
|
||||||
!.idea/scopes/
|
!.idea/scopes/
|
||||||
!.idea/vcs.xml
|
!.idea/vcs.xml
|
||||||
|
.intellijPlatform/
|
||||||
|
|
||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
|
|||||||
@@ -90,6 +90,17 @@ This will listen on port 5005.
|
|||||||
|
|
||||||
Example: `./gradlew test -Djvmdebug=true`
|
Example: `./gradlew test -Djvmdebug=true`
|
||||||
|
|
||||||
|
== Snippet Test Plugin
|
||||||
|
|
||||||
|
There is an IntelliJ plugin meant for development on the Pkl project itself.
|
||||||
|
This plugin provides a split pane window when viewing snippet tests such as LanguageSnippetTests and FormatterSnippetTests.
|
||||||
|
|
||||||
|
To install:
|
||||||
|
|
||||||
|
1. Run `./gradlew pkl-internal-intellij-plugin:buildPlugin`.
|
||||||
|
2. Within IntelliJ, run the action "Install Plugin From Disk...".
|
||||||
|
3. Select the zip file within `pkl-internal-intellij-plugin/build/distributions`.
|
||||||
|
|
||||||
== Resources
|
== Resources
|
||||||
For automated build setup examples see our https://github.com/apple/pkl/blob/main/.circleci/[CircleCI] jobs like our https://github.com/apple/pkl/blob/main/.circleci/jobs/BuildNativeJob.pkl[BuildNativeJob.pkl], where we build Pkl automatically.
|
For automated build setup examples see our https://github.com/apple/pkl/blob/main/.circleci/[CircleCI] jobs like our https://github.com/apple/pkl/blob/main/.circleci/jobs/BuildNativeJob.pkl[BuildNativeJob.pkl], where we build Pkl automatically.
|
||||||
|
|
||||||
|
|||||||
+52
-37
@@ -1,47 +1,62 @@
|
|||||||
# This is a Gradle generated file for dependency locking.
|
# This is a Gradle generated file for dependency locking.
|
||||||
# Manual edits can break the build and are not advised.
|
# Manual edits can break the build and are not advised.
|
||||||
# This file is expected to be part of source control.
|
# This file is expected to be part of source control.
|
||||||
net.bytebuddy:byte-buddy:1.15.11=jmh,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ben-manes.caffeine:caffeine:2.9.3=swiftExportClasspathResolvable
|
||||||
|
com.google.errorprone:error_prone_annotations:2.28.0=swiftExportClasspathResolvable
|
||||||
|
io.github.java-diff-utils:java-diff-utils:4.12=kotlinInternalAbiValidation
|
||||||
|
io.opentelemetry:opentelemetry-api:1.41.0=swiftExportClasspathResolvable
|
||||||
|
io.opentelemetry:opentelemetry-context:1.41.0=swiftExportClasspathResolvable
|
||||||
|
net.bytebuddy:byte-buddy:1.17.7=jmh,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
net.sf.jopt-simple:jopt-simple:5.0.4=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath
|
net.sf.jopt-simple:jopt-simple:5.0.4=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath
|
||||||
org.apache.commons:commons-math3:3.6.1=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath
|
org.apache.commons:commons-math3:3.6.1=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath
|
||||||
org.apiguardian:apiguardian-api:1.1.2=jmhCompileClasspath,jmhImplementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata
|
org.apiguardian:apiguardian-api:1.1.2=jmhCompileClasspath,jmhImplementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata
|
||||||
org.assertj:assertj-core:3.27.4=jmh,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.assertj:assertj-core:3.27.6=jmh,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.compiler:compiler:24.1.2=graal
|
org.bouncycastle:bcpg-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.polyglot:polyglot:24.1.2=jmh,jmhRuntimeClasspath,truffle
|
org.bouncycastle:bcpkix-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:collections:24.1.2=graal,jmh,jmhRuntimeClasspath,truffle
|
org.bouncycastle:bcprov-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:graal-sdk:24.1.2=jmh,jmhRuntimeClasspath
|
org.bouncycastle:bcutil-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:nativeimage:24.1.2=jmh,jmhRuntimeClasspath,truffle
|
org.checkerframework:checker-qual:3.43.0=swiftExportClasspathResolvable
|
||||||
org.graalvm.sdk:word:24.1.2=graal,jmh,jmhRuntimeClasspath,truffle
|
org.graalvm.compiler:compiler:25.0.0=graal
|
||||||
org.graalvm.truffle:truffle-api:24.1.2=jmh,jmhRuntimeClasspath,truffle
|
org.graalvm.polyglot:polyglot:25.0.0=jmh,jmhRuntimeClasspath,truffle
|
||||||
org.graalvm.truffle:truffle-compiler:24.1.2=graal
|
org.graalvm.sdk:collections:25.0.0=graal,jmh,jmhRuntimeClasspath,truffle
|
||||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.sdk:graal-sdk:25.0.0=jmh,jmhRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:nativeimage:25.0.0=jmh,jmhRuntimeClasspath,truffle
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:word:25.0.0=graal,jmh,jmhRuntimeClasspath,truffle
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.truffle:truffle-api:25.0.0=jmh,jmhRuntimeClasspath,truffle
|
||||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.truffle:truffle-compiler:25.0.0=graal
|
||||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools-api:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-api:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-impl:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-runner:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-client:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.2.20=kotlinKlibCommonizerClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-metadata-jvm:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-reflect:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-reflect:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-script-runtime:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-common:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-jvm:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.20=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.20=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:2.0.21=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib:2.2.20=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:swift-export-embeddable:2.2.20=swiftExportClasspathResolvable
|
||||||
org.jetbrains:annotations:13.0=jmh,jmhCompileClasspath,jmhRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-api:5.13.4=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-engine:5.13.4=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-params:5.13.4=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.platform:junit-platform-commons:1.13.4=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains:annotations:13.0=jmh,jmhCompileClasspath,jmhRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJmh,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable,testCompileClasspath,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-engine:1.13.4=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-api:5.14.0=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-launcher:1.13.4=testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-engine:5.14.0=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testRuntimeClasspath
|
||||||
org.junit:junit-bom:5.13.4=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-params:5.14.0=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-commons:1.14.0=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-engine:1.14.0=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-launcher:1.14.0=testRuntimeClasspath
|
||||||
|
org.junit:junit-bom:5.14.0=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.msgpack:msgpack-core:0.9.8=jmh,jmhRuntimeClasspath
|
org.msgpack:msgpack-core:0.9.8=jmh,jmhRuntimeClasspath
|
||||||
org.openjdk.jmh:jmh-core:1.37=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath
|
org.openjdk.jmh:jmh-core:1.37=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath
|
||||||
org.openjdk.jmh:jmh-generator-asm:1.37=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath
|
org.openjdk.jmh:jmh-generator-asm:1.37=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import org.openjdk.jmh.annotations.*;
|
import org.openjdk.jmh.annotations.*;
|
||||||
import org.openjdk.jmh.util.TempFile;
|
import org.openjdk.jmh.util.TempFile;
|
||||||
import org.openjdk.jmh.util.TempFileManager;
|
import org.openjdk.jmh.util.TempFileManager;
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode;
|
||||||
import org.pkl.core.http.HttpClient;
|
import org.pkl.core.http.HttpClient;
|
||||||
import org.pkl.core.module.ModuleKeyFactories;
|
import org.pkl.core.module.ModuleKeyFactories;
|
||||||
import org.pkl.core.repl.ReplRequest;
|
import org.pkl.core.repl.ReplRequest;
|
||||||
@@ -51,7 +52,8 @@ public class ListSort {
|
|||||||
null,
|
null,
|
||||||
IoUtils.getCurrentWorkingDir(),
|
IoUtils.getCurrentWorkingDir(),
|
||||||
StackFrameTransformers.defaultTransformer,
|
StackFrameTransformers.defaultTransformer,
|
||||||
false);
|
false,
|
||||||
|
TraceMode.COMPACT);
|
||||||
private static final List<Object> list = new ArrayList<>(100000);
|
private static final List<Object> list = new ArrayList<>(100000);
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|||||||
@@ -84,12 +84,13 @@ open class BuildInfo(private val project: Project) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val baseName: String by lazy { "graalvm-jdk-${graalVmJdkVersion}_${osName}-${arch}_bin" }
|
val baseName: String by lazy {
|
||||||
|
"graalvm-community-jdk-${graalVmJdkVersion}_${osName}-${arch}_bin"
|
||||||
|
}
|
||||||
|
|
||||||
val downloadUrl: String by lazy {
|
val downloadUrl: String by lazy {
|
||||||
val jdkMajor = graalVmJdkVersion.takeWhile { it != '.' }
|
|
||||||
val extension = if (os.isWindows) "zip" else "tar.gz"
|
val extension = if (os.isWindows) "zip" else "tar.gz"
|
||||||
"https://download.oracle.com/graalvm/$jdkMajor/archive/$baseName.$extension"
|
"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-${graalVmJdkVersion}/$baseName.$extension"
|
||||||
}
|
}
|
||||||
|
|
||||||
val downloadFile: File by lazy {
|
val downloadFile: File by lazy {
|
||||||
@@ -204,9 +205,24 @@ open class BuildInfo(private val project: Project) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val isArmWindows: Boolean
|
||||||
|
get() {
|
||||||
|
if (!os.isWindows) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// System.getProperty("os.arch") returns the architecture of the JVM, not the host OS.
|
||||||
|
val procArch = System.getenv("PROCESSOR_ARCHITECTURE")
|
||||||
|
return "ARM64".equals(procArch, ignoreCase = true)
|
||||||
|
}
|
||||||
|
|
||||||
// Assembles a collection of JDK versions which tests can be run against, considering ancillary
|
// Assembles a collection of JDK versions which tests can be run against, considering ancillary
|
||||||
// parameters like `testAllJdks` and `testExperimentalJdks`.
|
// parameters like `testAllJdks` and `testExperimentalJdks`.
|
||||||
val jdkTestRange: Collection<JavaLanguageVersion> by lazy {
|
val jdkTestRange: Collection<JavaLanguageVersion> by lazy {
|
||||||
|
if (isArmWindows) {
|
||||||
|
// Java toolchains does not work on ARM windows: https://github.com/gradle/gradle/issues/29807
|
||||||
|
// prevent creating tasks to test different JDKs if developing on a Windows ARM machine.
|
||||||
|
return@lazy listOf()
|
||||||
|
}
|
||||||
JavaVersionRange.inclusive(jdkTestFloor, jdkTestCeiling).toList()
|
JavaVersionRange.inclusive(jdkTestFloor, jdkTestCeiling).toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ open class MergeSourcesJars : DefaultTask() {
|
|||||||
val details = this
|
val details = this
|
||||||
if (details.isDirectory) return@visit
|
if (details.isDirectory) return@visit
|
||||||
|
|
||||||
var path = details.relativePath.parent.pathString
|
var path = details.relativePath.parent!!.pathString
|
||||||
val relocatedPath = relocatedPaths.keys.find { path.startsWith(it) }
|
val relocatedPath = relocatedPaths.keys.find { path.startsWith(it) }
|
||||||
if (relocatedPath != null) {
|
if (relocatedPath != null) {
|
||||||
path = path.replace(relocatedPath, relocatedPaths.getValue(relocatedPath))
|
path = path.replace(relocatedPath, relocatedPaths.getValue(relocatedPath))
|
||||||
@@ -101,7 +101,7 @@ open class MergeSourcesJars : DefaultTask() {
|
|||||||
project.zipTree(jar).visit {
|
project.zipTree(jar).visit {
|
||||||
val details = this
|
val details = this
|
||||||
if (details.isDirectory) return@visit // avoid adding empty dirs
|
if (details.isDirectory) return@visit // avoid adding empty dirs
|
||||||
result.add(details.relativePath.parent.pathString)
|
result.add(details.relativePath.parent!!.pathString)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
import com.diffplug.spotless.FormatterFunc
|
||||||
|
import com.diffplug.spotless.FormatterStep
|
||||||
|
import java.io.Serial
|
||||||
|
import java.io.Serializable
|
||||||
|
import java.net.URLClassLoader
|
||||||
|
import org.gradle.api.artifacts.Configuration
|
||||||
|
|
||||||
|
class PklFormatterStep(@Transient private val configuration: Configuration) : Serializable {
|
||||||
|
companion object {
|
||||||
|
@Serial private const val serialVersionUID: Long = 1L
|
||||||
|
}
|
||||||
|
|
||||||
|
fun create(): FormatterStep {
|
||||||
|
return FormatterStep.createLazy(
|
||||||
|
"pkl",
|
||||||
|
{ PklFormatterStep(configuration) },
|
||||||
|
{ PklFormatterFunc(configuration) },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class PklFormatterFunc(@Transient private val configuration: Configuration) :
|
||||||
|
FormatterFunc, Serializable {
|
||||||
|
companion object {
|
||||||
|
@Serial private const val serialVersionUID: Long = 1L
|
||||||
|
}
|
||||||
|
|
||||||
|
private val classLoader by lazy {
|
||||||
|
val urls = configuration.files.map { it.toURI().toURL() }
|
||||||
|
URLClassLoader(urls.toTypedArray())
|
||||||
|
}
|
||||||
|
|
||||||
|
private val formatterClass by lazy { classLoader.loadClass("org.pkl.formatter.Formatter") }
|
||||||
|
|
||||||
|
private val grammarVersionClass by lazy {
|
||||||
|
classLoader.loadClass("org.pkl.formatter.GrammarVersion")
|
||||||
|
}
|
||||||
|
|
||||||
|
private val grammarVersionLatestMethod by lazy { grammarVersionClass.getMethod("latest") }
|
||||||
|
|
||||||
|
private val formatMethod by lazy {
|
||||||
|
formatterClass.getMethod("format", String::class.java, grammarVersionClass)
|
||||||
|
}
|
||||||
|
|
||||||
|
private val formatterInstance by lazy { formatterClass.getConstructor().newInstance() }
|
||||||
|
|
||||||
|
override fun apply(input: String): String {
|
||||||
|
val latestGrammarVersion = grammarVersionLatestMethod(null)
|
||||||
|
return formatMethod(formatterInstance, input, latestGrammarVersion) as String
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -81,7 +81,7 @@ plugins.withType(MavenPublishPlugin::class).configureEach {
|
|||||||
repositories {
|
repositories {
|
||||||
maven {
|
maven {
|
||||||
name = "projectLocal" // affects task names
|
name = "projectLocal" // affects task names
|
||||||
url = uri("file:///$rootDir/build/m2")
|
url = rootDir.resolve("build/m2").toURI()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// use resolved/locked (e.g., `1.15`)
|
// use resolved/locked (e.g., `1.15`)
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
import org.gradle.api.GradleException
|
import org.gradle.api.GradleException
|
||||||
import org.gradle.api.artifacts.Configuration
|
import org.gradle.api.artifacts.Configuration
|
||||||
import org.gradle.api.component.AdhocComponentWithVariants
|
|
||||||
import org.gradle.api.publish.maven.MavenPublication
|
import org.gradle.api.publish.maven.MavenPublication
|
||||||
import org.gradle.api.tasks.bundling.Jar
|
import org.gradle.api.tasks.bundling.Jar
|
||||||
import org.gradle.api.tasks.testing.Test
|
import org.gradle.api.tasks.testing.Test
|
||||||
@@ -24,7 +23,7 @@ import org.gradle.kotlin.dsl.*
|
|||||||
plugins {
|
plugins {
|
||||||
`java-library`
|
`java-library`
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
id("com.github.johnrengelman.shadow")
|
id("com.gradleup.shadow")
|
||||||
}
|
}
|
||||||
|
|
||||||
// make fat Jar available to other subprojects
|
// make fat Jar available to other subprojects
|
||||||
@@ -60,6 +59,7 @@ val relocations =
|
|||||||
// pkl-doc dependencies
|
// pkl-doc dependencies
|
||||||
"org.commonmark." to "org.pkl.thirdparty.commonmark.",
|
"org.commonmark." to "org.pkl.thirdparty.commonmark.",
|
||||||
"org.jetbrains." to "org.pkl.thirdparty.jetbrains.",
|
"org.jetbrains." to "org.pkl.thirdparty.jetbrains.",
|
||||||
|
"_COROUTINE." to "org.pkl.thirdparty.kotlinx._COROUTINE.",
|
||||||
|
|
||||||
// pkl-config-java dependencies
|
// pkl-config-java dependencies
|
||||||
"io.leangen.geantyref." to "org.pkl.thirdparty.geantyref.",
|
"io.leangen.geantyref." to "org.pkl.thirdparty.geantyref.",
|
||||||
@@ -93,12 +93,16 @@ tasks.shadowJar {
|
|||||||
|
|
||||||
configurations = listOf(project.configurations.runtimeClasspath.get())
|
configurations = listOf(project.configurations.runtimeClasspath.get())
|
||||||
|
|
||||||
|
addMultiReleaseAttribute = true
|
||||||
|
|
||||||
// not required at runtime / fat JARs can't be used in native-image builds anyway
|
// not required at runtime / fat JARs can't be used in native-image builds anyway
|
||||||
exclude("org/pkl/cli/svm/**")
|
exclude("org/pkl/cli/svm/**")
|
||||||
|
|
||||||
exclude("META-INF/maven/**")
|
exclude("META-INF/maven/**")
|
||||||
exclude("META-INF/upgrade/**")
|
exclude("META-INF/upgrade/**")
|
||||||
|
|
||||||
|
exclude("DebugProbesKt.bin")
|
||||||
|
|
||||||
val info = project.extensions.getByType<BuildInfo>()
|
val info = project.extensions.getByType<BuildInfo>()
|
||||||
val minimumJvmTarget = JavaVersion.toVersion(info.jvmTarget)
|
val minimumJvmTarget = JavaVersion.toVersion(info.jvmTarget)
|
||||||
|
|
||||||
@@ -126,10 +130,7 @@ tasks.shadowJar {
|
|||||||
mergeServiceFiles()
|
mergeServiceFiles()
|
||||||
}
|
}
|
||||||
|
|
||||||
// workaround for https://github.com/johnrengelman/shadow/issues/651
|
shadow { addShadowVariantIntoJavaComponent = false }
|
||||||
components.withType(AdhocComponentWithVariants::class.java).forEach { c ->
|
|
||||||
c.withVariantsFromConfiguration(project.configurations.shadowRuntimeElements.get()) { skip() }
|
|
||||||
}
|
|
||||||
|
|
||||||
val testFatJar by
|
val testFatJar by
|
||||||
tasks.registering(Test::class) {
|
tasks.registering(Test::class) {
|
||||||
@@ -207,7 +208,7 @@ artifacts { add("fatJar", tasks.shadowJar) }
|
|||||||
publishing {
|
publishing {
|
||||||
publications {
|
publications {
|
||||||
named<MavenPublication>("fatJar") {
|
named<MavenPublication>("fatJar") {
|
||||||
project.shadow.component(this)
|
from(components["shadow"])
|
||||||
|
|
||||||
// sources Jar is fat
|
// sources Jar is fat
|
||||||
artifact(fatSourcesJar.flatMap { it.outputJar.asFile }) { classifier = "sources" }
|
artifact(fatSourcesJar.flatMap { it.outputJar.asFile }) { classifier = "sources" }
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import org.gradle.kotlin.dsl.support.serviceOf
|
|||||||
plugins {
|
plugins {
|
||||||
id("pklJavaLibrary")
|
id("pklJavaLibrary")
|
||||||
// id("pklPublishLibrary")
|
// id("pklPublishLibrary")
|
||||||
id("com.github.johnrengelman.shadow")
|
id("com.gradleup.shadow")
|
||||||
}
|
}
|
||||||
|
|
||||||
val executableSpec = project.extensions.create("executable", ExecutableSpec::class.java)
|
val executableSpec = project.extensions.create("executable", ExecutableSpec::class.java)
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
import org.gradle.accessors.dm.LibrariesForLibs
|
import org.gradle.accessors.dm.LibrariesForLibs
|
||||||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
@@ -43,6 +44,7 @@ tasks.compileKotlin {
|
|||||||
|
|
||||||
tasks.withType<KotlinJvmCompile>().configureEach {
|
tasks.withType<KotlinJvmCompile>().configureEach {
|
||||||
compilerOptions {
|
compilerOptions {
|
||||||
|
languageVersion = KotlinVersion.KOTLIN_2_1
|
||||||
jvmTarget = JvmTarget.fromTarget(buildInfo.jvmTarget.toString())
|
jvmTarget = JvmTarget.fromTarget(buildInfo.jvmTarget.toString())
|
||||||
freeCompilerArgs.addAll("-Xjdk-release=${buildInfo.jvmTarget}")
|
freeCompilerArgs.addAll("-Xjdk-release=${buildInfo.jvmTarget}")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,13 +15,14 @@
|
|||||||
*/
|
*/
|
||||||
import kotlin.io.path.createDirectories
|
import kotlin.io.path.createDirectories
|
||||||
import kotlin.io.path.writeText
|
import kotlin.io.path.writeText
|
||||||
|
import org.gradle.accessors.dm.LibrariesForLibs
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("pklGraalVm")
|
id("pklGraalVm")
|
||||||
id("pklJavaLibrary")
|
id("pklJavaLibrary")
|
||||||
id("pklNativeLifecycle")
|
id("pklNativeLifecycle")
|
||||||
id("pklPublishLibrary")
|
id("pklPublishLibrary")
|
||||||
id("com.github.johnrengelman.shadow")
|
id("com.gradleup.shadow")
|
||||||
}
|
}
|
||||||
|
|
||||||
// assumes that `pklJavaExecutable` is also applied
|
// assumes that `pklJavaExecutable` is also applied
|
||||||
@@ -35,6 +36,19 @@ val stagedLinuxAarch64Executable: Configuration by configurations.creating
|
|||||||
val stagedAlpineLinuxAmd64Executable: Configuration by configurations.creating
|
val stagedAlpineLinuxAmd64Executable: Configuration by configurations.creating
|
||||||
val stagedWindowsAmd64Executable: Configuration by configurations.creating
|
val stagedWindowsAmd64Executable: Configuration by configurations.creating
|
||||||
|
|
||||||
|
val nativeImageClasspath by
|
||||||
|
configurations.creating {
|
||||||
|
extendsFrom(configurations.runtimeClasspath.get())
|
||||||
|
// Ensure native-image version uses GraalVM C SDKs instead of Java FFI or JNA
|
||||||
|
// (comes from artifact `mordant-jvm-graal-ffi`).
|
||||||
|
exclude("com.github.ajalt.mordant", "mordant-jvm-ffm")
|
||||||
|
exclude("com.github.ajalt.mordant", "mordant-jvm-ffm-jvm")
|
||||||
|
exclude("com.github.ajalt.mordant", "mordant-jvm-jna")
|
||||||
|
exclude("com.github.ajalt.mordant", "mordant-jvm-jna-jvm")
|
||||||
|
}
|
||||||
|
|
||||||
|
val libs = the<LibrariesForLibs>()
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
fun executableFile(suffix: String) =
|
fun executableFile(suffix: String) =
|
||||||
files(
|
files(
|
||||||
@@ -42,6 +56,9 @@ dependencies {
|
|||||||
dir.file(executableSpec.name.map { "$it-$suffix" })
|
dir.file(executableSpec.name.map { "$it-$suffix" })
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
nativeImageClasspath(libs.truffleRuntime)
|
||||||
|
nativeImageClasspath(libs.graalSdk)
|
||||||
|
|
||||||
stagedMacAarch64Executable(executableFile("macos-aarch64"))
|
stagedMacAarch64Executable(executableFile("macos-aarch64"))
|
||||||
stagedMacAmd64Executable(executableFile("macos-amd64"))
|
stagedMacAmd64Executable(executableFile("macos-amd64"))
|
||||||
stagedLinuxAmd64Executable(executableFile("linux-amd64"))
|
stagedLinuxAmd64Executable(executableFile("linux-amd64"))
|
||||||
@@ -65,7 +82,7 @@ private fun NativeImageBuild.setClasspath() {
|
|||||||
classpath.from(
|
classpath.from(
|
||||||
project(":pkl-commons-cli").extensions.getByType(SourceSetContainer::class)["svm"].output
|
project(":pkl-commons-cli").extensions.getByType(SourceSetContainer::class)["svm"].output
|
||||||
)
|
)
|
||||||
classpath.from(configurations.runtimeClasspath)
|
classpath.from(nativeImageClasspath)
|
||||||
}
|
}
|
||||||
|
|
||||||
val macExecutableAmd64 by
|
val macExecutableAmd64 by
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
plugins { id("com.diffplug.spotless") }
|
||||||
|
|
||||||
|
val pklFormatter by configurations.creating
|
||||||
|
|
||||||
|
dependencies { pklFormatter(rootProject.project("pkl-formatter")) }
|
||||||
|
|
||||||
|
spotless {
|
||||||
|
format("pkl") {
|
||||||
|
target("**/*.pkl")
|
||||||
|
addStep(PklFormatterStep(pklFormatter).create())
|
||||||
|
licenseHeaderFile(
|
||||||
|
rootProject.file("buildSrc/src/main/resources/license-header.line-comment.txt"),
|
||||||
|
"/// ",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (taskName in
|
||||||
|
listOf("spotlessPkl", "spotlessPklApply", "spotlessPklCheck", "spotlessPklDiagnose")) {
|
||||||
|
tasks.named(taskName) { dependsOn(":pkl-formatter:assemble") }
|
||||||
|
}
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
name: main
|
name: main
|
||||||
title: Main Project
|
title: Main Project
|
||||||
version: 0.30.0-dev
|
version: 0.30.0
|
||||||
prerelease: true
|
prerelease: false
|
||||||
nav:
|
nav:
|
||||||
- nav.adoc
|
- nav.adoc
|
||||||
|
|||||||
+50
-35
@@ -1,44 +1,59 @@
|
|||||||
# This is a Gradle generated file for dependency locking.
|
# This is a Gradle generated file for dependency locking.
|
||||||
# Manual edits can break the build and are not advised.
|
# Manual edits can break the build and are not advised.
|
||||||
# This file is expected to be part of source control.
|
# This file is expected to be part of source control.
|
||||||
|
com.github.ben-manes.caffeine:caffeine:2.9.3=swiftExportClasspathResolvable
|
||||||
|
com.google.errorprone:error_prone_annotations:2.28.0=swiftExportClasspathResolvable
|
||||||
|
io.github.java-diff-utils:java-diff-utils:4.12=kotlinInternalAbiValidation
|
||||||
io.leangen.geantyref:geantyref:1.3.16=testRuntimeClasspath
|
io.leangen.geantyref:geantyref:1.3.16=testRuntimeClasspath
|
||||||
net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
io.opentelemetry:opentelemetry-api:1.41.0=swiftExportClasspathResolvable
|
||||||
|
io.opentelemetry:opentelemetry-context:1.41.0=swiftExportClasspathResolvable
|
||||||
|
net.bytebuddy:byte-buddy:1.17.7=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
||||||
org.assertj:assertj-core:3.27.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.assertj:assertj-core:3.27.6=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.polyglot:polyglot:24.1.2=testRuntimeClasspath
|
org.bouncycastle:bcpg-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:collections:24.1.2=testRuntimeClasspath
|
org.bouncycastle:bcpkix-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:graal-sdk:24.1.2=testRuntimeClasspath
|
org.bouncycastle:bcprov-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:nativeimage:24.1.2=testRuntimeClasspath
|
org.bouncycastle:bcutil-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:word:24.1.2=testRuntimeClasspath
|
org.checkerframework:checker-qual:3.43.0=swiftExportClasspathResolvable
|
||||||
org.graalvm.truffle:truffle-api:24.1.2=testRuntimeClasspath
|
org.graalvm.polyglot:polyglot:25.0.0=testRuntimeClasspath
|
||||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.sdk:collections:25.0.0=testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:graal-sdk:25.0.0=testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:nativeimage:25.0.0=testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:word:25.0.0=testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.truffle:truffle-api:25.0.0=testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools-api:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-api:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-impl:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-runner:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-client:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.2.20=kotlinKlibCommonizerClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-metadata-jvm:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-reflect:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-reflect:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-script-runtime:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-common:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-jvm:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.20=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.20=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:swift-export-embeddable:2.2.20=swiftExportClasspathResolvable
|
||||||
org.jetbrains:annotations:13.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-api:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-engine:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-params:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.platform:junit-platform-commons:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains:annotations:13.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable,testCompileClasspath,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-engine:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-api:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-launcher:1.13.4=testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-engine:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit:junit-bom:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-params:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-commons:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-engine:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-launcher:1.14.0=testRuntimeClasspath
|
||||||
|
org.junit:junit-bom:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.msgpack:msgpack-core:0.9.8=testRuntimeClasspath
|
org.msgpack:msgpack-core:0.9.8=testRuntimeClasspath
|
||||||
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.organicdesign:Paguro:3.10.3=testRuntimeClasspath
|
org.organicdesign:Paguro:3.10.3=testRuntimeClasspath
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
:pkl-version-no-suffix: 0.30.0
|
:pkl-version-no-suffix: 0.30.0
|
||||||
// tells whether pkl version corresponding to current git commit
|
// tells whether pkl version corresponding to current git commit
|
||||||
// is a release version (:is-release-version: '') or dev version (:!is-release-version:)
|
// is a release version (:is-release-version: '') or dev version (:!is-release-version:)
|
||||||
:!is-release-version:
|
:is-release-version: ''
|
||||||
|
|
||||||
// the remaining attributes do not need to be updated regularly
|
// the remaining attributes do not need to be updated regularly
|
||||||
|
|
||||||
@@ -74,6 +74,9 @@ endif::[]
|
|||||||
:uri-stdlib-mathModule: {uri-pkl-stdlib-docs}/math
|
:uri-stdlib-mathModule: {uri-pkl-stdlib-docs}/math
|
||||||
:uri-stdlib-xmlModule: {uri-pkl-stdlib-docs}/xml
|
:uri-stdlib-xmlModule: {uri-pkl-stdlib-docs}/xml
|
||||||
:uri-stdlib-protobufModule: {uri-pkl-stdlib-docs}/protobuf
|
:uri-stdlib-protobufModule: {uri-pkl-stdlib-docs}/protobuf
|
||||||
|
:uri-stdlib-pklbinaryModule: {uri-pkl-stdlib-docs}/pklbinary
|
||||||
|
:uri-stdlib-yamlModule: {uri-pkl-stdlib-docs}/yaml
|
||||||
|
:uri-stdlib-YamlParser: {uri-stdlib-yamlModule}/Parser
|
||||||
:uri-stdlib-evaluatorSettingsModule: {uri-pkl-stdlib-docs}/EvaluatorSettings
|
:uri-stdlib-evaluatorSettingsModule: {uri-pkl-stdlib-docs}/EvaluatorSettings
|
||||||
:uri-stdlib-evaluatorSettingsHttpClass: {uri-stdlib-evaluatorSettingsModule}/Http
|
:uri-stdlib-evaluatorSettingsHttpClass: {uri-stdlib-evaluatorSettingsModule}/Http
|
||||||
:uri-stdlib-Boolean: {uri-stdlib-baseModule}/Boolean
|
:uri-stdlib-Boolean: {uri-stdlib-baseModule}/Boolean
|
||||||
@@ -130,7 +133,10 @@ endif::[]
|
|||||||
:uri-stdlib-Class: {uri-stdlib-baseModule}/Class
|
:uri-stdlib-Class: {uri-stdlib-baseModule}/Class
|
||||||
:uri-stdlib-TypeAlias: {uri-stdlib-baseModule}/TypeAlias
|
:uri-stdlib-TypeAlias: {uri-stdlib-baseModule}/TypeAlias
|
||||||
:uri-stdlib-Deprecated: {uri-stdlib-baseModule}/Deprecated
|
:uri-stdlib-Deprecated: {uri-stdlib-baseModule}/Deprecated
|
||||||
|
:uri-stdlib-BaseValueRenderer: {uri-stdlib-baseModule}/BaseValueRenderer
|
||||||
:uri-stdlib-ValueRenderer: {uri-stdlib-baseModule}/ValueRenderer
|
:uri-stdlib-ValueRenderer: {uri-stdlib-baseModule}/ValueRenderer
|
||||||
|
:uri-stdlib-BytesRenderer: {uri-stdlib-baseModule}/BytesRenderer
|
||||||
|
:uri-stdlib-YamlRenderer: {uri-stdlib-baseModule}/YamlRenderer
|
||||||
:uri-stdlib-PcfRenderer-converters: {uri-stdlib-baseModule}/PcfRenderer#converters
|
:uri-stdlib-PcfRenderer-converters: {uri-stdlib-baseModule}/PcfRenderer#converters
|
||||||
:uri-stdlib-Function: {uri-stdlib-baseModule}/Function
|
:uri-stdlib-Function: {uri-stdlib-baseModule}/Function
|
||||||
:uri-stdlib-Function0: {uri-stdlib-baseModule}/Function0
|
:uri-stdlib-Function0: {uri-stdlib-baseModule}/Function0
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
= Pkl Binary Encoding
|
= `pkl-binary` Encoding
|
||||||
include::ROOT:partial$component-attributes.adoc[]
|
include::ROOT:partial$component-attributes.adoc[]
|
||||||
include::partial$component-attributes.adoc[]
|
include::partial$component-attributes.adoc[]
|
||||||
|
|
||||||
Pkl values can be encoded into a binary format.
|
:uri-pkl-core-Evaluator: {uri-pkl-core-main-sources}/Evaluator.java
|
||||||
This format is used for Pkl's non-JVM language bindings, for example, for its Go and Swift bindings.
|
|
||||||
|
Pkl values can be encoded into a binary format called "pkl-binary".
|
||||||
|
This format is a lossless serialization of the underlying Pkl values.
|
||||||
|
|
||||||
|
Pkl code can be rendered into this format using the {uri-stdlib-pklbinaryModule}[pkl:pklbinary] standard library module.
|
||||||
|
|
||||||
|
Alternatively, many language bindings also provide methods to evaluate into `pkl-binary`, such as the `evaluateExpressionPklBinary` method in link:{uri-pkl-core-Evaluator}[org.pkl.core.Evaluator].
|
||||||
|
|
||||||
The binary format is uses link:{uri-messagepack}[MessagePack] encoding.
|
The binary format is uses link:{uri-messagepack}[MessagePack] encoding.
|
||||||
|
|
||||||
@@ -36,7 +42,9 @@ For example, value `8` gets encoded as MessagePack `int8` format.
|
|||||||
== Non-primitives
|
== Non-primitives
|
||||||
|
|
||||||
All non-primitive values are encoded as MessagePack arrays.
|
All non-primitive values are encoded as MessagePack arrays.
|
||||||
The first slot of the array designates the value's type. The remaining slots have fixed meanings depending on the type.
|
The first slot of the array designates the value's type.
|
||||||
|
The remaining slots have fixed meanings depending on the type.
|
||||||
|
Additional slots may be added to types in future Pkl releases. Decoders *must* be designed to defensively discard values beyond the number of known slots for a type or provide meaningful error messages.
|
||||||
|
|
||||||
The array's length is the number of slots that are filled. For example, xref:{uri-stdlib-List}[List] is encoded as an MessagePack array with two elements.
|
The array's length is the number of slots that are filled. For example, xref:{uri-stdlib-List}[List] is encoded as an MessagePack array with two elements.
|
||||||
|
|
||||||
@@ -46,16 +54,16 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
||code |type |description |type |description |type |description
|
||code |type |description |type |description |type |description
|
||||||
|
|
||||||
|link:{uri-stdlib-Typed}[Typed], link:{uri-stdlib-Dynamic}[Dynamic]
|
|link:{uri-stdlib-Typed}[Typed], link:{uri-stdlib-Dynamic}[Dynamic]
|
||||||
|`0x1`
|
|`0x01`
|
||||||
|link:{uri-messagepack-str}[str]
|
|link:{uri-messagepack-str}[str]
|
||||||
|Fully qualified class name
|
|<<type-name-encoding,Class name>>
|
||||||
|link:{uri-messagepack-str}[str]
|
|link:{uri-messagepack-str}[str]
|
||||||
|Enclosing module URI
|
|Enclosing module URI
|
||||||
|link:{uri-messagepack-array}[array]
|
|link:{uri-messagepack-array}[array]
|
||||||
|Array of <<object-members,object members>>
|
|Array of <<object-members,object members>>
|
||||||
|
|
||||||
|link:{uri-stdlib-Map}[Map]
|
|link:{uri-stdlib-Map}[Map]
|
||||||
|`0x2`
|
|`0x02`
|
||||||
|link:{uri-messagepack-map}[map]
|
|link:{uri-messagepack-map}[map]
|
||||||
|Map of `<value>` to `<value>`
|
|Map of `<value>` to `<value>`
|
||||||
|
|
|
|
||||||
@@ -64,7 +72,7 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-Mapping}[Mapping]
|
|link:{uri-stdlib-Mapping}[Mapping]
|
||||||
|`0x3`
|
|`0x03`
|
||||||
|link:{uri-messagepack-map}[map]
|
|link:{uri-messagepack-map}[map]
|
||||||
|Map of `<value>` to `<value>`
|
|Map of `<value>` to `<value>`
|
||||||
|
|
|
|
||||||
@@ -73,7 +81,7 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-List}[List]
|
|link:{uri-stdlib-List}[List]
|
||||||
|`0x4`
|
|`0x04`
|
||||||
|link:{uri-messagepack-array}[array]
|
|link:{uri-messagepack-array}[array]
|
||||||
|Array of `<value>`
|
|Array of `<value>`
|
||||||
|
|
|
|
||||||
@@ -82,7 +90,7 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-Listing}[Listing]
|
|link:{uri-stdlib-Listing}[Listing]
|
||||||
|`0x5`
|
|`0x05`
|
||||||
|link:{uri-messagepack-array}[array]
|
|link:{uri-messagepack-array}[array]
|
||||||
|Array of `<value>`
|
|Array of `<value>`
|
||||||
|
|
|
|
||||||
@@ -91,7 +99,7 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-Set}[Set]
|
|link:{uri-stdlib-Set}[Set]
|
||||||
|`0x6`
|
|`0x06`
|
||||||
|link:{uri-messagepack-array}[array]
|
|link:{uri-messagepack-array}[array]
|
||||||
|Array of `<value>`
|
|Array of `<value>`
|
||||||
|
|
|
|
||||||
@@ -100,7 +108,7 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-Duration}[Duration]
|
|link:{uri-stdlib-Duration}[Duration]
|
||||||
|`0x7`
|
|`0x07`
|
||||||
|{uri-messagepack-float}[float64]
|
|{uri-messagepack-float}[float64]
|
||||||
|Duration value
|
|Duration value
|
||||||
|link:{uri-messagepack-str}[str]
|
|link:{uri-messagepack-str}[str]
|
||||||
@@ -109,7 +117,7 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-DataSize}[DataSize]
|
|link:{uri-stdlib-DataSize}[DataSize]
|
||||||
|`0x8`
|
|`0x08`
|
||||||
|link:{uri-messagepack-float}[float64]
|
|link:{uri-messagepack-float}[float64]
|
||||||
|Value (float64)
|
|Value (float64)
|
||||||
|link:{uri-messagepack-str}[str]
|
|link:{uri-messagepack-str}[str]
|
||||||
@@ -118,7 +126,7 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-Pair}[Pair]
|
|link:{uri-stdlib-Pair}[Pair]
|
||||||
|`0x9`
|
|`0x09`
|
||||||
|`<value>`
|
|`<value>`
|
||||||
|First value
|
|First value
|
||||||
|`<value>`
|
|`<value>`
|
||||||
@@ -127,7 +135,7 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-IntSeq}[IntSeq]
|
|link:{uri-stdlib-IntSeq}[IntSeq]
|
||||||
|`0xA`
|
|`0x0A`
|
||||||
|link:{uri-messagepack-int}[int]
|
|link:{uri-messagepack-int}[int]
|
||||||
|Start
|
|Start
|
||||||
|link:{uri-messagepack-int}[int]
|
|link:{uri-messagepack-int}[int]
|
||||||
@@ -136,7 +144,7 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|Step
|
|Step
|
||||||
|
|
||||||
|link:{uri-stdlib-Regex}[Regex]
|
|link:{uri-stdlib-Regex}[Regex]
|
||||||
|`0xB`
|
|`0x0B`
|
||||||
|link:{uri-messagepack-str}[str]
|
|link:{uri-messagepack-str}[str]
|
||||||
|Regex string representation
|
|Regex string representation
|
||||||
|
|
|
|
||||||
@@ -145,25 +153,25 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-Class}[Class]
|
|link:{uri-stdlib-Class}[Class]
|
||||||
|`0xC`
|
|`0x0C`
|
||||||
|
|
|link:{uri-messagepack-str}[str]
|
||||||
|
|
|<<type-name-encoding,Class name>>
|
||||||
|
|
|link:{uri-messagepack-str}[str]
|
||||||
|
|
|Module URI
|
||||||
|
|
|
|
||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-TypeAlias}[TypeAlias]
|
|link:{uri-stdlib-TypeAlias}[TypeAlias]
|
||||||
|`0xD`
|
|`0x0D`
|
||||||
|
|
|link:{uri-messagepack-str}[str]
|
||||||
|
|
|<<type-name-encoding,TypeAlias name>>
|
||||||
|
|
|link:{uri-messagepack-str}[str]
|
||||||
|
|
|Module URI
|
||||||
|
|
|
|
||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-Function}[Function]
|
|link:{uri-stdlib-Function}[Function]
|
||||||
|`0xE`
|
|`0x0E`
|
||||||
|
|
|
|
||||||
|
|
|
|
||||||
|
|
|
|
||||||
@@ -172,7 +180,7 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-Bytes}[Bytes]
|
|link:{uri-stdlib-Bytes}[Bytes]
|
||||||
|`0xF`
|
|`0x0F`
|
||||||
|link:{uri-messagepack-bin}[bin]
|
|link:{uri-messagepack-bin}[bin]
|
||||||
|Binary contents
|
|Binary contents
|
||||||
|
|
|
|
||||||
@@ -181,6 +189,19 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
[[type-name-encoding]]
|
||||||
|
[NOTE]
|
||||||
|
====
|
||||||
|
Type names have specific encoding rules:
|
||||||
|
|
||||||
|
* When the module URI is `pkl:base`:
|
||||||
|
** If the type name is `ModuleClass`, this type represents the module class of `pkl:base`.
|
||||||
|
** Otherwise, the type name corresponds to a type in `pkl:base`.
|
||||||
|
* For all other module URIs:
|
||||||
|
** When the type name contains `\#`, the string after the `#` character corresponds to a type in that module. The string before the `#` is the name of the module.
|
||||||
|
** Otherwise, the type name is the name of the module and represents the class of the module.
|
||||||
|
====
|
||||||
|
|
||||||
[[object-members]]
|
[[object-members]]
|
||||||
== Object Members
|
== Object Members
|
||||||
|
|
||||||
@@ -212,4 +233,3 @@ Like non-primitive values, object members are encoded as MessagePack arrays, whe
|
|||||||
|`<value>`
|
|`<value>`
|
||||||
|element value
|
|element value
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|||||||
@@ -1423,7 +1423,7 @@ The recipe for transforming a listing is:
|
|||||||
. Transform the list using ``List``'s link:{uri-stdlib-List}[rich API].
|
. Transform the list using ``List``'s link:{uri-stdlib-List}[rich API].
|
||||||
. If necessary, convert the list back to a listing.
|
. If necessary, convert the list back to a listing.
|
||||||
|
|
||||||
TIP: Often, transformations happen in a link:{uri-stdlib-PcfRenderer-converters}[converter] of a link:{uri-stdlib-ValueRenderer}[value renderer].
|
TIP: Often, transformations happen in a link:{uri-stdlib-PcfRenderer-converters}[converter] of a link:{uri-stdlib-BaseValueRenderer}[value renderer].
|
||||||
Because most value renderers treat lists the same as listings, it is often not necessary to convert back to a listing.
|
Because most value renderers treat lists the same as listings, it is often not necessary to convert back to a listing.
|
||||||
|
|
||||||
Equipped with this knowledge, let's try to accomplish our objective:
|
Equipped with this knowledge, let's try to accomplish our objective:
|
||||||
@@ -1803,7 +1803,7 @@ The recipe for transforming a mapping is:
|
|||||||
. Transform the map using ``Map``'s link:{uri-stdlib-Map}[rich API].
|
. Transform the map using ``Map``'s link:{uri-stdlib-Map}[rich API].
|
||||||
. If necessary, convert the map back to a mapping.
|
. If necessary, convert the map back to a mapping.
|
||||||
|
|
||||||
TIP: Often, transformations happen in a link:{uri-stdlib-PcfRenderer-converters}[converter] of a link:{uri-stdlib-ValueRenderer}[value renderer].
|
TIP: Often, transformations happen in a link:{uri-stdlib-PcfRenderer-converters}[converter] of a link:{uri-stdlib-BaseValueRenderer}[value renderer].
|
||||||
As most value renderers treat maps the same as mappings, it is often not necessary to convert back to a mapping.
|
As most value renderers treat maps the same as mappings, it is often not necessary to convert back to a mapping.
|
||||||
|
|
||||||
Equipped with this knowledge, let's try to accomplish our objective:
|
Equipped with this knowledge, let's try to accomplish our objective:
|
||||||
|
|||||||
@@ -733,31 +733,48 @@ pkl shell-completion bash
|
|||||||
pkl shell-completion zsh
|
pkl shell-completion zsh
|
||||||
----
|
----
|
||||||
|
|
||||||
[[command-format-check]]
|
[[command-format]]
|
||||||
=== `pkl format check`
|
=== `pkl format`
|
||||||
|
|
||||||
*Synopsis*: `pkl format check <file-or-dir-path>`
|
*Synopsis*: `pkl format <options> [<paths>]`
|
||||||
|
|
||||||
This command checks for format violations on the given file or directory and print their names to stdout. +
|
This command formats or checks formatting of Pkl files. +
|
||||||
It returns a non-zero status code in case violations are found.
|
Exit codes:
|
||||||
|
|
||||||
|
* 0: No violations found.
|
||||||
|
* 1: An unexpected error happened (ex.: IO error)
|
||||||
|
* 11: Violations were found.
|
||||||
|
|
||||||
If the path is a directory, recursively looks for files with a `.pkl` extension, or files named `PklProject`.
|
If the path is a directory, recursively looks for files with a `.pkl` extension, or files named `PklProject`.
|
||||||
|
|
||||||
[[command-format-apply]]
|
By default, the input files are formatted, and written to standard out.
|
||||||
=== `pkl format apply`
|
|
||||||
|
|
||||||
*Synopsis*: `pkl format apply [<options>] <file-or-dir-path>`
|
|
||||||
|
|
||||||
This command formats the given files overwriting them.
|
|
||||||
|
|
||||||
If the path is a directory, recursively looks for files with a `.pkl` extension, or files named `PklProject`.
|
|
||||||
|
|
||||||
==== Options
|
==== Options
|
||||||
|
|
||||||
|
.--grammar-version
|
||||||
|
[%collapsible]
|
||||||
|
====
|
||||||
|
Default: `2` (latest version) +
|
||||||
|
Select the grammar compatibility version for the formatter.
|
||||||
|
New versions are created for each backward incompatible grammar change.
|
||||||
|
====
|
||||||
|
|
||||||
.-s, --silent
|
.-s, --silent
|
||||||
[%collapsible]
|
[%collapsible]
|
||||||
====
|
====
|
||||||
Do not write the name of wrongly formatted files to stdout.
|
Skip writing to standard out. Mutually exclusive with `--diff-name-only`.
|
||||||
|
====
|
||||||
|
|
||||||
|
.-w, --write
|
||||||
|
[%collapsible]
|
||||||
|
====
|
||||||
|
Format files in place, overwriting them. Implies `--diff-name-only`.
|
||||||
|
====
|
||||||
|
|
||||||
|
.--diff-name-only
|
||||||
|
[%collapsible]
|
||||||
|
====
|
||||||
|
Write the path of files with formatting violations to stdout.
|
||||||
====
|
====
|
||||||
|
|
||||||
[[common-options]]
|
[[common-options]]
|
||||||
|
|||||||
@@ -163,3 +163,11 @@ The left-hand side describes the source prefix, and the right-hand describes the
|
|||||||
This option is commonly used to enable package mirroring.
|
This option is commonly used to enable package mirroring.
|
||||||
The above example will rewrite URL `\https://pkg.pkl-lang.org/pkl-k8s/k8s@1.0.0` to `\https://my.internal.mirror/pkl-k8s/k8s@1.0.0`.
|
The above example will rewrite URL `\https://pkg.pkl-lang.org/pkl-k8s/k8s@1.0.0` to `\https://my.internal.mirror/pkl-k8s/k8s@1.0.0`.
|
||||||
====
|
====
|
||||||
|
|
||||||
|
.--trace-mode
|
||||||
|
[%collapsible]
|
||||||
|
====
|
||||||
|
Default: `compact` +
|
||||||
|
Specifies how `trace()` output is formatted.
|
||||||
|
Possible options are `compact` and `pretty`.
|
||||||
|
====
|
||||||
|
|||||||
@@ -342,6 +342,7 @@ In Pkl 0.29, it is an error to load a module or resource with an opaque `file:`
|
|||||||
|
|
||||||
NOTE: To import or read a relative path, omit `file:` from the import string. For example, `import("foo/bar.txt")` instead of `import("file:foo/bar.txt")`.
|
NOTE: To import or read a relative path, omit `file:` from the import string. For example, `import("foo/bar.txt")` instead of `import("file:foo/bar.txt")`.
|
||||||
|
|
||||||
|
[[new-base-module-names]]
|
||||||
=== New base module names: `Bytes` and `Charset`
|
=== New base module names: `Bytes` and `Charset`
|
||||||
|
|
||||||
Two new names are introduced to the base module: `Bytes` and `Charset`.
|
Two new names are introduced to the base module: `Bytes` and `Charset`.
|
||||||
|
|||||||
@@ -1,51 +1,429 @@
|
|||||||
= Pkl 0.30 Release Notes
|
= Pkl 0.30 Release Notes
|
||||||
:version: 0.30
|
:version: 0.30
|
||||||
:version-minor: 0.30.0
|
:version-minor: 0.30.0
|
||||||
:release-date: TBD
|
:release-date: November 3rd, 2025
|
||||||
|
|
||||||
link:ROOT:partial$component-attributes.adoc[role=include]
|
:yaml-binary-scalar: https://yaml.org/type/binary.html
|
||||||
|
|
||||||
|
include::ROOT:partial$component-attributes.adoc[]
|
||||||
|
|
||||||
Pkl {version} was released on {release-date}. +
|
Pkl {version} was released on {release-date}. +
|
||||||
[.small]#The latest bugfix release is {version-minor}. (xref:changelog.adoc[All Versions])#
|
[.small]#The latest bugfix release is {version-minor}. (xref:changelog.adoc[All Versions])#
|
||||||
|
|
||||||
The next release (0.XX) is scheduled for ???..
|
This release introduces a code formatter, and an in-language API for producing `pkl-binary` output.
|
||||||
|
|
||||||
|
The next release (0.31) is scheduled for February 2026.
|
||||||
To see what's coming in the future, follow the {uri-pkl-roadmap}[Pkl Roadmap].
|
To see what's coming in the future, follow the {uri-pkl-roadmap}[Pkl Roadmap].
|
||||||
|
|
||||||
Please send feedback and questions to https://github.com/apple/pkl/discussions[GitHub Discussions], or submit an issue on https://github.com/apple/pkl/issues/new[Github]. +
|
Please send feedback and questions to https://github.com/apple/pkl/discussions[GitHub Discussions], or submit an issue on https://github.com/apple/pkl/issues/new[GitHub]. +
|
||||||
|
|
||||||
[small]#Pkl is hosted on https://github.com/apple/pkl[GitHub].
|
[small]#Pkl is hosted on https://github.com/apple/pkl[GitHub].
|
||||||
To get started, follow xref:pkl-cli:index.adoc#installation[Installation].#
|
To get started, follow xref:pkl-cli:index.adoc#installation[Installation].#
|
||||||
|
|
||||||
== Highlights [small]#💖#
|
== Highlights [small]#💖#
|
||||||
|
|
||||||
News you don't want to miss.
|
[[formatter]]
|
||||||
|
=== Formatter
|
||||||
|
|
||||||
=== XXX
|
Pkl now has a formatter (https://github.com/apple/pkl/pull/1107[#1107], https://github.com/apple/pkl/pull/1208[#1208], https://github.com/apple/pkl/pull/1211[#1211], https://github.com/apple/pkl/pull/1215[#1215], https://github.com/apple/pkl/pull/1217[#1217], https://github.com/apple/pkl/pull/1235[#1235], https://github.com/apple/pkl/pull/1246[#1246], https://github.com/apple/pkl/pull/1247[#1247], https://github.com/apple/pkl/pull/1252[#1252], https://github.com/apple/pkl/pull/1256[#1256], https://github.com/apple/pkl/pull/1259[#1259], https://github.com/apple/pkl/pull/1260[#1260], https://github.com/apple/pkl/pull/1263[#1263], https://github.com/apple/pkl/pull/1265[#1265], https://github.com/apple/pkl/pull/1266[#1266], https://github.com/apple/pkl/pull/1267[#1267], https://github.com/apple/pkl/pull/1268[#1268], https://github.com/apple/pkl/pull/1270[#1270], https://github.com/apple/pkl/pull/1271[#1271], https://github.com/apple/pkl/pull/1272[#1272], https://github.com/apple/pkl/pull/1273[#1273], https://github.com/apple/pkl/pull/1274[#1274], https://github.com/apple/pkl/pull/1280[#1280], https://github.com/apple/pkl/pull/1283[#1283], https://github.com/apple/pkl/pull/1289[#1289], https://github.com/apple/pkl/pull/1290[#1290])!
|
||||||
|
|
||||||
|
Pkl's formatter is _canonical_, which means that it has a single set of formatting rules, with (almost) no configuration options.
|
||||||
|
The goal is to eliminate the possibility of formatting debates, which can lead to churn and bike-shedding.
|
||||||
|
|
||||||
|
The formatter is available both as a CLI subcommand and as a Java API.
|
||||||
|
|
||||||
|
To learn more about this feature, consult https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0014-canonical-formatter.adoc[SPICE-0014].
|
||||||
|
|
||||||
|
==== Using the CLI
|
||||||
|
|
||||||
|
The Pkl formatter is available under the `pkl format` subcommand. By default, the command will concatenate and write all formatted content to standard out.
|
||||||
|
|
||||||
|
To simply check for formatting violations, getting formatted output on stdout is likely too verbose.
|
||||||
|
The `--silent` flag can be used to omit any output, and the <<formatting-exit-codes,exit code>> can be used to determine
|
||||||
|
if there are formatting violations.
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
pkl format --silent . || echo "Formatting violations were found!"
|
||||||
|
----
|
||||||
|
|
||||||
|
Alternatively, the `--names` flag will print out the names of any files that have formatting violations.
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
pkl format --diff-name-only .
|
||||||
|
----
|
||||||
|
|
||||||
|
To apply formatting, use the `--write` (`-w`) flag.
|
||||||
|
This also implies the `--diff-name-only` flag.
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
pkl format -w .
|
||||||
|
----
|
||||||
|
|
||||||
|
[[formatting-exit-codes]]
|
||||||
|
==== Exit codes
|
||||||
|
|
||||||
|
The formatter will exit with the following codes:
|
||||||
|
|
||||||
|
|===
|
||||||
|
|Code |Description
|
||||||
|
|
||||||
|
|0
|
||||||
|
|No formatting violations were found.
|
||||||
|
|
||||||
|
|1
|
||||||
|
|Non-formatting errors occurred.
|
||||||
|
|
||||||
|
|11
|
||||||
|
|Formatting violations were found.
|
||||||
|
|===
|
||||||
|
|
||||||
|
==== Grammar version
|
||||||
|
|
||||||
|
The formatter can be configured with a _grammar version_, which maps to a Pkl version range.
|
||||||
|
|
||||||
|
|===
|
||||||
|
|Grammar version |Pkl versions
|
||||||
|
|
||||||
|
|1
|
||||||
|
|0.25 - 0.29
|
||||||
|
|
||||||
|
|2
|
||||||
|
|0.30+
|
||||||
|
|===
|
||||||
|
|
||||||
|
Grammar version 2 uses the newly introduced <<trailing-commas,trailing commas>> feature, and therefore is not compatible with existing versions of Pkl.
|
||||||
|
To ensure compatibility, use the `--grammar-version 1` CLI flag.
|
||||||
|
|
||||||
|
[[binary-renderer-parser]]
|
||||||
|
=== `pkl-binary` in-language Renderer
|
||||||
|
|
||||||
|
A new in-language API has been added to render values into xref:bindings-specification:binary-encoding.adoc[pkl-binary encoding] (https://github.com/apple/pkl/pull/1203[#1203],
|
||||||
|
https://github.com/apple/pkl/pull/1250[#1250], https://github.com/apple/pkl/pull/1275[#1275]).
|
||||||
|
|
||||||
|
It's sometimes useful to separate Pkl evaluation from data consumption when used as application or service configuration.
|
||||||
|
This is possible with the `pkl-binary` format, which is a lossless encoding of Pkl data.
|
||||||
|
|
||||||
|
In this approach, Pkl is first rendered into `pkl-binary` during build time, and then deserialized into classes and structs at startup time.
|
||||||
|
This means that the Pkl evaluator does not need to be shipped with the application, which improves code portability and eliminates runtime overhead.
|
||||||
|
|
||||||
|
However, currently, the API for getting this binary format is somewhat cumbersome.
|
||||||
|
Only the host languages have access to this API (for example, https://swiftpackageindex.com/apple/pkl-swift/0.6.0/documentation/pklswift/evaluator/evaluateexpressionraw(source:expression:)[`evaluateExpressionRaw`] in pkl-swift).
|
||||||
|
This means that one-off logic must be written to render this format in the host language.
|
||||||
|
|
||||||
|
In 0.30, this renderer is added as an in-language API, through the {uri-stdlib-pklbinaryModule}[`pkl:pklbinary`] standard library module.
|
||||||
|
Additionally, it is available through CLI flag `--format pkl-binary`.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
// this is parsed instead of tested because DocSnippetTests only handles textual output (via ReplServer)
|
||||||
|
[source%parsed,pkl]
|
||||||
|
----
|
||||||
|
import "pkl:pklbinary"
|
||||||
|
|
||||||
|
output {
|
||||||
|
renderer = new pklbinary.Renderer {}
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
To learn more about this feature, consult https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0021-binary-renderer-and-parser.adoc[SPICE-0021].
|
||||||
|
|
||||||
|
==== New renderer type: `BytesRenderer`
|
||||||
|
|
||||||
|
To enable the `pkl-binary` renderer feature, Pkl now supports renderers that produce `Bytes` output (https://github.com/apple/pkl/pull/1203[#1203]).
|
||||||
|
|
||||||
|
The existing `ValueRenderer` class now extends new class `BaseValueRenderer`, and a new `BytesRenderer` class is introduced.
|
||||||
|
|
||||||
|
Setting a module's output renderer to a `BytesRenderer` will control its resulting `output.bytes`.
|
||||||
|
|
||||||
|
This affects usage scenarios where a module's `output.bytes` is evaluated, for example, when using `pkl eval`.
|
||||||
|
|
||||||
|
==== Using `pkl-binary` data
|
||||||
|
|
||||||
|
Users of Pkl's language binding libraries can decode `pkl-binary` data into instances of code-generated types.
|
||||||
|
|
||||||
|
[tabs]
|
||||||
|
====
|
||||||
|
Java::
|
||||||
|
+
|
||||||
|
[source,java]
|
||||||
|
----
|
||||||
|
var encodedData = fetchEncodedData(); // some byte[] or InputStream
|
||||||
|
var config = Config.fromPklBinary(encodedData);
|
||||||
|
var appConfig = config.as(AppConfig.class);
|
||||||
|
----
|
||||||
|
|
||||||
|
Kotlin::
|
||||||
|
+
|
||||||
|
[source,kotlin]
|
||||||
|
----
|
||||||
|
val encodedData = fetchEncodedData() // some ByteArray or InputStream
|
||||||
|
val config = Config.fromPklBinary(encodedData, ValueMapper.preconfigured().forKotlin())
|
||||||
|
val appConfig = config.to<AppConfig>()
|
||||||
|
----
|
||||||
|
|
||||||
|
Go::
|
||||||
|
+
|
||||||
|
[source,go]
|
||||||
|
----
|
||||||
|
encodedData := fetchEncodedData() // some []byte
|
||||||
|
var appConfig AppConfig
|
||||||
|
if err := pkl.Unmarshal(encodedData, &appConfig); err != nil {
|
||||||
|
// handle error
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Swift::
|
||||||
|
+
|
||||||
|
[source,swift]
|
||||||
|
----
|
||||||
|
let encodedData = fetchEncodedData() // some [UInt8]
|
||||||
|
let appConfig = try PklDecoder.decode(AppConfig.self, from: encodedData)
|
||||||
|
----
|
||||||
|
====
|
||||||
|
|
||||||
== Noteworthy [small]#🎶#
|
== Noteworthy [small]#🎶#
|
||||||
|
|
||||||
Ready when you need them.
|
[[trailing-commas]]
|
||||||
|
=== Trailing Commas
|
||||||
|
|
||||||
=== XXX
|
Pkl's grammar has been updated to allow including a comma following the final item of comma-separated syntax elements (https://github.com/apple/pkl/pull/1137[#1137]).
|
||||||
|
|
||||||
|
These syntax elements are affected:
|
||||||
|
|
||||||
|
[source%tested,pkl]
|
||||||
|
----
|
||||||
|
function add(
|
||||||
|
bar,
|
||||||
|
baz, // <1>
|
||||||
|
) = bar + baz
|
||||||
|
|
||||||
|
foo = add(
|
||||||
|
1,
|
||||||
|
2, // <2>
|
||||||
|
)
|
||||||
|
|
||||||
|
typealias MyMapping<
|
||||||
|
Key,
|
||||||
|
Value, // <3>
|
||||||
|
> = Mapping<Key, Value>
|
||||||
|
|
||||||
|
bar: Mapping<
|
||||||
|
String,
|
||||||
|
Int, // <4>
|
||||||
|
>
|
||||||
|
|
||||||
|
baz: Mapping(
|
||||||
|
!containsKey("forbidden key"),
|
||||||
|
!containsKey("forbidden value"), // <5>
|
||||||
|
)
|
||||||
|
|
||||||
|
qux: (
|
||||||
|
String,
|
||||||
|
Int, // <6>
|
||||||
|
) -> Dynamic =
|
||||||
|
(paramA, paramB) -> new Dynamic {
|
||||||
|
quux = "\(paramA): \(paramB)"
|
||||||
|
}
|
||||||
|
|
||||||
|
corge = (qux) {
|
||||||
|
paramA,
|
||||||
|
paramB, // <7>
|
||||||
|
->
|
||||||
|
grault = paramA.length * paramB
|
||||||
|
}
|
||||||
|
----
|
||||||
|
<1> Function parameter lists in method definitions.
|
||||||
|
<2> Argument lists in method calls.
|
||||||
|
<3> Type parameter lists in generic type definitions.
|
||||||
|
<4> Type argument lists in type annotations and casts.
|
||||||
|
<5> Type constraint lists.
|
||||||
|
<6> Function type parameter lists in function type annotations.
|
||||||
|
<7> Object body parameter lists.
|
||||||
|
|
||||||
|
To learn more about this change, consult https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0019-trailing-commas.adoc[SPICE-0019].
|
||||||
|
|
||||||
|
=== Pretty-printed traces
|
||||||
|
|
||||||
|
A new evaluator option is added to enable pretty-printed traces (https://github.com/apple/pkl/pull/1100[#1100], https://github.com/apple/pkl/pull/1227[#1227], https://github.com/apple/pkl/pull/1230[#1230]).
|
||||||
|
|
||||||
|
Currently, the `trace()` operator will render values as a single line, and trims the output after 100 characters.
|
||||||
|
This can obscure information when debugging.
|
||||||
|
|
||||||
|
In 0.30, a new evaluator option is added to control how traces are emitted.
|
||||||
|
Two trace modes are introduced:
|
||||||
|
|
||||||
|
* `compact` - the current output mode (default).
|
||||||
|
* `pretty` - multiline, with no limit on output size.
|
||||||
|
|
||||||
|
For example, users of the CLI can specify `--trace-mode` as a flag.
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
pkl eval --trace-mode pretty myModule.pkl
|
||||||
|
----
|
||||||
|
|
||||||
|
Thanks to https://github.com/ssalevan[@ssalevan] for their contribution to this feature!
|
||||||
|
|
||||||
|
=== Better support for `Bytes` when rendering YAML
|
||||||
|
|
||||||
|
Previously, attempting to render a `Bytes` value using {uri-stdlib-YamlRenderer}[`YamlRenderer`] required the use of a link:{uri-stdlib-PcfRenderer-converters}[converter].
|
||||||
|
Now, Pkl can natively render YAML containing link:{yaml-binary-scalar}[binary scalars] (https://github.com/apple/pkl/pull/1276[#1276]).
|
||||||
|
|
||||||
|
[source,pkl%tested]
|
||||||
|
----
|
||||||
|
foo {
|
||||||
|
bar = Bytes(1, 2, 3)
|
||||||
|
}
|
||||||
|
|
||||||
|
rendered = new YamlRenderer {}.renderValue(foo) // <1>
|
||||||
|
----
|
||||||
|
<1> Result: `bar: !!binary AQID`
|
||||||
|
|
||||||
|
Similarly, link:{uri-stdlib-YamlParser}[`yaml.Parser`] now parses binary YAML values as Pkl link:{uri-stdlib-Bytes}[`Bytes`] values (https://github.com/apple/pkl/pull/1277[#1277]).
|
||||||
|
This is a breaking change; previously these values were parsed as link:{uri-stdlib-String}[`String`] value containing the base64-encoded binary data.
|
||||||
|
|
||||||
|
[source,pkl%tested]
|
||||||
|
----
|
||||||
|
import "pkl:yaml"
|
||||||
|
|
||||||
|
yamlData =
|
||||||
|
"""
|
||||||
|
bytes: !!binary AQID
|
||||||
|
"""
|
||||||
|
|
||||||
|
parsed = new yaml.Parser {}.parse(yamlData).bytes // <1>
|
||||||
|
----
|
||||||
|
<1> Result: `Bytes(1, 2, 3)`
|
||||||
|
|
||||||
|
[[pkldoc-perf-improvements]]
|
||||||
|
=== `pkldoc` performance improvements
|
||||||
|
|
||||||
|
The `pkldoc` documentation generator has been overhauled (https://github.com/apple/pkl/pull/1169[#1169], https://github.com/apple/pkl/pull/1224[#1224], https://github.com/apple/pkl/pull/1241[#1241], https://github.com/apple/pkl/pull/1242[#1242]).
|
||||||
|
|
||||||
|
Currently, the `pkldoc` tool needs to consume much of an existing documentation website whenever generating new documentation.
|
||||||
|
This adds significant I/O overhead as a pkldoc documentation website grows.
|
||||||
|
|
||||||
|
The generator has been overhauled to minimize the amount of data needed to be read from the current site.
|
||||||
|
|
||||||
|
To read more about this change, consult https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0018-pkldoc-io-improvements.adoc[SPICE-0018].
|
||||||
|
|
||||||
|
[[pkldoc-migration]]
|
||||||
|
==== Migration
|
||||||
|
|
||||||
|
The new pkldoc website introduces breaking changes to the data model.
|
||||||
|
Because of this, existing sites must be migrated before using the `0.30` version of pkldoc.
|
||||||
|
|
||||||
|
To migrate, run the one-time command `pkldoc --migrate`.
|
||||||
|
|
||||||
|
=== Java API changes
|
||||||
|
|
||||||
|
==== New classes
|
||||||
|
|
||||||
|
New classes are introduced to the Java API.
|
||||||
|
|
||||||
|
* `org.pkl.core.PklBinaryDecoder`
|
||||||
|
|
||||||
|
==== New methods
|
||||||
|
|
||||||
|
New methods are introduced to the Java API.
|
||||||
|
|
||||||
|
* `org.pkl.core.Evaluator.evaluateExpressionPklBinary`
|
||||||
|
* `org.pkl.core.EvaluatorBuilder.setTraceMode`
|
||||||
|
* `org.pkl.core.EvaluatorBuilder.getTraceMode`
|
||||||
|
* `org.pkl.config.java.Config.fromPklBinary`
|
||||||
|
|
||||||
|
=== Standard Library changes
|
||||||
|
|
||||||
|
New modules, properties, methods, classes and typealiases have been added to the standard library (https://github.com/apple/pkl/pull/1106[#1106]).
|
||||||
|
|
||||||
|
==== Changes to `pkl:base`
|
||||||
|
|
||||||
|
Additions:
|
||||||
|
|
||||||
|
* New class: {uri-stdlib-BaseValueRenderer}[`BaseValueRenderer`]
|
||||||
|
* {uri-stdlib-ValueRenderer}[`ValueRenderer`] (now a subclass of {uri-stdlib-BaseValueRenderer}[`BaseValueRenderer`])
|
||||||
|
* {uri-stdlib-BytesRenderer}[`BytesRenderer`]
|
||||||
|
* {uri-stdlib-baseModule}/RenderDirective#bytes[`RenderDirective.bytes`]
|
||||||
|
|
||||||
|
==== Additions to `pkl:EvaluatorSettings`
|
||||||
|
|
||||||
|
* {uri-stdlib-evaluatorSettingsModule}#traceMode[`traceMode`]
|
||||||
|
|
||||||
|
==== Additions to `pkl:reflect`
|
||||||
|
|
||||||
|
* {uri-stdlib-reflectModule}/Class#allMethods[`Class.allMethods`]
|
||||||
|
* {uri-stdlib-reflectModule}/Class#allProperties[`Class.allProperties`]
|
||||||
|
* {uri-stdlib-reflectModule}/Property#allAnnotations[`Propterty.allAnnotations`]
|
||||||
|
* {uri-stdlib-reflectModule}/Propterty#allModifiers[`Propterty.allModifiers`]
|
||||||
|
|
||||||
|
==== New module: `pkl:pklbinary`
|
||||||
|
|
||||||
|
The `pkl:pklbinary` standard library module is added.
|
||||||
|
|
||||||
|
=== `pkl repl` improvements
|
||||||
|
|
||||||
|
The REPL now handles interrupts (Ctrl-C) in a more user-friendly way (https://github.com/apple/pkl/pull/1188[#1188]).
|
||||||
|
|
||||||
|
Instead of exiting immediately, it behaves like other REPLs:
|
||||||
|
|
||||||
|
* If the line is non-empty or in a continuation, the buffer is cleared.
|
||||||
|
* If the line is empty, print a message with instructions on exiting the REPL.
|
||||||
|
** If another interrupt is sent immediately after, exit.
|
||||||
|
|
||||||
== Breaking Changes [small]#💔#
|
== Breaking Changes [small]#💔#
|
||||||
|
|
||||||
Things to watch out for when upgrading.
|
Things to watch out for when upgrading.
|
||||||
|
|
||||||
=== XXX
|
=== Binary data handling `yaml.Parser`
|
||||||
|
|
||||||
|
link:{yaml-binary-scalar}[YAML binary scalars] are now parsed as link:{uri-stdlib-Bytes}[`Bytes`] values.
|
||||||
|
Prior versions of Pkl parsed binary scalars as link:{uri-stdlib-String}[`String`] values containing the base64-encoded binary data.
|
||||||
|
|
||||||
|
=== Minimum Kotlin version bump
|
||||||
|
|
||||||
|
For users of Pkl's Kotlin libraries, the minimum Kotlin version has been bumped to 2.1 (https://github.com/apple/pkl/pull/1232[#1232]).
|
||||||
|
|
||||||
|
=== New base module names: `BaseValueRenderer`, `BytesRenderer`
|
||||||
|
|
||||||
|
Two new names are introduced to the base module: `BaseValueRenderer`, and `BytesRenderer`.
|
||||||
|
That means that any code that currently references these names on implicit `this` will break (https://github.com/apple/pkl/pull/1203[#1203]).
|
||||||
|
|
||||||
|
To learn more about how this breaks code and how to fix it, see xref:0.29.adoc#new-base-module-names[New base module names] in 0.29's release notes.
|
||||||
|
|
||||||
|
=== `pkldoc` sites need to be migrated
|
||||||
|
|
||||||
|
Due to breaking changes made in pkldoc's data model, existing pkldoc websites must be migrated.
|
||||||
|
|
||||||
|
See <<pkldoc-migration>> for more details.
|
||||||
|
|
||||||
== Miscellaneous [small]#🐸#
|
== Miscellaneous [small]#🐸#
|
||||||
|
|
||||||
* XXX
|
* Dependency updates (https://github.com/apple/pkl/pull/1184[#1184], https://github.com/apple/pkl/pull/1225[#1225], https://github.com/apple/pkl/pull/1226[#1226], https://github.com/apple/pkl/pull/1228[#1228]).
|
||||||
|
* Enforce Pkl formatting of stdlib (https://github.com/apple/pkl/pull/1236[#1236], https://github.com/apple/pkl/pull/1253[#1253], https://github.com/apple/pkl/pull/1258[#1258], https://github.com/apple/pkl/pull/1278[#1278], https://github.com/apple/pkl/pull/1279[#1279]).
|
||||||
|
* Add internal IntelliJ plugin that's meant to assist with development of the Pkl codebase itself (https://github.com/apple/pkl/pull/1248[#1248]).
|
||||||
|
* Update CircleCI macOS instance type and Xcode version (https://github.com/apple/pkl/pull/1243[#1243], https://github.com/apple/pkl/pull/1244[#1244]).
|
||||||
|
* Disable multi-jdk testing when running on Windows ARM (https://github.com/apple/pkl/pull/1223[#1223]).
|
||||||
|
* Refine documentation for class `Any` (https://github.com/apple/pkl/pull/1194[#1194]).
|
||||||
|
|
||||||
== Bugs fixed [small]#🐜#
|
== Bugs fixed [small]#🐜#
|
||||||
|
|
||||||
The following bugs have been fixed.
|
The following bugs have been fixed.
|
||||||
|
|
||||||
* XXX (https://github.com/apple/pkl/issues/XXX[XXX])
|
* Incorrect error message when refusing to read past root dir (https://github.com/apple/pkl/pull/1234[#1233]).
|
||||||
|
* Unicode U+7FFF character (翿) incorrectly parsed as EOF (https://github.com/apple/pkl/pull/1251[#1251]).
|
||||||
|
* Fallback certificates do not work in certain classloader setups (https://github.com/apple/pkl/pull/1198[#1199]).
|
||||||
|
|
||||||
== Contributors [small]#🙏#
|
== Contributors [small]#🙏#
|
||||||
|
|
||||||
We would like to thank the contributors to this release (in alphabetical order):
|
We would like to thank the contributors to this release (in alphabetical order):
|
||||||
|
|
||||||
* XXX
|
* https://github.com/bioball[@bioball]
|
||||||
|
* https://github.com/HT154[@HT154]
|
||||||
|
* https://github.com/netvl[@netvl]
|
||||||
|
* https://github.com/spyoungtech[@spyoungtech]
|
||||||
|
* https://github.com/srueg[@srueg]
|
||||||
|
* https://github.com/ssalevan[@ssalevan]
|
||||||
|
* https://github.com/stackoverflow[@stackoverflow]
|
||||||
|
|||||||
@@ -2,7 +2,9 @@
|
|||||||
include::ROOT:partial$component-attributes.adoc[]
|
include::ROOT:partial$component-attributes.adoc[]
|
||||||
|
|
||||||
[[release-0.30.0]]
|
[[release-0.30.0]]
|
||||||
== 0.30.0 (TBD)
|
== 0.30.0 (2025-10-30)
|
||||||
|
|
||||||
|
xref:0.30.adoc[Release notes]
|
||||||
|
|
||||||
[[release-0.29.1]]
|
[[release-0.29.1]]
|
||||||
== 0.29.1 (2025-08-27)
|
== 0.29.1 (2025-08-27)
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ A module that doesn't add new properties shouldn't use the `extends` clause.
|
|||||||
==== Imports
|
==== Imports
|
||||||
|
|
||||||
Sort imports sections using https://en.wikipedia.org/wiki/Natural_sort_order[natural sorting] by their module URI.
|
Sort imports sections using https://en.wikipedia.org/wiki/Natural_sort_order[natural sorting] by their module URI.
|
||||||
Relative path imports should be in their own section, separated by a newline.
|
Relative path and package imports should be in their own section, separated by a newline.
|
||||||
There should be no unused imports.
|
There should be no unused imports.
|
||||||
|
|
||||||
[source%parsed,{pkl}]
|
[source%parsed,{pkl}]
|
||||||
@@ -106,6 +106,8 @@ There should be no unused imports.
|
|||||||
import "modulepath:/foo.pkl"
|
import "modulepath:/foo.pkl"
|
||||||
import "package://example.com/mypackage@1.0.0#/foo.pkl"
|
import "package://example.com/mypackage@1.0.0#/foo.pkl"
|
||||||
|
|
||||||
|
import "@mypackage/baz.pkl"
|
||||||
|
|
||||||
import ".../my/file/bar2.pkl"
|
import ".../my/file/bar2.pkl"
|
||||||
import ".../my/file/bar11.pkl"
|
import ".../my/file/bar11.pkl"
|
||||||
----
|
----
|
||||||
@@ -266,7 +268,6 @@ Use line comments or block comments to convey implementation concerns to authors
|
|||||||
|
|
||||||
Doc comments should start with a one sentence summary paragraph, followed by additional paragraphs if necessary.
|
Doc comments should start with a one sentence summary paragraph, followed by additional paragraphs if necessary.
|
||||||
Start new sentences on their own line.
|
Start new sentences on their own line.
|
||||||
Add a single space after `///`.
|
|
||||||
|
|
||||||
[source%parsed,{pkl}]
|
[source%parsed,{pkl}]
|
||||||
----
|
----
|
||||||
@@ -335,7 +336,6 @@ class ZebraParty {}
|
|||||||
[source%tested,{pkl}]
|
[source%tested,{pkl}]
|
||||||
----
|
----
|
||||||
class zebraParty {}
|
class zebraParty {}
|
||||||
class zebraparty {}
|
|
||||||
----
|
----
|
||||||
|
|
||||||
== Strings
|
== Strings
|
||||||
@@ -472,13 +472,6 @@ else
|
|||||||
if (bar) bar else foo
|
if (bar) bar else foo
|
||||||
----
|
----
|
||||||
|
|
||||||
.good.pkl
|
|
||||||
[source%parsed,{pkl-expr}]
|
|
||||||
----
|
|
||||||
if (bar) bar
|
|
||||||
else foo
|
|
||||||
----
|
|
||||||
|
|
||||||
.good.pkl
|
.good.pkl
|
||||||
[source%parsed,{pkl-expr}]
|
[source%parsed,{pkl-expr}]
|
||||||
----
|
----
|
||||||
@@ -624,19 +617,15 @@ res2 = 1 + 2 // <3>
|
|||||||
res3 = res2 as Number // <3>
|
res3 = res2 as Number // <3>
|
||||||
res4 = List(1, 2, 3) // <4>
|
res4 = List(1, 2, 3) // <4>
|
||||||
res5 = if (foo) bar else baz // <5>
|
res5 = if (foo) bar else baz // <5>
|
||||||
|
|
||||||
|
typealias Foo = "foo" | "bar" | "baz" // <6>
|
||||||
----
|
----
|
||||||
<1> After keywords
|
<1> After keywords
|
||||||
<2> Before and after braces
|
<2> Before and after braces
|
||||||
<3> Around infix operators
|
<3> Around infix operators
|
||||||
<4> After a comma
|
<4> After a comma
|
||||||
<5> Before opening parentheses in control operators (`if`, `for`, `when` are control operators)
|
<5> Before opening parentheses in control operators (`if`, `for`, `when` are control operators)
|
||||||
|
<6> Before and after the pipe symbol (`|`)
|
||||||
NOTE: No spaces are added around the pipe symbol (`|`) in union types.
|
|
||||||
|
|
||||||
[source%tested,{pkl}]
|
|
||||||
----
|
|
||||||
typealias Foo = "foo"|"bar"|"baz"
|
|
||||||
----
|
|
||||||
|
|
||||||
=== Object bodies
|
=== Object bodies
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import org.pkl.commons.test.FileTestUtils.rootProjectDir
|
|||||||
import org.pkl.core.Loggers
|
import org.pkl.core.Loggers
|
||||||
import org.pkl.core.SecurityManagers
|
import org.pkl.core.SecurityManagers
|
||||||
import org.pkl.core.StackFrameTransformers
|
import org.pkl.core.StackFrameTransformers
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode
|
||||||
import org.pkl.core.module.ModuleKeyFactories
|
import org.pkl.core.module.ModuleKeyFactories
|
||||||
import org.pkl.core.repl.ReplRequest
|
import org.pkl.core.repl.ReplRequest
|
||||||
import org.pkl.core.repl.ReplResponse
|
import org.pkl.core.repl.ReplResponse
|
||||||
@@ -97,6 +98,7 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
IoUtils.getCurrentWorkingDir(),
|
IoUtils.getCurrentWorkingDir(),
|
||||||
StackFrameTransformers.defaultTransformer,
|
StackFrameTransformers.defaultTransformer,
|
||||||
false,
|
false,
|
||||||
|
TraceMode.COMPACT,
|
||||||
)
|
)
|
||||||
return ExecutionContext(replServer)
|
return ExecutionContext(replServer)
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-11
@@ -8,15 +8,17 @@ geantyref = "1.+"
|
|||||||
googleJavaFormat = "1.25.2"
|
googleJavaFormat = "1.25.2"
|
||||||
# must not use `+` because used in download URL
|
# must not use `+` because used in download URL
|
||||||
# 23.1.x requires JDK 20+
|
# 23.1.x requires JDK 20+
|
||||||
graalVm = "24.1.2"
|
graalVm = "25.0.0"
|
||||||
graalVmJdkVersion = "21.0.8"
|
graalVmJdkVersion = "25.0.0"
|
||||||
# slightly hacky but convenient place so we remember to update the checksum
|
# slightly hacky but convenient place so we remember to update the checksum
|
||||||
graalVmSha256-macos-x64 = "1a63681c9042f92f27da535c3b0fada62aae094da1f705ecb0ef0270b80f873b"
|
graalVmSha256-macos-x64 = "04278cf867d040e29dc71dd7727793f0ea67eb72adce8a35d04b87b57906778d"
|
||||||
graalVmSha256-macos-aarch64 = "3de4049d254dd3c04fd65a66be904d6cf490dca4ece2e2b5fcdfa91d34760f4f"
|
graalVmSha256-macos-aarch64 = "c446d5aaeda98660a4c14049d299e9fba72105a007df89f19d27cf3979d37158"
|
||||||
graalVmSha256-linux-x64 = "c8035b3ce6e45f1481752c6b38153bb4a53eeb477c5345d5bec5ca44ed18a056"
|
graalVmSha256-linux-x64 = "1862f2ce97387a303cae4c512cb21baf36fafd2457c3cbbc10d87db94b89d3dd"
|
||||||
graalVmSha256-linux-aarch64 = "aa1100beb3377717a0ba1937e51878c48917615922a36c4508baf46927a9a6e4"
|
graalVmSha256-linux-aarch64 = "6c3c8b7617006c5d174d9cf7d357ccfb4bae77a4df1294ee28084fcb6eea8921"
|
||||||
graalVmSha256-windows-x64 = "0401a5c9b4a5478640b0d5563a5e0f2c97513ab689c5ee647d41293b92eed0e4"
|
graalVmSha256-windows-x64 = "33ef1d186b5c1e95465fcc97e637bc26e72d5f2250a8615b9c5d667ed5c17fd0"
|
||||||
ideaExtPlugin = "1.1.9"
|
ideaExtPlugin = "1.1.9"
|
||||||
|
intellijPlugin = "2.10.1"
|
||||||
|
intellij = "2025.2.3"
|
||||||
javaPoet = "0.+"
|
javaPoet = "0.+"
|
||||||
javaxInject = "1"
|
javaxInject = "1"
|
||||||
jansi = "2.+"
|
jansi = "2.+"
|
||||||
@@ -29,11 +31,12 @@ jmhPlugin = "0.7.2"
|
|||||||
jsr305 = "3.+"
|
jsr305 = "3.+"
|
||||||
junit = "5.+"
|
junit = "5.+"
|
||||||
junitPlatform = "1.+"
|
junitPlatform = "1.+"
|
||||||
kotlin = "2.0.21"
|
kotlin = "2.2.20"
|
||||||
# 1.7+ generates much more verbose code
|
# 1.7+ generates much more verbose code
|
||||||
kotlinPoet = "1.6.+"
|
kotlinPoet = "1.6.+"
|
||||||
kotlinxHtml = "0.11.0"
|
kotlinxHtml = "0.11.0"
|
||||||
kotlinxSerialization = "1.8.0"
|
kotlinxSerialization = "1.8.0"
|
||||||
|
kotlinxCoroutines = "1.+"
|
||||||
ktfmt = "0.53"
|
ktfmt = "0.53"
|
||||||
# replaces nuValidator's log4j dependency
|
# replaces nuValidator's log4j dependency
|
||||||
# something related to log4j-1.2-api is apparently broken in 2.17.2
|
# something related to log4j-1.2-api is apparently broken in 2.17.2
|
||||||
@@ -42,7 +45,7 @@ msgpack = "0.9.8"
|
|||||||
nexusPublishPlugin = "2.0.0"
|
nexusPublishPlugin = "2.0.0"
|
||||||
nuValidator = "20.+"
|
nuValidator = "20.+"
|
||||||
paguro = "3.+"
|
paguro = "3.+"
|
||||||
shadowPlugin = "8.1.1"
|
shadowPlugin = "9.+"
|
||||||
slf4j = "1.+"
|
slf4j = "1.+"
|
||||||
snakeYaml = "2.+"
|
snakeYaml = "2.+"
|
||||||
spotlessPlugin = "6.25.0"
|
spotlessPlugin = "6.25.0"
|
||||||
@@ -59,6 +62,7 @@ geantyref = { group = "io.leangen.geantyref", name = "geantyref", version.ref =
|
|||||||
graalCompiler = { group = "org.graalvm.compiler", name = "compiler", version.ref = "graalVm" }
|
graalCompiler = { group = "org.graalvm.compiler", name = "compiler", version.ref = "graalVm" }
|
||||||
graalSdk = { group = "org.graalvm.sdk", name = "graal-sdk", version.ref = "graalVm" }
|
graalSdk = { group = "org.graalvm.sdk", name = "graal-sdk", version.ref = "graalVm" }
|
||||||
graalJs = { group = "org.graalvm.js", name = "js", version.ref = "graalVm" }
|
graalJs = { group = "org.graalvm.js", name = "js", version.ref = "graalVm" }
|
||||||
|
intellij = { group = "com.jetbrains.intellij.idea", name = "ideaIC", version.ref = "intellij" }
|
||||||
javaPoet = { group = "com.palantir.javapoet", name = "javapoet", version.ref = "javaPoet" }
|
javaPoet = { group = "com.palantir.javapoet", name = "javapoet", version.ref = "javaPoet" }
|
||||||
javaxInject = { group = "javax.inject", name = "javax.inject", version.ref = "javaxInject" }
|
javaxInject = { group = "javax.inject", name = "javax.inject", version.ref = "javaxInject" }
|
||||||
jansi = { group = "org.fusesource.jansi", name = "jansi", version.ref = "jansi" }
|
jansi = { group = "org.fusesource.jansi", name = "jansi", version.ref = "jansi" }
|
||||||
@@ -79,13 +83,14 @@ kotlinScripting = { group = "org.jetbrains.kotlin", name = "kotlin-scripting-jsr
|
|||||||
kotlinStdLib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" }
|
kotlinStdLib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" }
|
||||||
kotlinxHtml = { group = "org.jetbrains.kotlinx", name = "kotlinx-html-jvm", version.ref = "kotlinxHtml" }
|
kotlinxHtml = { group = "org.jetbrains.kotlinx", name = "kotlinx-html-jvm", version.ref = "kotlinxHtml" }
|
||||||
kotlinxSerializationJson = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
|
kotlinxSerializationJson = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
|
||||||
|
kotlinxCoroutinesCore = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" }
|
||||||
log4j12Api = { group = "org.apache.logging.log4j", name = "log4j-1.2-api", version.ref = "log4j" }
|
log4j12Api = { group = "org.apache.logging.log4j", name = "log4j-1.2-api", version.ref = "log4j" }
|
||||||
msgpack = { group = "org.msgpack", name = "msgpack-core", version.ref = "msgpack" }
|
msgpack = { group = "org.msgpack", name = "msgpack-core", version.ref = "msgpack" }
|
||||||
nuValidator = { group = "nu.validator", name = "validator", version.ref = "nuValidator" }
|
nuValidator = { group = "nu.validator", name = "validator", version.ref = "nuValidator" }
|
||||||
# to be replaced with https://github.com/usethesource/capsule or https://github.com/lacuna/bifurcan
|
# to be replaced with https://github.com/usethesource/capsule or https://github.com/lacuna/bifurcan
|
||||||
paguro = { group = "org.organicdesign", name = "Paguro", version.ref = "paguro" }
|
paguro = { group = "org.organicdesign", name = "Paguro", version.ref = "paguro" }
|
||||||
pklConfigJavaAll025 = { group = "org.pkl-lang", name = "pkl-config-java-all", version = "0.25.0" }
|
pklConfigJavaAll025 = { group = "org.pkl-lang", name = "pkl-config-java-all", version = "0.25.0" }
|
||||||
shadowPlugin = { group = "com.github.johnrengelman", name = "shadow", version.ref = "shadowPlugin" }
|
shadowPlugin = { group = "com.gradleup.shadow", name = "com.gradleup.shadow.gradle.plugin", version.ref = "shadowPlugin" }
|
||||||
slf4jApi = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j" }
|
slf4jApi = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j" }
|
||||||
slf4jSimple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j" }
|
slf4jSimple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j" }
|
||||||
snakeYaml = { group = "org.snakeyaml", name = "snakeyaml-engine", version.ref = "snakeYaml" }
|
snakeYaml = { group = "org.snakeyaml", name = "snakeyaml-engine", version.ref = "snakeYaml" }
|
||||||
@@ -103,4 +108,5 @@ ideaExt = { id = "org.jetbrains.gradle.plugin.idea-ext", version.ref = "ideaExtP
|
|||||||
jmh = { id = "me.champeau.jmh", version.ref = "jmhPlugin" }
|
jmh = { id = "me.champeau.jmh", version.ref = "jmhPlugin" }
|
||||||
kotlinxSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
|
kotlinxSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
|
||||||
nexusPublish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexusPublishPlugin" }
|
nexusPublish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexusPublishPlugin" }
|
||||||
shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadowPlugin" }
|
shadow = { id = "com.gradleup.shadow", version.ref = "shadowPlugin" }
|
||||||
|
intellij = { id = "org.jetbrains.intellij.platform", version.ref = "intellijPlugin" }
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionSha256Sum=bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531
|
distributionSha256Sum=a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|||||||
+3
-3
@@ -2,15 +2,15 @@
|
|||||||
"catalogs": {},
|
"catalogs": {},
|
||||||
"aliases": {
|
"aliases": {
|
||||||
"pkl": {
|
"pkl": {
|
||||||
"script-ref": "org.pkl-lang:pkl-cli-java:0.29.1",
|
"script-ref": "org.pkl-lang:pkl-cli-java:0.30.0",
|
||||||
"java-agents": []
|
"java-agents": []
|
||||||
},
|
},
|
||||||
"pkl-codegen-java": {
|
"pkl-codegen-java": {
|
||||||
"script-ref": "org.pkl-lang:pkl-codegen-java:0.29.1",
|
"script-ref": "org.pkl-lang:pkl-codegen-java:0.30.0",
|
||||||
"java-agents": []
|
"java-agents": []
|
||||||
},
|
},
|
||||||
"pkl-codegen-kotlin": {
|
"pkl-codegen-kotlin": {
|
||||||
"script-ref": "org.pkl-lang:pkl-codegen-kotlin:0.29.1",
|
"script-ref": "org.pkl-lang:pkl-codegen-kotlin:0.30.0",
|
||||||
"java-agents": []
|
"java-agents": []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
+79
-64
@@ -8,28 +8,30 @@ com.fasterxml.jackson.core:jackson-databind:2.19.0=testCompileClasspath,testImpl
|
|||||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.19.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.19.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.19.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.19.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
com.fasterxml.jackson:jackson-bom:2.19.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.fasterxml.jackson:jackson-bom:2.19.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
com.github.ajalt.clikt:clikt-core-jvm:5.0.3=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
com.github.ajalt.clikt:clikt-core-jvm:5.0.3=compileClasspath,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.clikt:clikt-core:5.0.3=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ajalt.clikt:clikt-core:5.0.3=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
com.github.ajalt.clikt:clikt-jvm:5.0.3=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
com.github.ajalt.clikt:clikt-jvm:5.0.3=compileClasspath,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.clikt:clikt-markdown-jvm:5.0.3=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.clikt:clikt-markdown-jvm:5.0.3=nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.clikt:clikt-markdown:5.0.3=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.clikt:clikt-markdown:5.0.3=nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.clikt:clikt:5.0.3=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ajalt.clikt:clikt:5.0.3=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
com.github.ajalt.colormath:colormath-jvm:3.6.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
com.github.ajalt.colormath:colormath-jvm:3.6.0=compileClasspath,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.colormath:colormath:3.6.0=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ajalt.colormath:colormath:3.6.0=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-core-jvm:3.0.1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-core-jvm:3.0.1=compileClasspath,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-core:3.0.1=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-core:3.0.1=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-jvm-ffm-jvm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-jvm-ffm-jvm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-jvm-ffm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-jvm-ffm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-jvm-graal-ffi-jvm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-jvm-graal-ffi-jvm:3.0.1=nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-jvm-graal-ffi:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-jvm-graal-ffi:3.0.1=nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-jvm-jna-jvm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-jvm-jna-jvm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-jvm-jna:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-jvm-jna:3.0.1=runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-jvm:3.0.1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-jvm:3.0.1=compileClasspath,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-markdown:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-markdown:3.0.1=nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant:3.0.1=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant:3.0.1=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
com.github.ben-manes.caffeine:caffeine:2.9.3=swiftExportClasspathResolvable
|
||||||
com.github.jknack:handlebars-helpers:4.3.1=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.jknack:handlebars-helpers:4.3.1=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
com.github.jknack:handlebars:4.3.1=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.jknack:handlebars:4.3.1=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
com.google.errorprone:error_prone_annotations:2.28.0=swiftExportClasspathResolvable
|
||||||
com.google.errorprone:error_prone_annotations:2.36.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.google.errorprone:error_prone_annotations:2.36.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
com.google.guava:failureaccess:1.0.3=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.google.guava:failureaccess:1.0.3=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
com.google.guava:guava:33.4.8-jre=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.google.guava:guava:33.4.8-jre=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
@@ -39,7 +41,10 @@ com.jayway.jsonpath:json-path:2.9.0=testCompileClasspath,testImplementationDepen
|
|||||||
com.networknt:json-schema-validator:1.5.7=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.networknt:json-schema-validator:1.5.7=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
commons-fileupload:commons-fileupload:1.6.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
commons-fileupload:commons-fileupload:1.6.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
commons-io:commons-io:2.19.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
commons-io:commons-io:2.19.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
io.github.java-diff-utils:java-diff-utils:4.12=kotlinInternalAbiValidation
|
||||||
|
io.opentelemetry:opentelemetry-api:1.41.0=swiftExportClasspathResolvable
|
||||||
|
io.opentelemetry:opentelemetry-context:1.41.0=swiftExportClasspathResolvable
|
||||||
|
net.bytebuddy:byte-buddy:1.17.7=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
net.java.dev.jna:jna:5.14.0=runtimeClasspath,testRuntimeClasspath
|
net.java.dev.jna:jna:5.14.0=runtimeClasspath,testRuntimeClasspath
|
||||||
net.javacrumbs.json-unit:json-unit-core:2.40.1=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
net.javacrumbs.json-unit:json-unit-core:2.40.1=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
net.minidev:accessors-smart:2.5.0=testRuntimeClasspath
|
net.minidev:accessors-smart:2.5.0=testRuntimeClasspath
|
||||||
@@ -49,7 +54,12 @@ org.apache.httpcomponents.client5:httpclient5:5.5=testCompileClasspath,testImple
|
|||||||
org.apache.httpcomponents.core5:httpcore5-h2:5.3.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.apache.httpcomponents.core5:httpcore5-h2:5.3.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.apache.httpcomponents.core5:httpcore5:5.3.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.apache.httpcomponents.core5:httpcore5:5.3.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
||||||
org.assertj:assertj-core:3.27.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.assertj:assertj-core:3.27.6=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.bouncycastle:bcpg-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
|
org.bouncycastle:bcpkix-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
|
org.bouncycastle:bcprov-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
|
org.bouncycastle:bcutil-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
|
org.checkerframework:checker-qual:3.43.0=swiftExportClasspathResolvable
|
||||||
org.eclipse.jetty.http2:http2-common:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.eclipse.jetty.http2:http2-common:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.eclipse.jetty.http2:http2-hpack:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.eclipse.jetty.http2:http2-hpack:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.eclipse.jetty.http2:http2-server:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.eclipse.jetty.http2:http2-server:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
@@ -70,58 +80,63 @@ org.eclipse.jetty:jetty-servlets:11.0.24=testCompileClasspath,testImplementation
|
|||||||
org.eclipse.jetty:jetty-util:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.eclipse.jetty:jetty-util:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.eclipse.jetty:jetty-webapp:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.eclipse.jetty:jetty-webapp:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.eclipse.jetty:jetty-xml:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.eclipse.jetty:jetty-xml:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.fusesource.jansi:jansi:2.4.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.fusesource.jansi:jansi:2.4.2=compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.polyglot:polyglot:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.graalvm.polyglot:polyglot:25.0.0=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.sdk:collections:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.graalvm.sdk:collections:25.0.0=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.sdk:graal-sdk:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,runtimeClasspath,testRuntimeClasspath
|
org.graalvm.sdk:graal-sdk:25.0.0=compileClasspath,compileOnlyDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
org.graalvm.sdk:jniutils:24.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.graalvm.sdk:jniutils:25.0.0=compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.sdk:nativeimage:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.graalvm.sdk:nativeimage:25.0.0=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.sdk:word:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.graalvm.sdk:word:25.0.0=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.truffle:truffle-api:24.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.graalvm.truffle:truffle-api:25.0.0=compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.truffle:truffle-compiler:24.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.graalvm.truffle:truffle-compiler:25.0.0=compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.truffle:truffle-runtime:24.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.graalvm.truffle:truffle-runtime:25.0.0=compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.hamcrest:hamcrest-core:2.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.hamcrest:hamcrest-core:2.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.hamcrest:hamcrest:2.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.hamcrest:hamcrest:2.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:abi-tools-api:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-api:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-impl:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:kotlin-compiler-runner:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:kotlin-daemon-client:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.2.20=kotlinKlibCommonizerClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-metadata-jvm:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-reflect:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-reflect:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-script-runtime:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-common:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-jvm:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,nativeImageClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:swift-export-embeddable:2.2.20=swiftExportClasspathResolvable
|
||||||
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains:markdown-jvm:0.7.3=runtimeClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=swiftExportClasspathResolvable
|
||||||
org.jetbrains:markdown:0.7.3=runtimeClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=swiftExportClasspathResolvable
|
||||||
org.jline:jline-native:3.23.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=swiftExportClasspathResolvable
|
||||||
org.jline:jline-reader:3.23.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,nativeImageClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testRuntimeClasspath
|
||||||
org.jline:jline-terminal-jansi:3.23.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains:markdown-jvm:0.7.3=nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
org.jline:jline-terminal:3.23.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains:markdown:0.7.3=nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
|
org.jline:jline-native:3.23.0=compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.jline:jline-reader:3.23.0=compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.jline:jline-terminal-jansi:3.23.0=compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.jline:jline-terminal:3.23.0=compileClasspath,implementationDependenciesMetadata,nativeImageClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jspecify:jspecify:1.0.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jspecify:jspecify:1.0.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-api:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-api:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-engine:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-engine:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-params:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-params:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-commons:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.platform:junit-platform-commons:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-engine:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.platform:junit-platform-engine:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-launcher:1.13.4=testRuntimeClasspath
|
org.junit.platform:junit-platform-launcher:1.14.0=testRuntimeClasspath
|
||||||
org.junit:junit-bom:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit:junit-bom:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.msgpack:msgpack-core:0.9.8=runtimeClasspath,testRuntimeClasspath
|
org.msgpack:msgpack-core:0.9.8=nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.organicdesign:Paguro:3.10.3=runtimeClasspath,testRuntimeClasspath
|
org.organicdesign:Paguro:3.10.3=nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
org.slf4j:slf4j-api:2.0.17=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.slf4j:slf4j-api:2.0.17=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.snakeyaml:snakeyaml-engine:2.10=runtimeClasspath,testRuntimeClasspath
|
org.snakeyaml:snakeyaml-engine:2.10=nativeImageClasspath,runtimeClasspath,testRuntimeClasspath
|
||||||
org.wiremock:wiremock:3.13.1=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.wiremock:wiremock:3.13.1=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.xmlunit:xmlunit-core:2.10.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.xmlunit:xmlunit-core:2.10.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.xmlunit:xmlunit-legacy:2.10.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.xmlunit:xmlunit-legacy:2.10.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright © 2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package org.pkl.cli
|
|
||||||
|
|
||||||
import java.io.IOException
|
|
||||||
import java.nio.file.Files
|
|
||||||
import java.nio.file.Path
|
|
||||||
import kotlin.io.path.writeText
|
|
||||||
import org.pkl.commons.cli.CliBaseOptions
|
|
||||||
import org.pkl.commons.cli.CliException
|
|
||||||
|
|
||||||
class CliFormatterApply(
|
|
||||||
cliBaseOptions: CliBaseOptions,
|
|
||||||
paths: List<Path>,
|
|
||||||
private val silent: Boolean,
|
|
||||||
) : CliFormatterCommand(cliBaseOptions, paths) {
|
|
||||||
|
|
||||||
override fun doRun() {
|
|
||||||
var status = 0
|
|
||||||
|
|
||||||
for (path in paths()) {
|
|
||||||
val contents = Files.readString(path)
|
|
||||||
val (formatted, stat) = format(path, contents)
|
|
||||||
status = if (status == 0) stat else status
|
|
||||||
if (stat != 0) continue
|
|
||||||
if (!silent && contents != formatted) {
|
|
||||||
consoleWriter.write(path.toAbsolutePath().toString())
|
|
||||||
consoleWriter.appendLine()
|
|
||||||
consoleWriter.flush()
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
path.writeText(formatted, Charsets.UTF_8)
|
|
||||||
} catch (e: IOException) {
|
|
||||||
consoleWriter.write("Could not overwrite `$path`: ${e.message}")
|
|
||||||
consoleWriter.appendLine()
|
|
||||||
consoleWriter.flush()
|
|
||||||
status = 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (status != 0) {
|
|
||||||
throw CliException("Formatting violations found.", status)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright © 2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package org.pkl.cli
|
|
||||||
|
|
||||||
import java.nio.file.Files
|
|
||||||
import java.nio.file.Path
|
|
||||||
import org.pkl.commons.cli.CliBaseOptions
|
|
||||||
import org.pkl.commons.cli.CliException
|
|
||||||
|
|
||||||
class CliFormatterCheck(cliBaseOptions: CliBaseOptions, paths: List<Path>) :
|
|
||||||
CliFormatterCommand(cliBaseOptions, paths) {
|
|
||||||
|
|
||||||
override fun doRun() {
|
|
||||||
var status = 0
|
|
||||||
|
|
||||||
for (path in paths()) {
|
|
||||||
val contents = Files.readString(path)
|
|
||||||
val (formatted, stat) = format(path, contents)
|
|
||||||
status = if (status == 0) stat else status
|
|
||||||
if (contents != formatted) {
|
|
||||||
consoleWriter.write(path.toAbsolutePath().toString())
|
|
||||||
consoleWriter.appendLine()
|
|
||||||
consoleWriter.flush()
|
|
||||||
status = 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (status != 0) {
|
|
||||||
throw CliException("Formatting violations found.", status)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -15,46 +15,139 @@
|
|||||||
*/
|
*/
|
||||||
package org.pkl.cli
|
package org.pkl.cli
|
||||||
|
|
||||||
|
import java.io.IOException
|
||||||
import java.io.Writer
|
import java.io.Writer
|
||||||
|
import java.nio.file.Files
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import kotlin.io.path.ExperimentalPathApi
|
import java.util.stream.Stream
|
||||||
import kotlin.io.path.extension
|
import kotlin.io.path.extension
|
||||||
import kotlin.io.path.isDirectory
|
import kotlin.io.path.isDirectory
|
||||||
import kotlin.io.path.name
|
import kotlin.io.path.name
|
||||||
import kotlin.io.path.walk
|
import kotlin.io.path.writeText
|
||||||
|
import kotlin.math.max
|
||||||
import org.pkl.commons.cli.CliBaseOptions
|
import org.pkl.commons.cli.CliBaseOptions
|
||||||
import org.pkl.commons.cli.CliCommand
|
import org.pkl.commons.cli.CliCommand
|
||||||
|
import org.pkl.commons.cli.CliException
|
||||||
|
import org.pkl.commons.cli.CliTestException
|
||||||
|
import org.pkl.core.util.IoUtils
|
||||||
import org.pkl.formatter.Formatter
|
import org.pkl.formatter.Formatter
|
||||||
|
import org.pkl.formatter.GrammarVersion
|
||||||
import org.pkl.parser.GenericParserError
|
import org.pkl.parser.GenericParserError
|
||||||
|
|
||||||
abstract class CliFormatterCommand
|
class CliFormatterCommand
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
constructor(
|
constructor(
|
||||||
options: CliBaseOptions,
|
private val paths: List<Path>,
|
||||||
protected val paths: List<Path>,
|
private val grammarVersion: GrammarVersion,
|
||||||
protected val consoleWriter: Writer = System.out.writer(),
|
private val overwrite: Boolean,
|
||||||
) : CliCommand(options) {
|
private val diffNameOnly: Boolean,
|
||||||
protected fun format(file: Path, contents: String): Pair<String, Int> {
|
private val silent: Boolean,
|
||||||
try {
|
private val consoleWriter: Writer = System.out.writer(),
|
||||||
return Formatter().format(contents) to 0
|
private val errWriter: Writer = System.err.writer(),
|
||||||
} catch (pe: GenericParserError) {
|
) : CliCommand(CliBaseOptions()) {
|
||||||
consoleWriter.write("Could not format `$file`: $pe")
|
private fun format(contents: String): String {
|
||||||
|
return Formatter().format(contents, grammarVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun writeErr(error: String) {
|
||||||
|
errWriter.write(error)
|
||||||
|
errWriter.appendLine()
|
||||||
|
errWriter.flush()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun write(message: String) {
|
||||||
|
if (silent) return
|
||||||
|
consoleWriter.write(message)
|
||||||
consoleWriter.appendLine()
|
consoleWriter.appendLine()
|
||||||
consoleWriter.flush()
|
consoleWriter.flush()
|
||||||
return "" to 1
|
}
|
||||||
|
|
||||||
|
private fun allPaths(): Stream<Path> {
|
||||||
|
return paths.distinct().stream().flatMap { path ->
|
||||||
|
when {
|
||||||
|
path.toString() == "-" -> Stream.of(path)
|
||||||
|
path.isDirectory() ->
|
||||||
|
Files.walk(path)
|
||||||
|
.filter { it.extension == "pkl" || it.name == "PklProject" }
|
||||||
|
.map { it.normalize() }
|
||||||
|
else -> Stream.of(path.normalize())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalPathApi::class)
|
override fun doRun() {
|
||||||
protected fun paths(): Set<Path> {
|
val status = Status(SUCCESS)
|
||||||
val allPaths = mutableSetOf<Path>()
|
|
||||||
for (path in paths) {
|
handlePaths(status)
|
||||||
if (path.isDirectory()) {
|
|
||||||
allPaths.addAll(path.walk().filter { it.extension == "pkl" || it.name == "PklProject" })
|
when (status.status) {
|
||||||
} else {
|
FORMATTING_VIOLATION -> {
|
||||||
allPaths.add(path)
|
// using CliTestException instead of CliException because we want full control on how to
|
||||||
|
// print errors
|
||||||
|
throw CliTestException("", status.status)
|
||||||
|
}
|
||||||
|
ERROR -> {
|
||||||
|
if (!silent) {
|
||||||
|
writeErr("An error occurred during formatting.")
|
||||||
|
}
|
||||||
|
throw CliTestException("", status.status)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun handlePaths(status: Status) {
|
||||||
|
for (path in allPaths()) {
|
||||||
|
val pathStr = path.toString()
|
||||||
|
try {
|
||||||
|
val contents =
|
||||||
|
when {
|
||||||
|
pathStr == "-" -> IoUtils.readString(System.`in`)
|
||||||
|
else -> Files.readString(path)
|
||||||
|
}
|
||||||
|
if (pathStr == "-" && overwrite) {
|
||||||
|
throw CliException("Cannot write to stdin", ERROR)
|
||||||
|
}
|
||||||
|
|
||||||
|
val formatted = format(contents)
|
||||||
|
if (contents != formatted) {
|
||||||
|
status.update(FORMATTING_VIOLATION)
|
||||||
|
if (diffNameOnly || overwrite) {
|
||||||
|
// if `--diff-name-only` or `-w` is specified, only write file names
|
||||||
|
write(pathStr)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (overwrite) {
|
||||||
|
path.writeText(formatted, Charsets.UTF_8)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!diffNameOnly && !overwrite) {
|
||||||
|
write(formatted)
|
||||||
|
}
|
||||||
|
} catch (pe: GenericParserError) {
|
||||||
|
writeErr("Could not format `$pathStr`: $pe")
|
||||||
|
status.update(ERROR)
|
||||||
|
} catch (e: IOException) {
|
||||||
|
writeErr("IO error while reading `$pathStr`: ${e.message}")
|
||||||
|
status.update(ERROR)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val SUCCESS = 0
|
||||||
|
private const val FORMATTING_VIOLATION = 11
|
||||||
|
private const val ERROR = 1
|
||||||
|
|
||||||
|
private class Status(var status: Int) {
|
||||||
|
fun update(newStatus: Int) {
|
||||||
|
status =
|
||||||
|
when {
|
||||||
|
status == ERROR -> status
|
||||||
|
newStatus == ERROR -> newStatus
|
||||||
|
else -> max(status, newStatus)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return allPaths
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import org.pkl.cli.repl.Repl
|
|||||||
import org.pkl.commons.cli.CliCommand
|
import org.pkl.commons.cli.CliCommand
|
||||||
import org.pkl.core.Loggers
|
import org.pkl.core.Loggers
|
||||||
import org.pkl.core.SecurityManagers
|
import org.pkl.core.SecurityManagers
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode
|
||||||
import org.pkl.core.module.ModuleKeyFactories
|
import org.pkl.core.module.ModuleKeyFactories
|
||||||
import org.pkl.core.module.ModulePathResolver
|
import org.pkl.core.module.ModulePathResolver
|
||||||
import org.pkl.core.repl.ReplServer
|
import org.pkl.core.repl.ReplServer
|
||||||
@@ -68,6 +69,7 @@ internal class CliRepl(private val options: CliEvaluatorOptions) : CliCommand(op
|
|||||||
options.base.normalizedWorkingDir,
|
options.base.normalizedWorkingDir,
|
||||||
stackFrameTransformer,
|
stackFrameTransformer,
|
||||||
options.base.color?.hasColor() ?: false,
|
options.base.color?.hasColor() ?: false,
|
||||||
|
options.base.traceMode ?: TraceMode.COMPACT,
|
||||||
)
|
)
|
||||||
Repl(options.base.normalizedWorkingDir, server).run()
|
Repl(options.base.normalizedWorkingDir, server).run()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,60 +15,85 @@
|
|||||||
*/
|
*/
|
||||||
package org.pkl.cli.commands
|
package org.pkl.cli.commands
|
||||||
|
|
||||||
|
import com.github.ajalt.clikt.core.CliktCommand
|
||||||
import com.github.ajalt.clikt.core.Context
|
import com.github.ajalt.clikt.core.Context
|
||||||
import com.github.ajalt.clikt.core.NoOpCliktCommand
|
|
||||||
import com.github.ajalt.clikt.core.subcommands
|
|
||||||
import com.github.ajalt.clikt.parameters.arguments.argument
|
import com.github.ajalt.clikt.parameters.arguments.argument
|
||||||
import com.github.ajalt.clikt.parameters.arguments.multiple
|
import com.github.ajalt.clikt.parameters.arguments.multiple
|
||||||
|
import com.github.ajalt.clikt.parameters.options.default
|
||||||
import com.github.ajalt.clikt.parameters.options.flag
|
import com.github.ajalt.clikt.parameters.options.flag
|
||||||
import com.github.ajalt.clikt.parameters.options.option
|
import com.github.ajalt.clikt.parameters.options.option
|
||||||
|
import com.github.ajalt.clikt.parameters.types.enum
|
||||||
import com.github.ajalt.clikt.parameters.types.path
|
import com.github.ajalt.clikt.parameters.types.path
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import org.pkl.cli.CliFormatterApply
|
import org.pkl.cli.CliFormatterCommand
|
||||||
import org.pkl.cli.CliFormatterCheck
|
import org.pkl.formatter.GrammarVersion
|
||||||
import org.pkl.commons.cli.commands.BaseCommand
|
|
||||||
|
|
||||||
class FormatterCommand : NoOpCliktCommand(name = "format") {
|
class FormatterCommand : CliktCommand(name = "format") {
|
||||||
override fun help(context: Context) = "Run commands related to formatting"
|
override fun help(context: Context) =
|
||||||
|
"""
|
||||||
|
Format or check formatting of Pkl files.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
```
|
||||||
|
# Overwrite all Pkl files inside `my/folder/`, recursively.
|
||||||
|
$ pkl format -w my/folder/
|
||||||
|
|
||||||
|
# Check formatting of all files, printing filenames with formatting violations to stdout.
|
||||||
|
# Exit with exit code `11` if formatting violations were found.
|
||||||
|
$ pkl format --diff-name-only my/folder/
|
||||||
|
|
||||||
|
# Format Pkl code from stdin.
|
||||||
|
$ echo "foo = 1" | pkl format -
|
||||||
|
```
|
||||||
|
"""
|
||||||
|
.trimIndent()
|
||||||
|
|
||||||
override fun helpEpilog(context: Context) = "For more information, visit $helpLink"
|
override fun helpEpilog(context: Context) = "For more information, visit $helpLink"
|
||||||
|
|
||||||
init {
|
|
||||||
subcommands(FormatterCheckCommand(), FormatterApplyCommand())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class FormatterCheckCommand : BaseCommand(name = "check", helpLink = helpLink) {
|
|
||||||
override val helpString: String =
|
|
||||||
"Check if the given files are properly formatted, printing the file name to stdout in case they are not. Returns non-zero in case of failure."
|
|
||||||
|
|
||||||
val paths: List<Path> by
|
val paths: List<Path> by
|
||||||
argument(name = "paths", help = "Files or directory to check.")
|
argument(name = "paths", help = "Files or directory to check. Use `-` to read from stdin.")
|
||||||
.path(mustExist = true, canBeDir = true)
|
.path(mustExist = false, canBeDir = true)
|
||||||
.multiple()
|
.multiple()
|
||||||
|
|
||||||
override fun run() {
|
val grammarVersion: GrammarVersion by
|
||||||
CliFormatterCheck(baseOptions.baseOptions(emptyList()), paths).run()
|
option(
|
||||||
}
|
names = arrayOf("--grammar-version"),
|
||||||
}
|
help =
|
||||||
|
"""
|
||||||
|
The grammar compatibility version to use.$NEWLINE
|
||||||
|
${GrammarVersion.entries.joinToString("$NEWLINE", prefix = " ") {
|
||||||
|
val default = if (it == GrammarVersion.latest()) " `(default)`" else ""
|
||||||
|
"`${it.version}`: ${it.versionSpan}$default"
|
||||||
|
}}
|
||||||
|
"""
|
||||||
|
.trimIndent(),
|
||||||
|
)
|
||||||
|
.enum<GrammarVersion> { "${it.version}" }
|
||||||
|
.default(GrammarVersion.latest())
|
||||||
|
|
||||||
class FormatterApplyCommand : BaseCommand(name = "apply", helpLink = helpLink) {
|
val overwrite: Boolean by
|
||||||
override val helpString: String =
|
option(
|
||||||
"Overwrite all the files in place with the formatted version. Returns non-zero in case of failure."
|
names = arrayOf("-w", "--write"),
|
||||||
|
help = "Format files in place, overwriting them. Implies `---diff-name-only`.",
|
||||||
|
)
|
||||||
|
.flag(default = false)
|
||||||
|
|
||||||
val paths: List<Path> by
|
val diffNameOnly: Boolean by
|
||||||
argument(name = "paths", help = "Files or directory to format.")
|
option(
|
||||||
.path(mustExist = true, canBeDir = true)
|
names = arrayOf("--diff-name-only"),
|
||||||
.multiple()
|
help = "Write the path of files with formatting violations to stdout.",
|
||||||
|
)
|
||||||
|
.flag(default = false)
|
||||||
|
|
||||||
val silent: Boolean by
|
val silent: Boolean by
|
||||||
option(
|
option(
|
||||||
names = arrayOf("-s", "--silent"),
|
names = arrayOf("-s", "--silent"),
|
||||||
help = "Do not write the name of the files that failed formatting to stdout.",
|
help = "Don't write to stdout or stderr. Mutually exclusive with `--diff-name-only`.",
|
||||||
)
|
)
|
||||||
.flag()
|
.flag(default = false)
|
||||||
|
|
||||||
override fun run() {
|
override fun run() {
|
||||||
CliFormatterApply(baseOptions.baseOptions(emptyList()), paths, silent).run()
|
CliFormatterCommand(paths, grammarVersion, overwrite, diffNameOnly, silent).run()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,8 +33,6 @@ import org.pkl.commons.cli.commands.BaseCommand
|
|||||||
import org.pkl.commons.cli.commands.TestOptions
|
import org.pkl.commons.cli.commands.TestOptions
|
||||||
import org.pkl.commons.cli.commands.single
|
import org.pkl.commons.cli.commands.single
|
||||||
|
|
||||||
private const val NEWLINE = '\u0085'
|
|
||||||
|
|
||||||
class ProjectCommand : NoOpCliktCommand(name = "project") {
|
class ProjectCommand : NoOpCliktCommand(name = "project") {
|
||||||
override fun help(context: Context) = "Run commands related to projects"
|
override fun help(context: Context) = "Run commands related to projects"
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.pkl.cli.commands
|
||||||
|
|
||||||
|
internal const val NEWLINE = '\u0085'
|
||||||
@@ -21,6 +21,7 @@ import org.pkl.commons.toPath
|
|||||||
import org.pkl.core.Loggers
|
import org.pkl.core.Loggers
|
||||||
import org.pkl.core.SecurityManagers
|
import org.pkl.core.SecurityManagers
|
||||||
import org.pkl.core.StackFrameTransformers
|
import org.pkl.core.StackFrameTransformers
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode
|
||||||
import org.pkl.core.http.HttpClient
|
import org.pkl.core.http.HttpClient
|
||||||
import org.pkl.core.module.ModuleKeyFactories
|
import org.pkl.core.module.ModuleKeyFactories
|
||||||
import org.pkl.core.repl.ReplRequest
|
import org.pkl.core.repl.ReplRequest
|
||||||
@@ -43,6 +44,7 @@ class ReplMessagesTest {
|
|||||||
"/".toPath(),
|
"/".toPath(),
|
||||||
StackFrameTransformers.defaultTransformer,
|
StackFrameTransformers.defaultTransformer,
|
||||||
false,
|
false,
|
||||||
|
TraceMode.COMPACT,
|
||||||
)
|
)
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -21,48 +21,63 @@ com.github.ajalt.mordant:mordant-jvm:3.0.1=compileClasspath,runtimeClasspath,tes
|
|||||||
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-markdown:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-markdown:3.0.1=runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant:3.0.1=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant:3.0.1=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
com.github.ben-manes.caffeine:caffeine:2.9.3=swiftExportClasspathResolvable
|
||||||
|
com.google.errorprone:error_prone_annotations:2.28.0=swiftExportClasspathResolvable
|
||||||
com.palantir.javapoet:javapoet:0.7.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.palantir.javapoet:javapoet:0.7.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
io.github.java-diff-utils:java-diff-utils:4.12=kotlinInternalAbiValidation
|
||||||
io.leangen.geantyref:geantyref:1.3.16=testRuntimeClasspath
|
io.leangen.geantyref:geantyref:1.3.16=testRuntimeClasspath
|
||||||
net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
io.opentelemetry:opentelemetry-api:1.41.0=swiftExportClasspathResolvable
|
||||||
|
io.opentelemetry:opentelemetry-context:1.41.0=swiftExportClasspathResolvable
|
||||||
|
net.bytebuddy:byte-buddy:1.17.7=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
net.java.dev.jna:jna:5.14.0=runtimeClasspath,testRuntimeClasspath
|
net.java.dev.jna:jna:5.14.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
||||||
org.assertj:assertj-core:3.27.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.assertj:assertj-core:3.27.6=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.polyglot:polyglot:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcpg-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:collections:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcpkix-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:graal-sdk:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcprov-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:nativeimage:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcutil-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:word:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.checkerframework:checker-qual:3.43.0=swiftExportClasspathResolvable
|
||||||
org.graalvm.truffle:truffle-api:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.graalvm.polyglot:polyglot:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.sdk:collections:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:graal-sdk:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:nativeimage:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:word:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.truffle:truffle-api:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools-api:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-api:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-impl:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-runner:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-client:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.2.20=kotlinKlibCommonizerClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-metadata-jvm:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-reflect:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-reflect:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-script-runtime:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-common:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-jvm:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:swift-export-embeddable:2.2.20=swiftExportClasspathResolvable
|
||||||
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testRuntimeClasspath
|
||||||
org.jetbrains:markdown-jvm:0.7.3=runtimeClasspath,testRuntimeClasspath
|
org.jetbrains:markdown-jvm:0.7.3=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains:markdown:0.7.3=runtimeClasspath,testRuntimeClasspath
|
org.jetbrains:markdown:0.7.3=runtimeClasspath,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-api:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-api:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-engine:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-engine:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-params:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-params:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-commons:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.platform:junit-platform-commons:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-engine:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.platform:junit-platform-engine:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-launcher:1.13.4=testRuntimeClasspath
|
org.junit.platform:junit-platform-launcher:1.14.0=testRuntimeClasspath
|
||||||
org.junit:junit-bom:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit:junit-bom:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.msgpack:msgpack-core:0.9.8=runtimeClasspath,testRuntimeClasspath
|
org.msgpack:msgpack-core:0.9.8=runtimeClasspath,testRuntimeClasspath
|
||||||
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.organicdesign:Paguro:3.10.3=runtimeClasspath,testRuntimeClasspath
|
org.organicdesign:Paguro:3.10.3=runtimeClasspath,testRuntimeClasspath
|
||||||
|
|||||||
@@ -21,50 +21,64 @@ com.github.ajalt.mordant:mordant-jvm:3.0.1=compileClasspath,runtimeClasspath,tes
|
|||||||
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-markdown:3.0.1=runtimeClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-markdown:3.0.1=runtimeClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant:3.0.1=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant:3.0.1=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
com.github.ben-manes.caffeine:caffeine:2.9.3=swiftExportClasspathResolvable
|
||||||
|
com.google.errorprone:error_prone_annotations:2.28.0=swiftExportClasspathResolvable
|
||||||
com.squareup:kotlinpoet:1.6.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.squareup:kotlinpoet:1.6.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
io.leangen.geantyref:geantyref:1.3.16=testRuntimeClasspath
|
io.github.java-diff-utils:java-diff-utils:4.12=kotlinInternalAbiValidation
|
||||||
net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
io.opentelemetry:opentelemetry-api:1.41.0=swiftExportClasspathResolvable
|
||||||
|
io.opentelemetry:opentelemetry-context:1.41.0=swiftExportClasspathResolvable
|
||||||
|
net.bytebuddy:byte-buddy:1.17.7=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
net.java.dev.jna:jna:5.14.0=runtimeClasspath,testRuntimeClasspath
|
net.java.dev.jna:jna:5.14.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
||||||
org.assertj:assertj-core:3.27.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.assertj:assertj-core:3.27.6=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.polyglot:polyglot:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcpg-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:collections:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcpkix-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:graal-sdk:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcprov-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:nativeimage:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcutil-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:word:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.checkerframework:checker-qual:3.43.0=swiftExportClasspathResolvable
|
||||||
org.graalvm.truffle:truffle-api:24.1.2=runtimeClasspath,testRuntimeClasspath
|
org.graalvm.polyglot:polyglot:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testRuntimeClasspath
|
org.graalvm.sdk:collections:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:graal-sdk:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:nativeimage:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:word:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testRuntimeClasspath
|
org.graalvm.truffle:truffle-api:25.0.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools-api:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-api:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-impl:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable,testRuntimeClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-runner:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-client:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable,testRuntimeClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.2.20=kotlinKlibCommonizerClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-metadata-jvm:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-reflect:2.2.20=compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-script-runtime:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-scripting-common:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jsr223:2.0.21=testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-scripting-jsr223:2.2.20=testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm-host:2.0.21=testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-scripting-jvm-host:2.2.20=testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-scripting-jvm:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testRuntimeClasspath
|
org.jetbrains.kotlin:swift-export-embeddable:2.2.20=swiftExportClasspathResolvable
|
||||||
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable,testRuntimeClasspath
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testRuntimeClasspath
|
||||||
org.jetbrains:markdown-jvm:0.7.3=runtimeClasspath,testRuntimeClasspath
|
org.jetbrains:markdown-jvm:0.7.3=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains:markdown:0.7.3=runtimeClasspath,testRuntimeClasspath
|
org.jetbrains:markdown:0.7.3=runtimeClasspath,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-api:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-api:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-engine:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-engine:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-params:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-params:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-commons:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.platform:junit-platform-commons:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-engine:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.platform:junit-platform-engine:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-launcher:1.13.4=testRuntimeClasspath
|
org.junit.platform:junit-platform-launcher:1.14.0=testRuntimeClasspath
|
||||||
org.junit:junit-bom:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit:junit-bom:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.msgpack:msgpack-core:0.9.8=runtimeClasspath,testRuntimeClasspath
|
org.msgpack:msgpack-core:0.9.8=runtimeClasspath,testRuntimeClasspath
|
||||||
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.organicdesign:Paguro:3.10.3=runtimeClasspath,testRuntimeClasspath
|
org.organicdesign:Paguro:3.10.3=runtimeClasspath,testRuntimeClasspath
|
||||||
|
|||||||
@@ -21,55 +21,74 @@ com.github.ajalt.mordant:mordant-jvm:3.0.1=compileClasspath,runtimeClasspath,tes
|
|||||||
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant-markdown:3.0.1=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant-markdown:3.0.1=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
com.github.ajalt.mordant:mordant:3.0.1=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ajalt.mordant:mordant:3.0.1=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ben-manes.caffeine:caffeine:2.9.3=swiftExportClasspathResolvable
|
||||||
|
com.google.errorprone:error_prone_annotations:2.28.0=swiftExportClasspathResolvable
|
||||||
|
io.github.java-diff-utils:java-diff-utils:4.12=kotlinInternalAbiValidation
|
||||||
|
io.opentelemetry:opentelemetry-api:1.41.0=swiftExportClasspathResolvable
|
||||||
|
io.opentelemetry:opentelemetry-context:1.41.0=swiftExportClasspathResolvable
|
||||||
|
net.bytebuddy:byte-buddy:1.17.7=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
net.java.dev.jna:jna:5.14.0=runtimeClasspath,testRuntimeClasspath
|
net.java.dev.jna:jna:5.14.0=runtimeClasspath,testRuntimeClasspath
|
||||||
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
||||||
org.assertj:assertj-core:3.27.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.assertj:assertj-core:3.27.6=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.compiler:compiler:24.1.2=svmClasspath
|
org.bouncycastle:bcpg-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.nativeimage:native-image-base:24.1.2=svmClasspath
|
org.bouncycastle:bcpkix-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.nativeimage:objectfile:24.1.2=svmClasspath
|
org.bouncycastle:bcprov-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.nativeimage:pointsto:24.1.2=svmClasspath
|
org.bouncycastle:bcutil-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.nativeimage:svm:24.1.2=svmClasspath
|
org.checkerframework:checker-qual:3.43.0=swiftExportClasspathResolvable
|
||||||
org.graalvm.nativeimage:truffle-runtime-svm:24.1.2=svmClasspath
|
org.graalvm.compiler:compiler:25.0.0=svmClasspath
|
||||||
org.graalvm.polyglot:polyglot:24.1.2=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
org.graalvm.espresso:espresso-svm:25.0.0=svmClasspath
|
||||||
org.graalvm.sdk:collections:24.1.2=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
org.graalvm.nativeimage:native-image-base:25.0.0=svmClasspath
|
||||||
org.graalvm.sdk:graal-sdk:24.1.2=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
org.graalvm.nativeimage:objectfile:25.0.0=svmClasspath
|
||||||
org.graalvm.sdk:jniutils:24.1.2=svmClasspath
|
org.graalvm.nativeimage:pointsto:25.0.0=svmClasspath
|
||||||
org.graalvm.sdk:nativeimage:24.1.2=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
org.graalvm.nativeimage:svm-capnproto-runtime:25.0.0=svmClasspath
|
||||||
org.graalvm.sdk:word:24.1.2=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
org.graalvm.nativeimage:svm-configure:25.0.0=svmClasspath
|
||||||
org.graalvm.truffle:truffle-api:24.1.2=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
org.graalvm.nativeimage:svm:25.0.0=svmClasspath
|
||||||
org.graalvm.truffle:truffle-compiler:24.1.2=svmClasspath
|
org.graalvm.nativeimage:truffle-runtime-svm:25.0.0=svmClasspath
|
||||||
org.graalvm.truffle:truffle-runtime:24.1.2=svmClasspath
|
org.graalvm.polyglot:polyglot:25.0.0=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.sdk:collections:25.0.0=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:graal-sdk:25.0.0=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:jniutils:25.0.0=svmClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:nativeimage-libgraal:25.0.0=svmClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.sdk:nativeimage:25.0.0=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:word:25.0.0=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.truffle:truffle-api:25.0.0=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.truffle:truffle-compiler:25.0.0=svmClasspath
|
||||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath
|
org.graalvm.truffle:truffle-runtime:25.0.0=svmClasspath
|
||||||
|
org.jetbrains.kotlin:abi-tools-api:2.2.20=kotlinInternalAbiValidation
|
||||||
|
org.jetbrains.kotlin:abi-tools:2.2.20=kotlinInternalAbiValidation
|
||||||
|
org.jetbrains.kotlin:kotlin-build-tools-api:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-build-tools-impl:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-runner:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-client:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.2.20=kotlinKlibCommonizerClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-metadata-jvm:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-reflect:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-reflect:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-script-runtime:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-common:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-jvm:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:swift-export-embeddable:2.2.20=swiftExportClasspathResolvable
|
||||||
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathSvm,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testRuntimeClasspath
|
||||||
org.jetbrains:markdown-jvm:0.7.3=runtimeClasspath,testRuntimeClasspath
|
org.jetbrains:markdown-jvm:0.7.3=runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains:markdown:0.7.3=implementationDependenciesMetadata,runtimeClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains:markdown:0.7.3=implementationDependenciesMetadata,runtimeClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-api:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-api:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-engine:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-engine:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-params:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-params:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-commons:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.platform:junit-platform-commons:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-engine:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.platform:junit-platform-engine:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-launcher:1.13.4=testRuntimeClasspath
|
org.junit.platform:junit-platform-launcher:1.14.0=testRuntimeClasspath
|
||||||
org.junit:junit-bom:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit:junit-bom:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.msgpack:msgpack-core:0.9.8=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
org.msgpack:msgpack-core:0.9.8=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
||||||
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.organicdesign:Paguro:3.10.3=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
org.organicdesign:Paguro:3.10.3=runtimeClasspath,svmClasspath,testRuntimeClasspath
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import java.time.Duration
|
|||||||
import java.util.regex.Pattern
|
import java.util.regex.Pattern
|
||||||
import org.pkl.core.evaluatorSettings.Color
|
import org.pkl.core.evaluatorSettings.Color
|
||||||
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings.ExternalReader
|
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings.ExternalReader
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode
|
||||||
import org.pkl.core.module.ProjectDependenciesManager
|
import org.pkl.core.module.ProjectDependenciesManager
|
||||||
import org.pkl.core.util.IoUtils
|
import org.pkl.core.util.IoUtils
|
||||||
|
|
||||||
@@ -148,6 +149,9 @@ data class CliBaseOptions(
|
|||||||
|
|
||||||
/** External resource reader process specs */
|
/** External resource reader process specs */
|
||||||
val externalResourceReaders: Map<String, ExternalReader> = mapOf(),
|
val externalResourceReaders: Map<String, ExternalReader> = mapOf(),
|
||||||
|
|
||||||
|
/** Defines options for the formatting of calls to the trace() method. */
|
||||||
|
val traceMode: TraceMode? = null,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import java.util.regex.Pattern
|
|||||||
import kotlin.io.path.isRegularFile
|
import kotlin.io.path.isRegularFile
|
||||||
import org.pkl.core.*
|
import org.pkl.core.*
|
||||||
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings
|
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode
|
||||||
import org.pkl.core.externalreader.ExternalReaderProcess
|
import org.pkl.core.externalreader.ExternalReaderProcess
|
||||||
import org.pkl.core.http.HttpClient
|
import org.pkl.core.http.HttpClient
|
||||||
import org.pkl.core.module.ModuleKeyFactories
|
import org.pkl.core.module.ModuleKeyFactories
|
||||||
@@ -205,6 +206,10 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val traceMode: TraceMode by lazy {
|
||||||
|
cliOptions.traceMode ?: project?.evaluatorSettings?.traceMode ?: TraceMode.COMPACT
|
||||||
|
}
|
||||||
|
|
||||||
private fun HttpClient.Builder.addDefaultCliCertificates() {
|
private fun HttpClient.Builder.addDefaultCliCertificates() {
|
||||||
val caCertsDir = IoUtils.getPklHomeDir().resolve("cacerts")
|
val caCertsDir = IoUtils.getPklHomeDir().resolve("cacerts")
|
||||||
var certsAdded = false
|
var certsAdded = false
|
||||||
@@ -302,5 +307,6 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
|
|||||||
.setLogger(Loggers.stdErr())
|
.setLogger(Loggers.stdErr())
|
||||||
.setTimeout(cliOptions.timeout)
|
.setTimeout(cliOptions.timeout)
|
||||||
.setModuleCacheDir(moduleCacheDir)
|
.setModuleCacheDir(moduleCacheDir)
|
||||||
|
.setTraceMode(traceMode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,9 +26,13 @@ open class CliException(
|
|||||||
*/
|
*/
|
||||||
message: String,
|
message: String,
|
||||||
|
|
||||||
|
/** The cause */
|
||||||
|
cause: Throwable?,
|
||||||
|
|
||||||
/** The process exit code to use. */
|
/** The process exit code to use. */
|
||||||
val exitCode: Int = 1,
|
val exitCode: Int = 1,
|
||||||
) : RuntimeException(message) {
|
) : RuntimeException(message, cause) {
|
||||||
|
constructor(message: String, exitCode: Int = 1) : this(message, null, exitCode)
|
||||||
|
|
||||||
override fun toString(): String = message!!
|
override fun toString(): String = message!!
|
||||||
}
|
}
|
||||||
@@ -41,7 +45,11 @@ class CliBugException(
|
|||||||
/** The process exit code to use. */
|
/** The process exit code to use. */
|
||||||
exitCode: Int = 1,
|
exitCode: Int = 1,
|
||||||
) :
|
) :
|
||||||
CliException("An unexpected error has occurred. Would you mind filing a bug report?", exitCode) {
|
CliException(
|
||||||
|
"An unexpected error has occurred. Would you mind filing a bug report?",
|
||||||
|
theCause,
|
||||||
|
exitCode,
|
||||||
|
) {
|
||||||
|
|
||||||
override fun toString(): String = "$message\n\n${theCause.printStackTraceToString()}"
|
override fun toString(): String = "$message\n\n${theCause.printStackTraceToString()}"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import org.pkl.commons.cli.CliException
|
|||||||
import org.pkl.commons.shlex
|
import org.pkl.commons.shlex
|
||||||
import org.pkl.core.evaluatorSettings.Color
|
import org.pkl.core.evaluatorSettings.Color
|
||||||
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings.ExternalReader
|
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings.ExternalReader
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode
|
||||||
import org.pkl.core.runtime.VmUtils
|
import org.pkl.core.runtime.VmUtils
|
||||||
import org.pkl.core.util.IoUtils
|
import org.pkl.core.util.IoUtils
|
||||||
|
|
||||||
@@ -294,6 +295,16 @@ class BaseOptions : OptionGroup() {
|
|||||||
.multiple()
|
.multiple()
|
||||||
.toMap()
|
.toMap()
|
||||||
|
|
||||||
|
val traceMode: TraceMode? by
|
||||||
|
option(
|
||||||
|
names = arrayOf("--trace-mode"),
|
||||||
|
metavar = "style",
|
||||||
|
help =
|
||||||
|
"Specifies how calls to trace() are formatted. Possible values of <style> are 'compact' and 'pretty'.",
|
||||||
|
)
|
||||||
|
.enum<TraceMode> { it.name.lowercase() }
|
||||||
|
.single()
|
||||||
|
|
||||||
// hidden option used by native tests
|
// hidden option used by native tests
|
||||||
private val testPort: Int by
|
private val testPort: Int by
|
||||||
option(names = arrayOf("--test-port"), help = "Internal test option", hidden = true)
|
option(names = arrayOf("--test-port"), help = "Internal test option", hidden = true)
|
||||||
@@ -331,6 +342,7 @@ class BaseOptions : OptionGroup() {
|
|||||||
httpRewrites = httpRewrites.ifEmpty { null },
|
httpRewrites = httpRewrites.ifEmpty { null },
|
||||||
externalModuleReaders = externalModuleReaders,
|
externalModuleReaders = externalModuleReaders,
|
||||||
externalResourceReaders = externalResourceReaders,
|
externalResourceReaders = externalResourceReaders,
|
||||||
|
traceMode = traceMode,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,36 +1,52 @@
|
|||||||
# This is a Gradle generated file for dependency locking.
|
# This is a Gradle generated file for dependency locking.
|
||||||
# Manual edits can break the build and are not advised.
|
# Manual edits can break the build and are not advised.
|
||||||
# This file is expected to be part of source control.
|
# This file is expected to be part of source control.
|
||||||
net.bytebuddy:byte-buddy:1.15.11=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ben-manes.caffeine:caffeine:2.9.3=swiftExportClasspathResolvable
|
||||||
|
com.google.errorprone:error_prone_annotations:2.28.0=swiftExportClasspathResolvable
|
||||||
|
io.github.java-diff-utils:java-diff-utils:4.12=kotlinInternalAbiValidation
|
||||||
|
io.opentelemetry:opentelemetry-api:1.41.0=swiftExportClasspathResolvable
|
||||||
|
io.opentelemetry:opentelemetry-context:1.41.0=swiftExportClasspathResolvable
|
||||||
|
net.bytebuddy:byte-buddy:1.17.7=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.apiguardian:apiguardian-api:1.1.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata
|
org.apiguardian:apiguardian-api:1.1.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata
|
||||||
org.assertj:assertj-core:3.27.4=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.assertj:assertj-core:3.27.6=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.bouncycastle:bcpg-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath
|
org.bouncycastle:bcpkix-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath
|
org.bouncycastle:bcprov-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath
|
org.bouncycastle:bcutil-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.checkerframework:checker-qual:3.43.0=swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools-api:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-api:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-impl:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-runner:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-client:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.2.20=kotlinKlibCommonizerClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-metadata-jvm:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-reflect:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-reflect:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-script-runtime:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-common:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-jvm:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:swift-export-embeddable:2.2.20=swiftExportClasspathResolvable
|
||||||
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-api:5.13.4=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-engine:5.13.4=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-params:5.13.4=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.platform:junit-platform-commons:1.13.4=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-engine:1.13.4=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-api:5.14.0=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-launcher:1.13.4=testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-engine:5.14.0=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit:junit-bom:5.13.4=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-params:5.14.0=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-commons:1.14.0=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-engine:1.14.0=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-launcher:1.14.0=testRuntimeClasspath
|
||||||
|
org.junit:junit-bom:5.14.0=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.msgpack:msgpack-core:0.9.8=compileClasspath
|
||||||
org.opentest4j:opentest4j:1.3.0=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.opentest4j:opentest4j:1.3.0=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDefExtensions,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDefExtensions
|
empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDefExtensions,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDefExtensions
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ dependencies {
|
|||||||
api(libs.junitParams)
|
api(libs.junitParams)
|
||||||
api(projects.pklCommons) // for convenience
|
api(projects.pklCommons) // for convenience
|
||||||
implementation(libs.assertj)
|
implementation(libs.assertj)
|
||||||
|
implementation(libs.msgpack)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"name": "birds",
|
||||||
|
"packageUri": "package://localhost:0/birds@0.6.0",
|
||||||
|
"packageZipUrl": "https://localhost:0/birds@0.6.0/birds@0.6.0.zip",
|
||||||
|
"dependencies": {
|
||||||
|
"fruities": {
|
||||||
|
"uri": "package://localhost:0/fruit@1.1.0",
|
||||||
|
"checksums": {
|
||||||
|
"sha256": "8d982761d182f2185e4180c82190791d9a60c721cb3393bb2e946fab90131e8c"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "0.6.0",
|
||||||
|
"packageZipChecksums": {
|
||||||
|
"sha256": "$computedChecksum"
|
||||||
|
},
|
||||||
|
"sourceCodeUrlScheme": "https://example.com/birds/v0.6.0/blob%{path}#L%{line}-L%{endLine}",
|
||||||
|
"sourceCode": "https://example.com/birds",
|
||||||
|
"documentation": "https://example.com/bird-docs",
|
||||||
|
"license": "UNLICENSED",
|
||||||
|
"authors": [
|
||||||
|
"petey-bird@example.com",
|
||||||
|
"polly-bird@example.com"
|
||||||
|
],
|
||||||
|
"issueTracker": "https://example.com/birds/issues"
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
open module birds.Bird
|
||||||
|
|
||||||
|
import "@fruities/Fruit.pkl"
|
||||||
|
|
||||||
|
name: String
|
||||||
|
|
||||||
|
favoriteFruit: Fruit
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
module birds.allFruit
|
||||||
|
|
||||||
|
fruit = import*("@fruities/catalog/*.pkl")
|
||||||
|
fruitFiles = read*("@fruities/catalog/*.pkl")
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
module birds.catalog
|
||||||
|
|
||||||
|
catalog = import*("catalog/*.pkl")
|
||||||
|
catalogFiles = read*("catalog/*.pkl")
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
amends "../Bird.pkl"
|
||||||
|
|
||||||
|
name = "Ostrich"
|
||||||
|
|
||||||
|
favoriteFruit {
|
||||||
|
name = "Orange"
|
||||||
|
}
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
amends "../Bird.pkl"
|
||||||
|
|
||||||
|
import "@fruities/catalog/apple.pkl"
|
||||||
|
|
||||||
|
name = "Swallow"
|
||||||
|
|
||||||
|
favoriteFruit = apple
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
amends "..."
|
||||||
|
|
||||||
|
name = "Bird"
|
||||||
|
|
||||||
|
favoriteFruit {
|
||||||
|
name = "Fruit"
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"name": "birds",
|
||||||
|
"packageUri": "package://localhost:0/birds@0.7.0",
|
||||||
|
"packageZipUrl": "https://localhost:0/birds@0.7.0/birds@0.7.0.zip",
|
||||||
|
"dependencies": {
|
||||||
|
"fruities": {
|
||||||
|
"uri": "package://localhost:0/fruit@1.1.0",
|
||||||
|
"checksums": {
|
||||||
|
"sha256": "8d982761d182f2185e4180c82190791d9a60c721cb3393bb2e946fab90131e8c"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "0.7.0",
|
||||||
|
"packageZipChecksums": {
|
||||||
|
"sha256": "$computedChecksum"
|
||||||
|
},
|
||||||
|
"sourceCodeUrlScheme": "https://example.com/birds/v0.7.0/blob%{path}#L%{line}-L%{endLine}",
|
||||||
|
"sourceCode": "https://example.com/birds",
|
||||||
|
"documentation": "https://example.com/bird-docs",
|
||||||
|
"license": "UNLICENSED",
|
||||||
|
"authors": [
|
||||||
|
"petey-bird@example.com",
|
||||||
|
"polly-bird@example.com"
|
||||||
|
],
|
||||||
|
"issueTracker": "https://example.com/birds/issues"
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
open module birds.Bird
|
||||||
|
|
||||||
|
import "@fruities/Fruit.pkl"
|
||||||
|
|
||||||
|
name: String
|
||||||
|
|
||||||
|
favoriteFruit: Fruit
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
module birds.allFruit
|
||||||
|
|
||||||
|
fruit = import*("@fruities/catalog/*.pkl")
|
||||||
|
fruitFiles = read*("@fruities/catalog/*.pkl")
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
module birds.catalog
|
||||||
|
|
||||||
|
catalog = import*("catalog/*.pkl")
|
||||||
|
catalogFiles = read*("catalog/*.pkl")
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
amends "../Bird.pkl"
|
||||||
|
|
||||||
|
name = "Ostrich"
|
||||||
|
|
||||||
|
favoriteFruit {
|
||||||
|
name = "Orange"
|
||||||
|
}
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
amends "../Bird.pkl"
|
||||||
|
|
||||||
|
import "@fruities/catalog/apple.pkl"
|
||||||
|
|
||||||
|
name = "Swallow"
|
||||||
|
|
||||||
|
favoriteFruit = apple
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
amends "..."
|
||||||
|
|
||||||
|
name = "Bird"
|
||||||
|
|
||||||
|
favoriteFruit {
|
||||||
|
name = "Fruit"
|
||||||
|
}
|
||||||
@@ -111,7 +111,10 @@ data class SnippetOutcome(val expectedOutFile: Path, val actual: String, val suc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun failWithDiff(message: String): Nothing =
|
private fun failWithDiff(message: String): Nothing = failWithDiff(message, expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun failWithDiff(message: String, expected: String, actual: String): Nothing =
|
||||||
if (System.getProperty("sun.java.command", "").contains("intellij")) {
|
if (System.getProperty("sun.java.command", "").contains("intellij")) {
|
||||||
// IntelliJ only shows diffs for AssertionFailedError
|
// IntelliJ only shows diffs for AssertionFailedError
|
||||||
throw AssertionFailedError(message, expected, actual)
|
throw AssertionFailedError(message, expected, actual)
|
||||||
@@ -119,4 +122,3 @@ data class SnippetOutcome(val expectedOutFile: Path, val actual: String, val suc
|
|||||||
// Gradle test logging/report only shows diffs for PklAssertionFailedError
|
// Gradle test logging/report only shows diffs for PklAssertionFailedError
|
||||||
throw PklAssertionFailedError(message, expected, actual)
|
throw PklAssertionFailedError(message, expected, actual)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
+84
-10
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -13,13 +13,12 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.pkl.server
|
package org.pkl.commons.test
|
||||||
|
|
||||||
import java.lang.IllegalStateException
|
import java.util.*
|
||||||
import org.msgpack.core.MessagePack
|
import org.msgpack.core.MessagePack
|
||||||
import org.msgpack.core.MessageUnpacker
|
import org.msgpack.core.MessageUnpacker
|
||||||
import org.msgpack.value.ValueType
|
import org.msgpack.value.ValueType
|
||||||
import org.pkl.core.util.yaml.YamlEmitter
|
|
||||||
|
|
||||||
/** Renders MessagePack structures in YAML. */
|
/** Renders MessagePack structures in YAML. */
|
||||||
class MessagePackDebugRenderer(bytes: ByteArray) {
|
class MessagePackDebugRenderer(bytes: ByteArray) {
|
||||||
@@ -27,7 +26,6 @@ class MessagePackDebugRenderer(bytes: ByteArray) {
|
|||||||
private val currIndent = StringBuilder("")
|
private val currIndent = StringBuilder("")
|
||||||
private val sb = StringBuilder()
|
private val sb = StringBuilder()
|
||||||
private val indent = " "
|
private val indent = " "
|
||||||
private val yamlEmitter = YamlEmitter.create(sb, "1.2", indent)
|
|
||||||
|
|
||||||
private fun incIndent() {
|
private fun incIndent() {
|
||||||
currIndent.append(indent)
|
currIndent.append(indent)
|
||||||
@@ -45,7 +43,7 @@ class MessagePackDebugRenderer(bytes: ByteArray) {
|
|||||||
private fun renderKey() {
|
private fun renderKey() {
|
||||||
val mf = unpacker.nextFormat
|
val mf = unpacker.nextFormat
|
||||||
when (mf.valueType!!) {
|
when (mf.valueType!!) {
|
||||||
ValueType.STRING -> yamlEmitter.emit(unpacker.unpackString(), currIndent, true)
|
ValueType.STRING -> emitString(unpacker.unpackString())
|
||||||
ValueType.MAP,
|
ValueType.MAP,
|
||||||
ValueType.ARRAY -> {
|
ValueType.ARRAY -> {
|
||||||
sb.append("? ")
|
sb.append("? ")
|
||||||
@@ -66,14 +64,14 @@ class MessagePackDebugRenderer(bytes: ByteArray) {
|
|||||||
ValueType.FLOAT,
|
ValueType.FLOAT,
|
||||||
ValueType.BOOLEAN,
|
ValueType.BOOLEAN,
|
||||||
ValueType.NIL -> sb.append(unpacker.unpackValue().toJson())
|
ValueType.NIL -> sb.append(unpacker.unpackValue().toJson())
|
||||||
ValueType.STRING -> yamlEmitter.emit(unpacker.unpackString(), currIndent, false)
|
ValueType.STRING -> emitString(unpacker.unpackString())
|
||||||
ValueType.ARRAY -> {
|
ValueType.ARRAY -> {
|
||||||
val size = unpacker.unpackArrayHeader()
|
val size = unpacker.unpackArrayHeader()
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
sb.append("[]")
|
sb.append("[]")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for (i in 0 until size) {
|
repeat(size) {
|
||||||
newline()
|
newline()
|
||||||
sb.append("- ")
|
sb.append("- ")
|
||||||
incIndent()
|
incIndent()
|
||||||
@@ -87,7 +85,7 @@ class MessagePackDebugRenderer(bytes: ByteArray) {
|
|||||||
sb.append("{}")
|
sb.append("{}")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for (i in 0 until size) {
|
repeat(size) {
|
||||||
newline()
|
newline()
|
||||||
renderKey()
|
renderKey()
|
||||||
incIndent()
|
incIndent()
|
||||||
@@ -95,7 +93,12 @@ class MessagePackDebugRenderer(bytes: ByteArray) {
|
|||||||
decIndent()
|
decIndent()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ValueType.BINARY,
|
ValueType.BINARY -> {
|
||||||
|
// https://yaml.org/type/binary.html
|
||||||
|
sb.append("!!binary ")
|
||||||
|
val size = unpacker.unpackBinaryHeader()
|
||||||
|
emitString(Base64.getEncoder().encodeToString(unpacker.readPayload(size)))
|
||||||
|
}
|
||||||
ValueType.EXTENSION -> throw IllegalStateException("Unexpected value type ${mf.valueType}")
|
ValueType.EXTENSION -> throw IllegalStateException("Unexpected value type ${mf.valueType}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -104,4 +107,75 @@ class MessagePackDebugRenderer(bytes: ByteArray) {
|
|||||||
renderValue()
|
renderValue()
|
||||||
sb.toString().removePrefix("\n")
|
sb.toString().removePrefix("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun emitString(str: String) {
|
||||||
|
val newlineIndex = str.indexOf('\n')
|
||||||
|
if (newlineIndex < 0) {
|
||||||
|
emitSingleLineString(str)
|
||||||
|
} else {
|
||||||
|
emitMultiLineString(str, newlineIndex)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// adapted from org.pkl.core.util.yaml.YamlEmitter.emitSingleQuotedString
|
||||||
|
fun emitSingleLineString(str: String) {
|
||||||
|
sb.append('\'')
|
||||||
|
|
||||||
|
val singleQuoteIndex = str.indexOfFirst { it == '\'' }
|
||||||
|
if (singleQuoteIndex == -1) {
|
||||||
|
sb.append(str)
|
||||||
|
} else {
|
||||||
|
var start = 0
|
||||||
|
val length = str.length
|
||||||
|
for (i in singleQuoteIndex..<length) {
|
||||||
|
if (str[i] == '\'') {
|
||||||
|
sb.append(str, start, i).append("''")
|
||||||
|
start = i + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (start < length) {
|
||||||
|
sb.append(str, start, length)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.append('\'')
|
||||||
|
}
|
||||||
|
|
||||||
|
// adapted from org.pkl.core.util.yaml.YamlEmitter.emitSingleQuotedString
|
||||||
|
fun emitMultiLineString(str: String, newlineIndex: Int) {
|
||||||
|
currIndent.append(indent)
|
||||||
|
|
||||||
|
sb.append('|')
|
||||||
|
if (str.first() == ' ') {
|
||||||
|
sb.append(indent.length)
|
||||||
|
}
|
||||||
|
|
||||||
|
val length = str.length
|
||||||
|
if (str.last() == '\n') {
|
||||||
|
if (length == 1 || str[length - 2] == '\n') {
|
||||||
|
sb.append('+')
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sb.append('-')
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.append('\n')
|
||||||
|
|
||||||
|
var start = 0
|
||||||
|
for (i in newlineIndex..<length) {
|
||||||
|
if (str[i] != '\n') continue
|
||||||
|
if (i == start) {
|
||||||
|
// don't add leading indent before newline
|
||||||
|
sb.append('\n')
|
||||||
|
} else {
|
||||||
|
sb.append(currIndent).append(str, start, i + 1)
|
||||||
|
}
|
||||||
|
start = i + 1
|
||||||
|
}
|
||||||
|
if (start < length) {
|
||||||
|
sb.append(currIndent).append(str, start, length)
|
||||||
|
}
|
||||||
|
|
||||||
|
currIndent.setLength(currIndent.length - indent.length)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+44
-29
@@ -1,36 +1,51 @@
|
|||||||
# This is a Gradle generated file for dependency locking.
|
# This is a Gradle generated file for dependency locking.
|
||||||
# Manual edits can break the build and are not advised.
|
# Manual edits can break the build and are not advised.
|
||||||
# This file is expected to be part of source control.
|
# This file is expected to be part of source control.
|
||||||
net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
com.github.ben-manes.caffeine:caffeine:2.9.3=swiftExportClasspathResolvable
|
||||||
|
com.google.errorprone:error_prone_annotations:2.28.0=swiftExportClasspathResolvable
|
||||||
|
io.github.java-diff-utils:java-diff-utils:4.12=kotlinInternalAbiValidation
|
||||||
|
io.opentelemetry:opentelemetry-api:1.41.0=swiftExportClasspathResolvable
|
||||||
|
io.opentelemetry:opentelemetry-context:1.41.0=swiftExportClasspathResolvable
|
||||||
|
net.bytebuddy:byte-buddy:1.17.7=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
||||||
org.assertj:assertj-core:3.27.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.assertj:assertj-core:3.27.6=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.bouncycastle:bcpg-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath
|
org.bouncycastle:bcpkix-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath
|
org.bouncycastle:bcprov-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath
|
org.bouncycastle:bcutil-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.checkerframework:checker-qual:3.43.0=swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools-api:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-api:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-impl:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-runner:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-client:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.2.20=kotlinKlibCommonizerClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-metadata-jvm:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-reflect:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-reflect:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-script-runtime:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-common:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-jvm:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:swift-export-embeddable:2.2.20=swiftExportClasspathResolvable
|
||||||
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-api:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-engine:5.13.4=testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-params:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.platform:junit-platform-commons:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-engine:1.13.4=testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-api:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-launcher:1.13.4=testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-engine:5.14.0=testRuntimeClasspath
|
||||||
org.junit:junit-bom:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-params:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-commons:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-engine:1.14.0=testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-launcher:1.14.0=testRuntimeClasspath
|
||||||
|
org.junit:junit-bom:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDefExtensions,signatures,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDefExtensions
|
empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDefExtensions,signatures,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDefExtensions
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.pkl.commons
|
||||||
|
|
||||||
|
import java.util.WeakHashMap
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
// Adapted from https://stackoverflow.com/a/38084930
|
||||||
|
fun <This, Return> lazyWithReceiver(
|
||||||
|
initializer: This.() -> Return
|
||||||
|
): LazyWithReceiver<This, Return> = LazyWithReceiver(initializer)
|
||||||
|
|
||||||
|
class LazyWithReceiver<This, out Return>(val initializer: This.() -> Return) {
|
||||||
|
private val values = WeakHashMap<This, Return>()
|
||||||
|
|
||||||
|
private val lock = Object()
|
||||||
|
|
||||||
|
operator fun getValue(thisValue: This, property: KProperty<*>): Return =
|
||||||
|
synchronized(lock) { values.getOrPut(thisValue) { thisValue.initializer() } }
|
||||||
|
}
|
||||||
@@ -21,50 +21,65 @@ com.github.ajalt.mordant:mordant-jvm:3.0.1=pklCodegenJava
|
|||||||
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=pklCodegenJava
|
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=pklCodegenJava
|
||||||
com.github.ajalt.mordant:mordant-markdown:3.0.1=pklCodegenJava
|
com.github.ajalt.mordant:mordant-markdown:3.0.1=pklCodegenJava
|
||||||
com.github.ajalt.mordant:mordant:3.0.1=pklCodegenJava
|
com.github.ajalt.mordant:mordant:3.0.1=pklCodegenJava
|
||||||
|
com.github.ben-manes.caffeine:caffeine:2.9.3=swiftExportClasspathResolvable
|
||||||
|
com.google.errorprone:error_prone_annotations:2.28.0=swiftExportClasspathResolvable
|
||||||
com.palantir.javapoet:javapoet:0.7.0=pklCodegenJava
|
com.palantir.javapoet:javapoet:0.7.0=pklCodegenJava
|
||||||
|
io.github.java-diff-utils:java-diff-utils:4.12=kotlinInternalAbiValidation
|
||||||
io.leangen.geantyref:geantyref:1.3.16=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
io.leangen.geantyref:geantyref:1.3.16=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
io.opentelemetry:opentelemetry-api:1.41.0=swiftExportClasspathResolvable
|
||||||
|
io.opentelemetry:opentelemetry-context:1.41.0=swiftExportClasspathResolvable
|
||||||
javax.inject:javax.inject:1=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
javax.inject:javax.inject:1=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
net.bytebuddy:byte-buddy:1.17.7=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
net.java.dev.jna:jna:5.14.0=pklCodegenJava
|
net.java.dev.jna:jna:5.14.0=pklCodegenJava
|
||||||
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
||||||
org.assertj:assertj-core:3.27.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.assertj:assertj-core:3.27.6=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.polyglot:polyglot:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcpg-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:collections:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcpkix-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:graal-sdk:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcprov-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:nativeimage:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcutil-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:word:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
org.checkerframework:checker-qual:3.43.0=swiftExportClasspathResolvable
|
||||||
org.graalvm.truffle:truffle-api:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
org.graalvm.polyglot:polyglot:25.0.0=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.sdk:collections:25.0.0=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:graal-sdk:25.0.0=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:nativeimage:25.0.0=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:word:25.0.0=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.truffle:truffle-api:25.0.0=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools-api:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-api:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-impl:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-runner:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-client:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.2.20=kotlinKlibCommonizerClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-metadata-jvm:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-reflect:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-reflect:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-script-runtime:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-common:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-jvm:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=pklCodegenJava,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.20=pklCodegenJava,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=pklCodegenJava,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.20=pklCodegenJava,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,pklCodegenJava,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,pklCodegenJava,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:swift-export-embeddable:2.2.20=swiftExportClasspathResolvable
|
||||||
org.jetbrains:annotations:13.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,pklCodegenJava,testCompileClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains:annotations:13.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,pklCodegenJava,swiftExportClasspathResolvable,testCompileClasspath,testRuntimeClasspath
|
||||||
org.jetbrains:markdown-jvm:0.7.3=pklCodegenJava
|
org.jetbrains:markdown-jvm:0.7.3=pklCodegenJava
|
||||||
org.jetbrains:markdown:0.7.3=pklCodegenJava
|
org.jetbrains:markdown:0.7.3=pklCodegenJava
|
||||||
org.junit.jupiter:junit-jupiter-api:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-api:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-engine:5.13.4=testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-engine:5.14.0=testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-params:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-params:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-commons:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.platform:junit-platform-commons:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-engine:1.13.4=testRuntimeClasspath
|
org.junit.platform:junit-platform-engine:1.14.0=testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-launcher:1.13.4=testRuntimeClasspath
|
org.junit.platform:junit-platform-launcher:1.14.0=testRuntimeClasspath
|
||||||
org.junit:junit-bom:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit:junit-bom:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.msgpack:msgpack-core:0.9.8=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
org.msgpack:msgpack-core:0.9.8=compileClasspath,pklCodegenJava,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
||||||
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.organicdesign:Paguro:3.10.3=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
org.organicdesign:Paguro:3.10.3=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
||||||
org.snakeyaml:snakeyaml-engine:2.10=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
org.snakeyaml:snakeyaml-engine:2.10=pklCodegenJava,runtimeClasspath,testRuntimeClasspath
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -82,6 +82,7 @@ dependencies {
|
|||||||
api(projects.pklCore)
|
api(projects.pklCore)
|
||||||
|
|
||||||
implementation(libs.geantyref)
|
implementation(libs.geantyref)
|
||||||
|
implementation(libs.msgpack)
|
||||||
|
|
||||||
testImplementation(libs.javaxInject)
|
testImplementation(libs.javaxInject)
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -15,9 +15,14 @@
|
|||||||
*/
|
*/
|
||||||
package org.pkl.config.java;
|
package org.pkl.config.java;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
|
import java.util.Map;
|
||||||
import org.pkl.config.java.mapper.ConversionException;
|
import org.pkl.config.java.mapper.ConversionException;
|
||||||
|
import org.pkl.config.java.mapper.ValueMapper;
|
||||||
|
import org.pkl.core.Composite;
|
||||||
import org.pkl.core.Evaluator;
|
import org.pkl.core.Evaluator;
|
||||||
|
import org.pkl.core.PklBinaryDecoder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A root, intermediate, or leaf node in a configuration tree. Child nodes can be obtained by name
|
* A root, intermediate, or leaf node in a configuration tree. Child nodes can be obtained by name
|
||||||
@@ -67,4 +72,51 @@ public interface Config {
|
|||||||
* @throws ConversionException if the value cannot be converted to the given type
|
* @throws ConversionException if the value cannot be converted to the given type
|
||||||
*/
|
*/
|
||||||
<T> T as(JavaType<T> type);
|
<T> T as(JavaType<T> type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decode a config from the supplied byte array.
|
||||||
|
*
|
||||||
|
* @return the encoded config
|
||||||
|
*/
|
||||||
|
static Config fromPklBinary(byte[] bytes, ValueMapper mapper) {
|
||||||
|
return makeConfig(PklBinaryDecoder.decode(bytes), mapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decode a config from the supplied byte array using a preconfigured {@link ValueMapper}.
|
||||||
|
*
|
||||||
|
* @return the encoded config
|
||||||
|
*/
|
||||||
|
static Config fromPklBinary(byte[] bytes) {
|
||||||
|
return fromPklBinary(bytes, ValueMapper.preconfigured());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decode a config from the supplied {@link InputStream} using a preconfigured {@link
|
||||||
|
* ValueMapper}.
|
||||||
|
*
|
||||||
|
* @return the encoded config
|
||||||
|
*/
|
||||||
|
static Config fromPklBinary(InputStream inputStream, ValueMapper mapper) {
|
||||||
|
return makeConfig(PklBinaryDecoder.decode(inputStream), mapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decode a config from the supplied {@link InputStream}.
|
||||||
|
*
|
||||||
|
* @return the encoded config
|
||||||
|
*/
|
||||||
|
static Config fromPklBinary(InputStream inputStream) {
|
||||||
|
return fromPklBinary(inputStream, ValueMapper.preconfigured());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Config makeConfig(Object decoded, ValueMapper mapper) {
|
||||||
|
if (decoded instanceof Composite composite) {
|
||||||
|
return new CompositeConfig("", mapper, composite);
|
||||||
|
}
|
||||||
|
if (decoded instanceof Map<?, ?> map) {
|
||||||
|
return new MapConfig("", mapper, map);
|
||||||
|
}
|
||||||
|
return new LeafConfig("", mapper, decoded);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,175 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.pkl.config.java;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.List;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.pkl.config.java.mapper.Named;
|
||||||
|
import org.pkl.config.java.mapper.Types;
|
||||||
|
import org.pkl.core.PObject;
|
||||||
|
|
||||||
|
public abstract class AbstractConfigTest {
|
||||||
|
|
||||||
|
private final Config pigeonConfig = getPigeonConfig();
|
||||||
|
private final Config pigeonModuleConfig = getPigeonModuleConfig();
|
||||||
|
private final Config pairConfig = getPairConfig();
|
||||||
|
private final Config mapConfig = getMapConfig();
|
||||||
|
|
||||||
|
protected abstract Config getPigeonConfig();
|
||||||
|
|
||||||
|
protected abstract Config getPigeonModuleConfig();
|
||||||
|
|
||||||
|
protected abstract Config getPairConfig();
|
||||||
|
|
||||||
|
protected abstract Config getMapConfig();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void navigate() {
|
||||||
|
var pigeon = pigeonConfig.get("pigeon");
|
||||||
|
assertThat(pigeon.getQualifiedName()).isEqualTo("pigeon");
|
||||||
|
assertThat(pigeon.getRawValue()).isInstanceOf(PObject.class);
|
||||||
|
|
||||||
|
var address = pigeon.get("address");
|
||||||
|
assertThat(address.getQualifiedName()).isEqualTo("pigeon.address");
|
||||||
|
assertThat(address.getRawValue()).isInstanceOf(PObject.class);
|
||||||
|
|
||||||
|
var street = address.get("street");
|
||||||
|
assertThat(street.getQualifiedName()).isEqualTo("pigeon.address.street");
|
||||||
|
assertThat(street.getRawValue()).isInstanceOf(String.class);
|
||||||
|
|
||||||
|
assertThat(street.as(String.class)).isEqualTo("Fuzzy St.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void navigateToNonExistingObjectChild() {
|
||||||
|
var pigeon = pigeonConfig.get("pigeon");
|
||||||
|
var t = catchThrowable(() -> pigeon.get("non-existing"));
|
||||||
|
|
||||||
|
assertThat(t)
|
||||||
|
.isInstanceOf(NoSuchChildException.class)
|
||||||
|
.hasMessageStartingWith(
|
||||||
|
"Node `pigeon` of type `pkl.base#Dynamic` "
|
||||||
|
+ "does not have a property named `non-existing`.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void navigateToNonExistingMapChild() {
|
||||||
|
var map = mapConfig.get("x");
|
||||||
|
var t = catchThrowable(() -> map.get("non-existing"));
|
||||||
|
|
||||||
|
assertThat(t)
|
||||||
|
.isInstanceOf(NoSuchChildException.class)
|
||||||
|
.hasMessageStartingWith(
|
||||||
|
"Node `x` of type `pkl.base#Map` does not have a key named `non-existing`.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void navigateToNonExistingLeafChild() {
|
||||||
|
var age = pigeonConfig.get("pigeon").get("age");
|
||||||
|
var t = catchThrowable(() -> age.get("non-existing"));
|
||||||
|
|
||||||
|
assertThat(t)
|
||||||
|
.isInstanceOf(NoSuchChildException.class)
|
||||||
|
.hasMessageStartingWith(
|
||||||
|
"Leaf node `pigeon.age` of type `pkl.base#Int` does not have a child named `non-existing`.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void convertObjectToPojoByType() {
|
||||||
|
Person pigeon = pigeonConfig.get("pigeon").as(Person.class);
|
||||||
|
checkPigeon(pigeon);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void convertObjectToPojoByJavaType() {
|
||||||
|
var pigeon = pigeonConfig.get("pigeon").as(JavaType.of(Person.class));
|
||||||
|
checkPigeon(pigeon);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void convertModuleToPojoByType() {
|
||||||
|
var pigeon = pigeonModuleConfig.as(Person.class);
|
||||||
|
checkPigeon(pigeon);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void convertModuleToPojoByJavaType() {
|
||||||
|
var pigeon = pigeonModuleConfig.as(JavaType.of(Person.class));
|
||||||
|
checkPigeon(pigeon);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkPigeon(Person pigeon) {
|
||||||
|
assertThat(pigeon).isNotNull();
|
||||||
|
assertThat(pigeon.age).isEqualTo(30);
|
||||||
|
assertThat(pigeon.friends).containsExactly("john", "mary");
|
||||||
|
assertThat(pigeon.address.street).isEqualTo("Fuzzy St.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void convertToParameterizedTypeByType() {
|
||||||
|
Pair<Path, Integer> pair =
|
||||||
|
pairConfig.get("x").as(Types.parameterizedType(Pair.class, Path.class, Integer.class));
|
||||||
|
checkPair(pair);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void convertToParameterizedTypeByJavaType() {
|
||||||
|
var pair = pairConfig.get("x").as(new JavaType<Pair<Path, Integer>>() {});
|
||||||
|
checkPair(pair);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkPair(Pair<?, ?> pair) {
|
||||||
|
assertThat(pair).isNotNull();
|
||||||
|
assertThat(pair.first).isEqualTo(Path.of("file/path"));
|
||||||
|
assertThat(pair.second).isEqualTo(42);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Person {
|
||||||
|
final int age;
|
||||||
|
final List<String> friends;
|
||||||
|
final Address address;
|
||||||
|
|
||||||
|
public Person(
|
||||||
|
@Named("age") int age,
|
||||||
|
@Named("friends") List<String> friends,
|
||||||
|
@Named("address") Address address) {
|
||||||
|
this.age = age;
|
||||||
|
this.friends = friends;
|
||||||
|
this.address = address;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Address {
|
||||||
|
final String street;
|
||||||
|
|
||||||
|
public Address(@Named("street") String street) {
|
||||||
|
this.street = street;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Pair<S, T> {
|
||||||
|
final S first;
|
||||||
|
final T second;
|
||||||
|
|
||||||
|
public Pair(@Named("first") S first, @Named("second") T second) {
|
||||||
|
this.first = first;
|
||||||
|
this.second = second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.pkl.config.java;
|
||||||
|
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
|
public class ConfigPklBinaryDecoderTest extends AbstractConfigTest {
|
||||||
|
// generate via: pbpaste | ./pkl-cli/build/executable/jpkl eval /dev/stdin -f pkl-binary | base64
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Config getPigeonConfig() {
|
||||||
|
// pigeon { age = 30; friends = List("john", "mary"); address { street = "Fuzzy St." } }
|
||||||
|
return Config.fromPklBinary(
|
||||||
|
Base64.getDecoder()
|
||||||
|
.decode(
|
||||||
|
"lAGkdGVzdNklZmlsZTovLy9Vc2Vycy9qYmFzY2gvc3JjL3BrbC90ZXN0LnBrbJGTEKZwaWdlb26UAadEeW5hbWljqHBrbDpiYXNlk5MQo2FnZR6TEKdmcmllbmRzkgSSpGpvaG6kbWFyeZMQp2FkZHJlc3OUAadEeW5hbWljqHBrbDpiYXNlkZMQpnN0cmVldKlGdXp6eSBTdC4="));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Config getPigeonModuleConfig() {
|
||||||
|
// age = 30; friends = List("john", "mary"); address { street = "Fuzzy St." }
|
||||||
|
return Config.fromPklBinary(
|
||||||
|
Base64.getDecoder()
|
||||||
|
.decode(
|
||||||
|
"lAGlc3RkaW6xZmlsZTovLy9kZXYvc3RkaW6TkxCjYWdlHpMQp2ZyaWVuZHOSBJKkam9obqRtYXJ5kxCnYWRkcmVzc5QBp0R5bmFtaWOocGtsOmJhc2WRkxCmc3RyZWV0qUZ1enp5IFN0Lg=="));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Config getPairConfig() {
|
||||||
|
// x { first = "file/path"; second = 42 }
|
||||||
|
return Config.fromPklBinary(
|
||||||
|
Base64.getDecoder()
|
||||||
|
.decode(
|
||||||
|
"lAGlc3RkaW6xZmlsZTovLy9kZXYvc3RkaW6RkxCheJQBp0R5bmFtaWOocGtsOmJhc2WSkxClZmlyc3SpZmlsZS9wYXRokxCmc2Vjb25kKg=="));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Config getMapConfig() {
|
||||||
|
// x = Map("one", 1, "two", 2)
|
||||||
|
return Config.fromPklBinary(
|
||||||
|
Base64.getDecoder().decode("lAGlc3RkaW6xZmlsZTovLy9kZXYvc3RkaW6RkxCheJICgqNvbmUBo3R3bwI="));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -15,164 +15,31 @@
|
|||||||
*/
|
*/
|
||||||
package org.pkl.config.java;
|
package org.pkl.config.java;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.*;
|
|
||||||
import static org.pkl.core.ModuleSource.text;
|
import static org.pkl.core.ModuleSource.text;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
public class ConfigTest extends AbstractConfigTest {
|
||||||
import java.util.List;
|
private static final ConfigEvaluator evaluator = ConfigEvaluator.preconfigured();
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.pkl.config.java.mapper.Named;
|
|
||||||
import org.pkl.config.java.mapper.Types;
|
|
||||||
import org.pkl.core.PObject;
|
|
||||||
|
|
||||||
public class ConfigTest {
|
@Override
|
||||||
private final ConfigEvaluator evaluator = ConfigEvaluator.preconfigured();
|
protected Config getPigeonConfig() {
|
||||||
|
return evaluator.evaluate(
|
||||||
private final Config pigeonConfig =
|
|
||||||
evaluator.evaluate(
|
|
||||||
text(
|
text(
|
||||||
"pigeon { age = 30; friends = List(\"john\", \"mary\"); address { street = \"Fuzzy St.\" } }"));
|
"pigeon { age = 30; friends = List(\"john\", \"mary\"); address { street = \"Fuzzy St.\" } }"));
|
||||||
|
}
|
||||||
|
|
||||||
private final Config pigeonModuleConfig =
|
@Override
|
||||||
evaluator.evaluate(
|
protected Config getPigeonModuleConfig() {
|
||||||
|
return evaluator.evaluate(
|
||||||
text("age = 30; friends = List(\"john\", \"mary\"); address { street = \"Fuzzy St.\" }"));
|
text("age = 30; friends = List(\"john\", \"mary\"); address { street = \"Fuzzy St.\" }"));
|
||||||
|
|
||||||
private final Config pairConfig =
|
|
||||||
evaluator.evaluate(text("x { first = \"file/path\"; second = 42 }"));
|
|
||||||
|
|
||||||
private final Config mapConfig = evaluator.evaluate(text("x = Map(\"one\", 1, \"two\", 2)"));
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void navigate() {
|
|
||||||
var pigeon = pigeonConfig.get("pigeon");
|
|
||||||
assertThat(pigeon.getQualifiedName()).isEqualTo("pigeon");
|
|
||||||
assertThat(pigeon.getRawValue()).isInstanceOf(PObject.class);
|
|
||||||
|
|
||||||
var address = pigeon.get("address");
|
|
||||||
assertThat(address.getQualifiedName()).isEqualTo("pigeon.address");
|
|
||||||
assertThat(address.getRawValue()).isInstanceOf(PObject.class);
|
|
||||||
|
|
||||||
var street = address.get("street");
|
|
||||||
assertThat(street.getQualifiedName()).isEqualTo("pigeon.address.street");
|
|
||||||
assertThat(street.getRawValue()).isInstanceOf(String.class);
|
|
||||||
|
|
||||||
assertThat(street.as(String.class)).isEqualTo("Fuzzy St.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Override
|
||||||
public void navigateToNonExistingObjectChild() {
|
protected Config getPairConfig() {
|
||||||
var pigeon = pigeonConfig.get("pigeon");
|
return evaluator.evaluate(text("x { first = \"file/path\"; second = 42 }"));
|
||||||
var t = catchThrowable(() -> pigeon.get("non-existing"));
|
|
||||||
|
|
||||||
assertThat(t)
|
|
||||||
.isInstanceOf(NoSuchChildException.class)
|
|
||||||
.hasMessageStartingWith(
|
|
||||||
"Node `pigeon` of type `pkl.base#Dynamic` "
|
|
||||||
+ "does not have a property named `non-existing`.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Override
|
||||||
public void navigateToNonExistingMapChild() {
|
protected Config getMapConfig() {
|
||||||
var map = mapConfig.get("x");
|
return evaluator.evaluate(text("x = Map(\"one\", 1, \"two\", 2)"));
|
||||||
var t = catchThrowable(() -> map.get("non-existing"));
|
|
||||||
|
|
||||||
assertThat(t)
|
|
||||||
.isInstanceOf(NoSuchChildException.class)
|
|
||||||
.hasMessageStartingWith(
|
|
||||||
"Node `x` of type `pkl.base#Map` does not have a key named `non-existing`.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void navigateToNonExistingLeafChild() {
|
|
||||||
var age = pigeonConfig.get("pigeon").get("age");
|
|
||||||
var t = catchThrowable(() -> age.get("non-existing"));
|
|
||||||
|
|
||||||
assertThat(t)
|
|
||||||
.isInstanceOf(NoSuchChildException.class)
|
|
||||||
.hasMessageStartingWith(
|
|
||||||
"Leaf node `pigeon.age` of type `pkl.base#Int` does not have a child named `non-existing`.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void convertObjectToPojoByType() {
|
|
||||||
Person pigeon = pigeonConfig.get("pigeon").as(Person.class);
|
|
||||||
checkPigeon(pigeon);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void convertObjectToPojoByJavaType() {
|
|
||||||
var pigeon = pigeonConfig.get("pigeon").as(JavaType.of(Person.class));
|
|
||||||
checkPigeon(pigeon);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void convertModuleToPojoByType() {
|
|
||||||
var pigeon = pigeonModuleConfig.as(Person.class);
|
|
||||||
checkPigeon(pigeon);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void convertModuleToPojoByJavaType() {
|
|
||||||
var pigeon = pigeonModuleConfig.as(JavaType.of(Person.class));
|
|
||||||
checkPigeon(pigeon);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkPigeon(Person pigeon) {
|
|
||||||
assertThat(pigeon).isNotNull();
|
|
||||||
assertThat(pigeon.age).isEqualTo(30);
|
|
||||||
assertThat(pigeon.friends).containsExactly("john", "mary");
|
|
||||||
assertThat(pigeon.address.street).isEqualTo("Fuzzy St.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void convertToParameterizedTypeByType() {
|
|
||||||
Pair<Path, Integer> pair =
|
|
||||||
pairConfig.get("x").as(Types.parameterizedType(Pair.class, Path.class, Integer.class));
|
|
||||||
checkPair(pair);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void convertToParameterizedTypeByJavaType() {
|
|
||||||
var pair = pairConfig.get("x").as(new JavaType<Pair<Path, Integer>>() {});
|
|
||||||
checkPair(pair);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkPair(Pair<?, ?> pair) {
|
|
||||||
assertThat(pair).isNotNull();
|
|
||||||
assertThat(pair.first).isEqualTo(Path.of("file/path"));
|
|
||||||
assertThat(pair.second).isEqualTo(42);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Person {
|
|
||||||
final int age;
|
|
||||||
final List<String> friends;
|
|
||||||
final Address address;
|
|
||||||
|
|
||||||
public Person(
|
|
||||||
@Named("age") int age,
|
|
||||||
@Named("friends") List<String> friends,
|
|
||||||
@Named("address") Address address) {
|
|
||||||
this.age = age;
|
|
||||||
this.friends = friends;
|
|
||||||
this.address = address;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Address {
|
|
||||||
final String street;
|
|
||||||
|
|
||||||
public Address(@Named("street") String street) {
|
|
||||||
this.street = street;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Pair<S, T> {
|
|
||||||
final S first;
|
|
||||||
final T second;
|
|
||||||
|
|
||||||
public Pair(@Named("first") S first, @Named("second") T second) {
|
|
||||||
this.first = first;
|
|
||||||
this.second = second;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,50 +21,65 @@ com.github.ajalt.mordant:mordant-jvm:3.0.1=pklCodegenKotlin
|
|||||||
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=pklCodegenKotlin
|
com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=pklCodegenKotlin
|
||||||
com.github.ajalt.mordant:mordant-markdown:3.0.1=pklCodegenKotlin
|
com.github.ajalt.mordant:mordant-markdown:3.0.1=pklCodegenKotlin
|
||||||
com.github.ajalt.mordant:mordant:3.0.1=pklCodegenKotlin
|
com.github.ajalt.mordant:mordant:3.0.1=pklCodegenKotlin
|
||||||
|
com.github.ben-manes.caffeine:caffeine:2.9.3=swiftExportClasspathResolvable
|
||||||
|
com.google.errorprone:error_prone_annotations:2.28.0=swiftExportClasspathResolvable
|
||||||
com.squareup:kotlinpoet:1.6.0=pklCodegenKotlin
|
com.squareup:kotlinpoet:1.6.0=pklCodegenKotlin
|
||||||
io.leangen.geantyref:geantyref:1.3.16=pklConfigJava,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
io.github.java-diff-utils:java-diff-utils:4.12=kotlinInternalAbiValidation
|
||||||
net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
io.leangen.geantyref:geantyref:1.3.16=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
io.opentelemetry:opentelemetry-api:1.41.0=swiftExportClasspathResolvable
|
||||||
|
io.opentelemetry:opentelemetry-context:1.41.0=swiftExportClasspathResolvable
|
||||||
|
net.bytebuddy:byte-buddy:1.17.7=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
net.java.dev.jna:jna:5.14.0=pklCodegenKotlin
|
net.java.dev.jna:jna:5.14.0=pklCodegenKotlin
|
||||||
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
||||||
org.assertj:assertj-core:3.27.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.assertj:assertj-core:3.27.6=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.polyglot:polyglot:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcpg-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:collections:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcpkix-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:graal-sdk:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcprov-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:nativeimage:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath
|
org.bouncycastle:bcutil-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:word:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath
|
org.checkerframework:checker-qual:3.43.0=swiftExportClasspathResolvable
|
||||||
org.graalvm.truffle:truffle-api:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath
|
org.graalvm.polyglot:polyglot:25.0.0=pklCodegenKotlin,testRuntimeClasspath
|
||||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.sdk:collections:25.0.0=pklCodegenKotlin,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:graal-sdk:25.0.0=pklCodegenKotlin,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:nativeimage:25.0.0=pklCodegenKotlin,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:word:25.0.0=pklCodegenKotlin,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.truffle:truffle-api:25.0.0=pklCodegenKotlin,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools-api:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-api:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-impl:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-runner:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-client:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.2.20=kotlinKlibCommonizerClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-metadata-jvm:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-reflect:2.2.20=compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,pklCodegenKotlin,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-script-runtime:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-common:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-jvm:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib:2.2.20=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,pklCodegenKotlin,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:swift-export-embeddable:2.2.20=swiftExportClasspathResolvable
|
||||||
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=swiftExportClasspathResolvable
|
||||||
|
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,pklCodegenKotlin,runtimeClasspath,swiftExportClasspathResolvable,testCompileClasspath,testRuntimeClasspath
|
||||||
org.jetbrains:markdown-jvm:0.7.3=pklCodegenKotlin
|
org.jetbrains:markdown-jvm:0.7.3=pklCodegenKotlin
|
||||||
org.jetbrains:markdown:0.7.3=pklCodegenKotlin
|
org.jetbrains:markdown:0.7.3=pklCodegenKotlin
|
||||||
org.junit.jupiter:junit-jupiter-api:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-api:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-engine:5.13.4=testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-engine:5.14.0=testRuntimeClasspath
|
||||||
org.junit.jupiter:junit-jupiter-params:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-params:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-commons:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.platform:junit-platform-commons:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-engine:1.13.4=testRuntimeClasspath
|
org.junit.platform:junit-platform-engine:1.14.0=testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-launcher:1.13.4=testRuntimeClasspath
|
org.junit.platform:junit-platform-launcher:1.14.0=testRuntimeClasspath
|
||||||
org.junit:junit-bom:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit:junit-bom:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.msgpack:msgpack-core:0.9.8=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath
|
org.msgpack:msgpack-core:0.9.8=compileClasspath,pklCodegenKotlin,pklConfigJava,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
||||||
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.organicdesign:Paguro:3.10.3=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath
|
org.organicdesign:Paguro:3.10.3=pklCodegenKotlin,testRuntimeClasspath
|
||||||
org.snakeyaml:snakeyaml-engine:2.10=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath
|
org.snakeyaml:snakeyaml-engine:2.10=pklCodegenKotlin,testRuntimeClasspath
|
||||||
empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDefExtensions,pklConfigJavaAll,signatures,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDefExtensions
|
empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDefExtensions,pklConfigJava,pklConfigJavaAll,signatures,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDefExtensions
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -25,20 +25,27 @@ val pklConfigJavaAll: Configuration by configurations.creating
|
|||||||
|
|
||||||
val pklCodegenKotlin: Configuration by configurations.creating
|
val pklCodegenKotlin: Configuration by configurations.creating
|
||||||
|
|
||||||
// Ideally, api would extend pklConfigJavaAll,
|
val buildInfo = project.extensions.getByType<BuildInfo>()
|
||||||
// instead of extending pklConfigJava and then patching test task and POM.
|
|
||||||
// However, this wouldn't work for IntelliJ.
|
|
||||||
configurations.api.get().extendsFrom(pklConfigJava)
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
pklConfigJava(projects.pklConfigJava)
|
|
||||||
|
|
||||||
pklConfigJavaAll(project(":pkl-config-java", "fatJar"))
|
|
||||||
|
|
||||||
pklCodegenKotlin(projects.pklCodegenKotlin)
|
pklCodegenKotlin(projects.pklCodegenKotlin)
|
||||||
|
|
||||||
implementation(libs.kotlinReflect)
|
implementation(libs.kotlinReflect)
|
||||||
|
implementation(libs.msgpack)
|
||||||
|
|
||||||
|
// Don't declare a runtime dependency to pkl-config-java because Gradle cannot resolve
|
||||||
|
// the correct publication (library vs fatJar) when generating the POM.
|
||||||
|
// We add the dependency manually to the POM later.
|
||||||
|
//
|
||||||
|
// Avoids this error during publish:
|
||||||
|
//
|
||||||
|
// > Failed to query the value of property 'dependencies'.
|
||||||
|
// > Publishing is not able to resolve a dependency on a project with multiple publications that
|
||||||
|
// have different coordinates.
|
||||||
|
// Found the following publications in project ':pkl-config-java':
|
||||||
|
// - Maven publication 'fatJar' with coordinates org.pkl-lang:pkl-config-java-all:0.30.0-SNAPSHOT
|
||||||
|
// - Maven publication 'library' with coordinates org.pkl-lang:pkl-config-java:0.30.0-SNAPSHOT
|
||||||
|
compileOnly(projects.pklConfigJava)
|
||||||
|
testImplementation(projects.pklConfigJava)
|
||||||
testImplementation(libs.geantyref)
|
testImplementation(libs.geantyref)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,9 +74,6 @@ tasks.processTestResources { dependsOn(generateTestConfigClasses) }
|
|||||||
|
|
||||||
tasks.compileTestKotlin { dependsOn(generateTestConfigClasses) }
|
tasks.compileTestKotlin { dependsOn(generateTestConfigClasses) }
|
||||||
|
|
||||||
// use pkl-config-java-all for testing (same as for publishing)
|
|
||||||
tasks.test { classpath = classpath - pklConfigJava + pklConfigJavaAll }
|
|
||||||
|
|
||||||
// disable publishing of .module until we find a way to manipulate it like POM (or ideally both
|
// disable publishing of .module until we find a way to manipulate it like POM (or ideally both
|
||||||
// together)
|
// together)
|
||||||
tasks.withType<GenerateModuleMetadata> { enabled = false }
|
tasks.withType<GenerateModuleMetadata> { enabled = false }
|
||||||
@@ -83,22 +87,22 @@ publishing {
|
|||||||
"Kotlin extensions for pkl-config-java, a Java config library based on the Pkl config language."
|
"Kotlin extensions for pkl-config-java, a Java config library based on the Pkl config language."
|
||||||
)
|
)
|
||||||
|
|
||||||
// change dependency pkl-config-java to pkl-config-java-all
|
// Modify POM and add pkl-config-java-all dependency
|
||||||
withXml {
|
withXml {
|
||||||
val projectElement = asElement()
|
val dependenciesNode = asNode().get("dependencies") as groovy.util.NodeList
|
||||||
val dependenciesElement =
|
val dependencies =
|
||||||
projectElement.getElementsByTagName("dependencies").item(0) as org.w3c.dom.Element
|
if (dependenciesNode.isNotEmpty()) {
|
||||||
val dependencyElements = dependenciesElement.getElementsByTagName("dependency")
|
dependenciesNode[0] as groovy.util.Node
|
||||||
for (idx in 0 until dependencyElements.length) {
|
} else {
|
||||||
val dependencyElement = dependencyElements.item(idx) as org.w3c.dom.Element
|
asNode().appendNode("dependencies")
|
||||||
val artifactIdElement =
|
|
||||||
dependencyElement.getElementsByTagName("artifactId").item(0) as org.w3c.dom.Element
|
|
||||||
if (artifactIdElement.textContent == "pkl-config-java") {
|
|
||||||
artifactIdElement.textContent = "pkl-config-java-all"
|
|
||||||
return@withXml
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dependencies.appendNode("dependency").apply {
|
||||||
|
appendNode("groupId", "org.pkl-lang")
|
||||||
|
appendNode("artifactId", "pkl-config-java-all")
|
||||||
|
appendNode("version", project.version)
|
||||||
|
appendNode("scope", "runtime")
|
||||||
}
|
}
|
||||||
throw GradleException("Failed to edit POM of module `pkl-config-kotlin`.")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+51
-36
@@ -1,46 +1,61 @@
|
|||||||
# This is a Gradle generated file for dependency locking.
|
# This is a Gradle generated file for dependency locking.
|
||||||
# Manual edits can break the build and are not advised.
|
# Manual edits can break the build and are not advised.
|
||||||
# This file is expected to be part of source control.
|
# This file is expected to be part of source control.
|
||||||
|
com.github.ben-manes.caffeine:caffeine:2.9.3=swiftExportClasspathResolvable
|
||||||
com.google.code.findbugs:jsr305:3.0.2=compileClasspath,compileOnlyDependenciesMetadata
|
com.google.code.findbugs:jsr305:3.0.2=compileClasspath,compileOnlyDependenciesMetadata
|
||||||
|
com.google.errorprone:error_prone_annotations:2.28.0=swiftExportClasspathResolvable
|
||||||
com.palantir.javapoet:javapoet:0.7.0=generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath
|
com.palantir.javapoet:javapoet:0.7.0=generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath
|
||||||
net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
io.github.java-diff-utils:java-diff-utils:4.12=kotlinInternalAbiValidation
|
||||||
|
io.opentelemetry:opentelemetry-api:1.41.0=swiftExportClasspathResolvable
|
||||||
|
io.opentelemetry:opentelemetry-context:1.41.0=swiftExportClasspathResolvable
|
||||||
|
net.bytebuddy:byte-buddy:1.17.7=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
|
||||||
org.assertj:assertj-core:3.27.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.assertj:assertj-core:3.27.6=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.polyglot:polyglot:24.1.2=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.bouncycastle:bcpg-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:collections:24.1.2=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.bouncycastle:bcpkix-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:graal-sdk:24.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.bouncycastle:bcprov-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:nativeimage:24.1.2=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.bouncycastle:bcutil-jdk18on:1.80=kotlinBouncyCastleConfiguration
|
||||||
org.graalvm.sdk:word:24.1.2=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.checkerframework:checker-qual:3.43.0=swiftExportClasspathResolvable
|
||||||
org.graalvm.truffle:truffle-api:24.1.2=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.graalvm.polyglot:polyglot:25.0.0=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.graalvm.truffle:truffle-dsl-processor:24.1.2=annotationProcessor
|
org.graalvm.sdk:collections:25.0.0=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.sdk:graal-sdk:25.0.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:nativeimage:25.0.0=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.sdk:word:25.0.0=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath
|
org.graalvm.truffle:truffle-api:25.0.0=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.graalvm.truffle:truffle-dsl-processor:25.0.0=annotationProcessor
|
||||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools-api:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath
|
org.jetbrains.kotlin:abi-tools:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-api:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-build-tools-impl:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-compiler-runner:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-client:2.2.20=kotlinBuildToolsApiClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
|
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.2.20=kotlinKlibCommonizerClasspath
|
||||||
|
org.jetbrains.kotlin:kotlin-metadata-jvm:2.2.20=kotlinInternalAbiValidation
|
||||||
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration
|
||||||
org.jetbrains.kotlin:kotlin-reflect:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-reflect:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:kotlin-script-runtime:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-common:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
org.jetbrains.kotlin:kotlin-scripting-jvm:2.2.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.20=generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.20=generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:2.0.21=generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlin:kotlin-stdlib:2.2.20=generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
|
org.jetbrains.kotlin:swift-export-embeddable:2.2.20=swiftExportClasspathResolvable
|
||||||
org.jetbrains:annotations:13.0=generatorCompileClasspath,generatorRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-api:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-engine:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.jupiter:junit-jupiter-params:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=swiftExportClasspathResolvable
|
||||||
org.junit.platform:junit-platform-commons:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.jetbrains:annotations:13.0=generatorCompileClasspath,generatorRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathGenerator,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinInternalAbiValidation,kotlinKlibCommonizerClasspath,swiftExportClasspathResolvable,testCompileClasspath,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-engine:1.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-api:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit.platform:junit-platform-launcher:1.13.4=testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-engine:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.junit:junit-bom:5.13.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.junit.jupiter:junit-jupiter-params:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-commons:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-engine:1.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
org.junit.platform:junit-platform-launcher:1.14.0=testRuntimeClasspath
|
||||||
|
org.junit:junit-bom:5.14.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.msgpack:msgpack-core:0.9.8=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.msgpack:msgpack-core:0.9.8=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
org.organicdesign:Paguro:3.10.3=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
org.organicdesign:Paguro:3.10.3=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import java.util.Collection;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.graalvm.polyglot.Context;
|
import org.graalvm.polyglot.Context;
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode;
|
||||||
import org.pkl.core.http.HttpClient;
|
import org.pkl.core.http.HttpClient;
|
||||||
import org.pkl.core.http.HttpClientInitException;
|
import org.pkl.core.http.HttpClientInitException;
|
||||||
import org.pkl.core.module.ModuleKeyFactory;
|
import org.pkl.core.module.ModuleKeyFactory;
|
||||||
@@ -46,6 +47,7 @@ public class Analyzer {
|
|||||||
private final @Nullable DeclaredDependencies projectDependencies;
|
private final @Nullable DeclaredDependencies projectDependencies;
|
||||||
private final ModuleResolver moduleResolver;
|
private final ModuleResolver moduleResolver;
|
||||||
private final HttpClient httpClient;
|
private final HttpClient httpClient;
|
||||||
|
private final TraceMode traceMode;
|
||||||
|
|
||||||
public Analyzer(
|
public Analyzer(
|
||||||
StackFrameTransformer transformer,
|
StackFrameTransformer transformer,
|
||||||
@@ -54,7 +56,8 @@ public class Analyzer {
|
|||||||
Collection<ModuleKeyFactory> moduleKeyFactories,
|
Collection<ModuleKeyFactory> moduleKeyFactories,
|
||||||
@Nullable Path moduleCacheDir,
|
@Nullable Path moduleCacheDir,
|
||||||
@Nullable DeclaredDependencies projectDependencies,
|
@Nullable DeclaredDependencies projectDependencies,
|
||||||
HttpClient httpClient) {
|
HttpClient httpClient,
|
||||||
|
TraceMode traceMode) {
|
||||||
this.transformer = transformer;
|
this.transformer = transformer;
|
||||||
this.color = color;
|
this.color = color;
|
||||||
this.securityManager = securityManager;
|
this.securityManager = securityManager;
|
||||||
@@ -62,6 +65,7 @@ public class Analyzer {
|
|||||||
this.projectDependencies = projectDependencies;
|
this.projectDependencies = projectDependencies;
|
||||||
this.moduleResolver = new ModuleResolver(moduleKeyFactories);
|
this.moduleResolver = new ModuleResolver(moduleKeyFactories);
|
||||||
this.httpClient = httpClient;
|
this.httpClient = httpClient;
|
||||||
|
this.traceMode = traceMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -115,7 +119,8 @@ public class Analyzer {
|
|||||||
projectDependencies == null
|
projectDependencies == null
|
||||||
? null
|
? null
|
||||||
: new ProjectDependenciesManager(
|
: new ProjectDependenciesManager(
|
||||||
projectDependencies, moduleResolver, securityManager)));
|
projectDependencies, moduleResolver, securityManager),
|
||||||
|
traceMode));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -172,6 +172,15 @@ public interface Evaluator extends AutoCloseable {
|
|||||||
*/
|
*/
|
||||||
Object evaluateExpression(ModuleSource moduleSource, String expression);
|
Object evaluateExpression(ModuleSource moduleSource, String expression);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Evaluates the Pkl expression represented as {@code expression}, returning a byte array of the
|
||||||
|
* <code>pkl-binary</code>-encoded representation of the result.
|
||||||
|
*
|
||||||
|
* @throws PklException if an error occurs during evaluation
|
||||||
|
* @throws IllegalStateException if this evaluator has already been closed
|
||||||
|
*/
|
||||||
|
byte[] evaluateExpressionPklBinary(ModuleSource moduleSource, String expression);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Evaluates the Pkl expression, returning the stringified result.
|
* Evaluates the Pkl expression, returning the stringified result.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import java.util.*;
|
|||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import org.pkl.core.SecurityManagers.StandardBuilder;
|
import org.pkl.core.SecurityManagers.StandardBuilder;
|
||||||
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings.ExternalReader;
|
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings.ExternalReader;
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode;
|
||||||
import org.pkl.core.externalreader.ExternalReaderProcess;
|
import org.pkl.core.externalreader.ExternalReaderProcess;
|
||||||
import org.pkl.core.http.HttpClient;
|
import org.pkl.core.http.HttpClient;
|
||||||
import org.pkl.core.module.ModuleKeyFactories;
|
import org.pkl.core.module.ModuleKeyFactories;
|
||||||
@@ -67,6 +68,8 @@ public final class EvaluatorBuilder {
|
|||||||
|
|
||||||
private @Nullable DeclaredDependencies dependencies;
|
private @Nullable DeclaredDependencies dependencies;
|
||||||
|
|
||||||
|
private TraceMode traceMode = TraceMode.COMPACT;
|
||||||
|
|
||||||
private EvaluatorBuilder() {}
|
private EvaluatorBuilder() {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -454,6 +457,17 @@ public final class EvaluatorBuilder {
|
|||||||
return this.dependencies;
|
return this.dependencies;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Sets whether calls to trace() produce indented, multi-line output. */
|
||||||
|
public EvaluatorBuilder setTraceMode(TraceMode traceMode) {
|
||||||
|
this.traceMode = traceMode;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns whether calls to trace() produce indented, multi-line output. */
|
||||||
|
public TraceMode getTraceMode() {
|
||||||
|
return this.traceMode;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given a project, sets its dependencies, and also applies any evaluator settings if set.
|
* Given a project, sets its dependencies, and also applies any evaluator settings if set.
|
||||||
*
|
*
|
||||||
@@ -517,6 +531,7 @@ public final class EvaluatorBuilder {
|
|||||||
procs.computeIfAbsent(entry.getValue(), ExternalReaderProcess::of)));
|
procs.computeIfAbsent(entry.getValue(), ExternalReaderProcess::of)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings.http() != null) {
|
if (settings.http() != null) {
|
||||||
var httpClientBuilder = HttpClient.builder();
|
var httpClientBuilder = HttpClient.builder();
|
||||||
if (settings.http().proxy() != null) {
|
if (settings.http().proxy() != null) {
|
||||||
@@ -531,6 +546,11 @@ public final class EvaluatorBuilder {
|
|||||||
}
|
}
|
||||||
setHttpClient(httpClientBuilder.buildLazily());
|
setHttpClient(httpClientBuilder.buildLazily());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (settings.traceMode() != null) {
|
||||||
|
setTraceMode(settings.traceMode());
|
||||||
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -557,6 +577,7 @@ public final class EvaluatorBuilder {
|
|||||||
timeout,
|
timeout,
|
||||||
moduleCacheDir,
|
moduleCacheDir,
|
||||||
dependencies,
|
dependencies,
|
||||||
outputFormat);
|
outputFormat,
|
||||||
|
traceMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,8 +28,11 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import org.graalvm.polyglot.Context;
|
import org.graalvm.polyglot.Context;
|
||||||
|
import org.msgpack.core.MessageBufferPacker;
|
||||||
|
import org.msgpack.core.MessagePack;
|
||||||
import org.pkl.core.ast.ConstantValueNode;
|
import org.pkl.core.ast.ConstantValueNode;
|
||||||
import org.pkl.core.ast.internal.ToStringNodeGen;
|
import org.pkl.core.ast.internal.ToStringNodeGen;
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode;
|
||||||
import org.pkl.core.http.HttpClient;
|
import org.pkl.core.http.HttpClient;
|
||||||
import org.pkl.core.module.ModuleKeyFactory;
|
import org.pkl.core.module.ModuleKeyFactory;
|
||||||
import org.pkl.core.module.ProjectDependenciesManager;
|
import org.pkl.core.module.ProjectDependenciesManager;
|
||||||
@@ -47,6 +50,7 @@ import org.pkl.core.runtime.VmExceptionBuilder;
|
|||||||
import org.pkl.core.runtime.VmLanguage;
|
import org.pkl.core.runtime.VmLanguage;
|
||||||
import org.pkl.core.runtime.VmMapping;
|
import org.pkl.core.runtime.VmMapping;
|
||||||
import org.pkl.core.runtime.VmNull;
|
import org.pkl.core.runtime.VmNull;
|
||||||
|
import org.pkl.core.runtime.VmPklBinaryEncoder;
|
||||||
import org.pkl.core.runtime.VmStackOverflowException;
|
import org.pkl.core.runtime.VmStackOverflowException;
|
||||||
import org.pkl.core.runtime.VmTyped;
|
import org.pkl.core.runtime.VmTyped;
|
||||||
import org.pkl.core.runtime.VmUtils;
|
import org.pkl.core.runtime.VmUtils;
|
||||||
@@ -55,17 +59,18 @@ import org.pkl.core.runtime.VmValueRenderer;
|
|||||||
import org.pkl.core.util.ErrorMessages;
|
import org.pkl.core.util.ErrorMessages;
|
||||||
import org.pkl.core.util.Nullable;
|
import org.pkl.core.util.Nullable;
|
||||||
|
|
||||||
public class EvaluatorImpl implements Evaluator {
|
public final class EvaluatorImpl implements Evaluator {
|
||||||
protected final StackFrameTransformer frameTransformer;
|
private final StackFrameTransformer frameTransformer;
|
||||||
protected final boolean color;
|
private final boolean color;
|
||||||
protected final ModuleResolver moduleResolver;
|
private final ModuleResolver moduleResolver;
|
||||||
protected final Context polyglotContext;
|
private final Context polyglotContext;
|
||||||
protected final @Nullable Duration timeout;
|
private final @Nullable Duration timeout;
|
||||||
protected final @Nullable ScheduledExecutorService timeoutExecutor;
|
private final @Nullable ScheduledExecutorService timeoutExecutor;
|
||||||
protected final SecurityManager securityManager;
|
private final SecurityManager securityManager;
|
||||||
protected final BufferedLogger logger;
|
private final BufferedLogger logger;
|
||||||
protected final PackageResolver packageResolver;
|
private final PackageResolver packageResolver;
|
||||||
private final VmValueRenderer vmValueRenderer = VmValueRenderer.singleLine(1000);
|
private final VmValueRenderer vmValueRenderer = VmValueRenderer.singleLine(1000);
|
||||||
|
private @Nullable MessageBufferPacker messagePacker;
|
||||||
|
|
||||||
public EvaluatorImpl(
|
public EvaluatorImpl(
|
||||||
StackFrameTransformer transformer,
|
StackFrameTransformer transformer,
|
||||||
@@ -80,7 +85,8 @@ public class EvaluatorImpl implements Evaluator {
|
|||||||
@Nullable Duration timeout,
|
@Nullable Duration timeout,
|
||||||
@Nullable Path moduleCacheDir,
|
@Nullable Path moduleCacheDir,
|
||||||
@Nullable DeclaredDependencies projectDependencies,
|
@Nullable DeclaredDependencies projectDependencies,
|
||||||
@Nullable String outputFormat) {
|
@Nullable String outputFormat,
|
||||||
|
TraceMode traceMode) {
|
||||||
|
|
||||||
securityManager = manager;
|
securityManager = manager;
|
||||||
frameTransformer = transformer;
|
frameTransformer = transformer;
|
||||||
@@ -108,7 +114,8 @@ public class EvaluatorImpl implements Evaluator {
|
|||||||
projectDependencies == null
|
projectDependencies == null
|
||||||
? null
|
? null
|
||||||
: new ProjectDependenciesManager(
|
: new ProjectDependenciesManager(
|
||||||
projectDependencies, moduleResolver, securityManager)));
|
projectDependencies, moduleResolver, securityManager),
|
||||||
|
traceMode));
|
||||||
});
|
});
|
||||||
this.timeout = timeout;
|
this.timeout = timeout;
|
||||||
// NOTE: would probably make sense to share executor between evaluators
|
// NOTE: would probably make sense to share executor between evaluators
|
||||||
@@ -214,6 +221,37 @@ public class EvaluatorImpl implements Evaluator {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MessageBufferPacker getMessagePacker() {
|
||||||
|
if (messagePacker == null) {
|
||||||
|
messagePacker = MessagePack.newDefaultBufferPacker();
|
||||||
|
}
|
||||||
|
messagePacker.clear();
|
||||||
|
return messagePacker;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] evaluateExpressionPklBinary(ModuleSource moduleSource, String expression) {
|
||||||
|
return doEvaluate(
|
||||||
|
moduleSource,
|
||||||
|
(module) -> {
|
||||||
|
var expressionResult =
|
||||||
|
switch (expression) {
|
||||||
|
case "module" -> module;
|
||||||
|
case "output.text" -> VmUtils.readTextProperty(readModuleOutput(module));
|
||||||
|
case "output.value" ->
|
||||||
|
VmUtils.readMember(readModuleOutput(module), Identifier.VALUE);
|
||||||
|
case "output.bytes" -> VmUtils.readBytesProperty(readModuleOutput(module));
|
||||||
|
default ->
|
||||||
|
VmUtils.evaluateExpression(module, expression, securityManager, moduleResolver);
|
||||||
|
};
|
||||||
|
VmValue.force(expressionResult, false);
|
||||||
|
|
||||||
|
var packer = getMessagePacker();
|
||||||
|
new VmPklBinaryEncoder(packer).renderDocument(expressionResult);
|
||||||
|
return packer.toByteArray();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String evaluateExpressionString(ModuleSource moduleSource, String expression) {
|
public String evaluateExpressionString(ModuleSource moduleSource, String expression) {
|
||||||
// optimization: if the expression is `output.text` (the common case), read members
|
// optimization: if the expression is `output.text` (the common case), read members
|
||||||
@@ -360,7 +398,7 @@ public class EvaluatorImpl implements Evaluator {
|
|||||||
return evalResult;
|
return evalResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> T doEvaluate(ModuleSource moduleSource, Function<VmTyped, T> doEvaluate) {
|
private <T> T doEvaluate(ModuleSource moduleSource, Function<VmTyped, T> doEvaluate) {
|
||||||
return doEvaluate(
|
return doEvaluate(
|
||||||
() -> {
|
() -> {
|
||||||
var moduleKey = moduleResolver.resolve(moduleSource);
|
var moduleKey = moduleResolver.resolve(moduleSource);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -80,6 +80,13 @@ public final class Loggers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String formatMessage(String level, String message, StackFrame frame) {
|
private static String formatMessage(String level, String message, StackFrame frame) {
|
||||||
return "pkl: " + level + ": " + message + " (" + frame.getModuleUri() + ')';
|
return "pkl: "
|
||||||
|
+ level
|
||||||
|
+ ": "
|
||||||
|
+ message
|
||||||
|
+ (message.endsWith("\n") ? "" : " ")
|
||||||
|
+ "("
|
||||||
|
+ frame.getModuleUri()
|
||||||
|
+ ')';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,184 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.pkl.core;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.UncheckedIOException;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import org.msgpack.core.MessagePack;
|
||||||
|
import org.msgpack.core.MessageUnpacker;
|
||||||
|
import org.pkl.core.runtime.BaseModule;
|
||||||
|
import org.pkl.core.util.CollectionUtils;
|
||||||
|
import org.pkl.core.util.pklbinary.AbstractPklBinaryDecoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A decoder/parser for <code>pkl-binary</code>.
|
||||||
|
*
|
||||||
|
* <p>For how pkl-binary turns Java, see {@link Value}.
|
||||||
|
*/
|
||||||
|
public class PklBinaryDecoder extends AbstractPklBinaryDecoder {
|
||||||
|
|
||||||
|
private PklBinaryDecoder(MessageUnpacker unpacker) {
|
||||||
|
super(unpacker);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Decode a value from the supplied byte array. */
|
||||||
|
public static Object decode(byte[] bytes) {
|
||||||
|
return new PklBinaryDecoder(MessagePack.newDefaultUnpacker(bytes)).decode();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Decode a value from the supplied {@link InputStream}. */
|
||||||
|
public static Object decode(InputStream inputStream) {
|
||||||
|
return new PklBinaryDecoder(MessagePack.newDefaultUnpacker(inputStream)).decode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RuntimeException doFail(Exception cause, long offset, List<String> path) {
|
||||||
|
return new RuntimeException(
|
||||||
|
String.format(
|
||||||
|
"Exception while decoding binary data at offset %d, path [%s]",
|
||||||
|
offset, String.join(", ", path)),
|
||||||
|
cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RuntimeException doIOFail(IOException cause) {
|
||||||
|
return new UncheckedIOException("IO exception during decoding", cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeNull() {
|
||||||
|
return PNull.getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeDuration(double value, DurationUnit unit) {
|
||||||
|
return new Duration(value, unit);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeObject(
|
||||||
|
String className, URI moduleUri, DecodeIterator<DecodedObjectMember> iter) {
|
||||||
|
var properties = CollectionUtils.<String, Object>newLinkedHashMap(iter.getSize());
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
var member = iter.next();
|
||||||
|
properties.put(member.key().toString(), member.value());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (moduleUri.equals(PClassInfo.pklBaseUri)) {
|
||||||
|
// dynamic
|
||||||
|
if (className.equals(BaseModule.getDynamicClass().getDisplayName())) {
|
||||||
|
return new PObject(PClassInfo.Dynamic, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
// pkl:base typed
|
||||||
|
if (!className.equals(BaseModule.getModule().getVmClass().getDisplayName())) {
|
||||||
|
return new PObject(PClassInfo.get("pkl.base", className, moduleUri), properties);
|
||||||
|
}
|
||||||
|
// fall through to module case
|
||||||
|
}
|
||||||
|
|
||||||
|
// module
|
||||||
|
var hashIndex = className.lastIndexOf("#");
|
||||||
|
if (hashIndex < 0) {
|
||||||
|
return new PModule(
|
||||||
|
moduleUri, className, PClassInfo.get(className, "ModuleClass", moduleUri), properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
// non-pkl:base class
|
||||||
|
return new PObject(
|
||||||
|
PClassInfo.get(
|
||||||
|
className.substring(0, hashIndex), className.substring(hashIndex + 1), moduleUri),
|
||||||
|
properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeMap(MapDecodeIterator iter) {
|
||||||
|
var map = CollectionUtils.newLinkedHashMap(iter.getSize());
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
var entry = iter.next();
|
||||||
|
map.put(entry.getFirst(), entry.getSecond());
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeMapping(MapDecodeIterator iter) {
|
||||||
|
return doDecodeMap(iter); // same exported result!
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeList(CollectionDecodeIterator iter) {
|
||||||
|
var listing = new ArrayList<>(iter.getSize());
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
listing.add(iter.next());
|
||||||
|
}
|
||||||
|
return listing;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeListing(CollectionDecodeIterator iter) {
|
||||||
|
return doDecodeList(iter); // same exported result!
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeSet(CollectionDecodeIterator iter) {
|
||||||
|
var set = CollectionUtils.newLinkedHashSet(iter.getSize());
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
set.add(iter.next());
|
||||||
|
}
|
||||||
|
return set;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeDataSize(double value, DataSizeUnit unit) {
|
||||||
|
return new DataSize(value, unit);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodePair(Object first, Object second) {
|
||||||
|
return new Pair<>(first, second);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeIntSeq(long start, long end, long step) {
|
||||||
|
throw new DecodeException("Cannot decode IntSeq value");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeRegex(Pattern pattern) {
|
||||||
|
return pattern;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeClass(String qualifiedName, URI moduleUri) {
|
||||||
|
throw new DecodeException("Cannot decode Class value");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeTypeAlias(String qualifiedName, URI moduleUri) {
|
||||||
|
throw new DecodeException("Cannot decode TypeAlias value");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doDecodeBytes(byte[] bytes) {
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -145,17 +145,17 @@ public final class SecurityManagers {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkResolveModule(URI uri) throws SecurityManagerException {
|
public void checkResolveModule(URI uri) throws SecurityManagerException {
|
||||||
checkRead(uri, allowedModules, "moduleNotInAllowList");
|
checkRead(uri, allowedModules, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkResolveResource(URI resource) throws SecurityManagerException {
|
public void checkResolveResource(URI resource) throws SecurityManagerException {
|
||||||
checkRead(resource, allowedResources, "resourceNotInAllowList");
|
checkRead(resource, allowedResources, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkReadResource(URI uri) throws SecurityManagerException {
|
public void checkReadResource(URI uri) throws SecurityManagerException {
|
||||||
checkRead(uri, allowedResources, "resourceNotInAllowList");
|
checkRead(uri, allowedResources, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -185,21 +185,21 @@ public final class SecurityManagers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkRead(URI uri, List<Pattern> allowedPatterns, String errorMessageKey)
|
private void checkRead(URI uri, List<Pattern> allowedPatterns, boolean isResource)
|
||||||
throws SecurityManagerException {
|
throws SecurityManagerException {
|
||||||
for (var pattern : allowedPatterns) {
|
for (var pattern : allowedPatterns) {
|
||||||
if (pattern.matcher(uri.toString()).lookingAt()) {
|
if (pattern.matcher(uri.toString()).lookingAt()) {
|
||||||
checkIsUnderRootDir(uri, errorMessageKey);
|
checkIsUnderRootDir(uri, isResource);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var message = ErrorMessages.create(errorMessageKey, uri);
|
var messageKey = isResource ? "resourceNotInAllowList" : "moduleNotInAllowList";
|
||||||
|
var message = ErrorMessages.create(messageKey, uri);
|
||||||
throw new SecurityManagerException(message);
|
throw new SecurityManagerException(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkIsUnderRootDir(URI uri, String errorMessageKey)
|
private void checkIsUnderRootDir(URI uri, boolean isResource) throws SecurityManagerException {
|
||||||
throws SecurityManagerException {
|
|
||||||
if (!uri.isAbsolute()) {
|
if (!uri.isAbsolute()) {
|
||||||
throw new AssertionError("Expected absolute URI but got: " + uri);
|
throw new AssertionError("Expected absolute URI but got: " + uri);
|
||||||
}
|
}
|
||||||
@@ -220,7 +220,8 @@ public final class SecurityManagers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!path.startsWith(rootDir)) {
|
if (!path.startsWith(rootDir)) {
|
||||||
var message = ErrorMessages.create(errorMessageKey, uri);
|
var errorMessageKey = isResource ? "resourcePastRootDir" : "modulePastRootDir";
|
||||||
|
var message = ErrorMessages.create(errorMessageKey, uri, rootDir);
|
||||||
throw new SecurityManagerException(message);
|
throw new SecurityManagerException(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -53,7 +53,7 @@ public final class TypeAlias extends Member implements Value {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the name of the module that this type alias is declared in. Note that a module name is
|
* Returns the name of the module that this type alias is declared in. Note that a module name is
|
||||||
* not guaranteed to be unique, especially if it not declared but inferred from the module URI.
|
* not guaranteed to be unique, especially if it is not declared but inferred from the module URI.
|
||||||
*/
|
*/
|
||||||
public String getModuleName() {
|
public String getModuleName() {
|
||||||
return moduleName;
|
return moduleName;
|
||||||
|
|||||||
@@ -153,8 +153,7 @@ final class YamlRenderer implements ValueRenderer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitBytes(byte[] value) {
|
public void visitBytes(byte[] value) {
|
||||||
throw new RendererException(
|
emitter.emit(YamlUtils.bytesScalar(value));
|
||||||
String.format("Values of type `Bytes` cannot be rendered as YAML. Value: %s", value));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -18,13 +18,18 @@ package org.pkl.core.ast.expression.unary;
|
|||||||
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
|
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
|
||||||
import com.oracle.truffle.api.frame.VirtualFrame;
|
import com.oracle.truffle.api.frame.VirtualFrame;
|
||||||
import com.oracle.truffle.api.source.SourceSection;
|
import com.oracle.truffle.api.source.SourceSection;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import org.pkl.core.ast.ExpressionNode;
|
import org.pkl.core.ast.ExpressionNode;
|
||||||
import org.pkl.core.runtime.*;
|
import org.pkl.core.runtime.*;
|
||||||
|
|
||||||
public final class TraceNode extends ExpressionNode {
|
public final class TraceNode extends ExpressionNode {
|
||||||
@Child private ExpressionNode valueNode;
|
@Child private ExpressionNode valueNode;
|
||||||
|
|
||||||
private final VmValueRenderer renderer = VmValueRenderer.singleLine(1000000);
|
private static final int MAX_RENDERER_LENGTH = 1000000;
|
||||||
|
|
||||||
|
private final VmValueRenderer compactRenderer = VmValueRenderer.singleLine(MAX_RENDERER_LENGTH);
|
||||||
|
private final VmValueRenderer prettyRenderer = VmValueRenderer.multiLine(Integer.MAX_VALUE);
|
||||||
|
|
||||||
public TraceNode(SourceSection sourceSection, ExpressionNode valueNode) {
|
public TraceNode(SourceSection sourceSection, ExpressionNode valueNode) {
|
||||||
super(sourceSection);
|
super(sourceSection);
|
||||||
@@ -40,20 +45,23 @@ public final class TraceNode extends ExpressionNode {
|
|||||||
|
|
||||||
@TruffleBoundary
|
@TruffleBoundary
|
||||||
private void doTrace(Object value, VmContext context) {
|
private void doTrace(Object value, VmContext context) {
|
||||||
if (value instanceof VmObjectLike objectLike) {
|
VmValue.force(value, true);
|
||||||
try {
|
|
||||||
objectLike.force(true, true);
|
|
||||||
} catch (VmException ignored) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var sourceSection = valueNode.getSourceSection();
|
var sourceSection = valueNode.getSourceSection();
|
||||||
var renderedValue = renderer.render(value);
|
var lhs = sourceSection.isAvailable() ? sourceSection.getCharacters().toString() : "<value>";
|
||||||
var message =
|
var message =
|
||||||
(sourceSection.isAvailable() ? sourceSection.getCharacters() : "<value")
|
switch (context.getTraceMode()) {
|
||||||
+ " = "
|
case COMPACT -> lhs + " = " + compactRenderer.render(value);
|
||||||
+ renderedValue;
|
case PRETTY -> {
|
||||||
|
var rhs = prettyRenderer.render(value);
|
||||||
|
yield (lhs.contains("\n") ? "\n" + addIndent(lhs, " ") + "\n=" : lhs + " =")
|
||||||
|
+ (rhs.contains("\n") ? "\n" + addIndent(rhs, " ") : " " + rhs)
|
||||||
|
+ "\n";
|
||||||
|
}
|
||||||
|
};
|
||||||
context.getLogger().trace(message, VmUtils.createStackFrame(sourceSection, null));
|
context.getLogger().trace(message, VmUtils.createStackFrame(sourceSection, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String addIndent(String s, String indent) {
|
||||||
|
return Arrays.stream(s.split("\n")).map((it) -> indent + it).collect(Collectors.joining("\n"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
package org.pkl.core.ast.member;
|
package org.pkl.core.ast.member;
|
||||||
|
|
||||||
import com.oracle.truffle.api.source.SourceSection;
|
import com.oracle.truffle.api.source.SourceSection;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.pkl.core.Member.SourceLocation;
|
import org.pkl.core.Member.SourceLocation;
|
||||||
import org.pkl.core.PClass;
|
import org.pkl.core.PClass;
|
||||||
@@ -67,8 +68,44 @@ public final class ClassProperty extends ClassMember {
|
|||||||
return name.toString();
|
return name.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public VmTyped getMirror() {
|
public static final class Mirror {
|
||||||
return MirrorFactories.propertyFactory.create(this);
|
private final ClassProperty prop;
|
||||||
|
private final VmClass clazz;
|
||||||
|
|
||||||
|
Mirror(ClassProperty prop, VmClass clazz) {
|
||||||
|
this.prop = prop;
|
||||||
|
this.clazz = clazz;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClassProperty getProperty() {
|
||||||
|
return prop;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<VmTyped> getAllAnnotations() {
|
||||||
|
var annotations = new ArrayList<VmTyped>();
|
||||||
|
for (var klazz = clazz; klazz != null; klazz = klazz.getSuperclass()) {
|
||||||
|
var p = klazz.getDeclaredProperty(prop.getName());
|
||||||
|
if (p != null) {
|
||||||
|
annotations.addAll(p.getAnnotations());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return annotations;
|
||||||
|
}
|
||||||
|
|
||||||
|
public VmSet getAllModifierMirrors() {
|
||||||
|
var mods = 0;
|
||||||
|
for (var klazz = clazz; klazz != null; klazz = klazz.getSuperclass()) {
|
||||||
|
var parent = klazz.getDeclaredProperty(prop.getName());
|
||||||
|
if (parent != null) {
|
||||||
|
mods |= parent.getModifiers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return VmModifier.getMirrors(mods, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public VmTyped getMirror(VmClass clazz) {
|
||||||
|
return MirrorFactories.propertyFactory.create(new Mirror(this, clazz));
|
||||||
}
|
}
|
||||||
|
|
||||||
public VmSet getModifierMirrors() {
|
public VmSet getModifierMirrors() {
|
||||||
|
|||||||
@@ -50,7 +50,8 @@ public record PklEvaluatorSettings(
|
|||||||
@Nullable Path rootDir,
|
@Nullable Path rootDir,
|
||||||
@Nullable Http http,
|
@Nullable Http http,
|
||||||
@Nullable Map<String, ExternalReader> externalModuleReaders,
|
@Nullable Map<String, ExternalReader> externalModuleReaders,
|
||||||
@Nullable Map<String, ExternalReader> externalResourceReaders) {
|
@Nullable Map<String, ExternalReader> externalResourceReaders,
|
||||||
|
@Nullable TraceMode traceMode) {
|
||||||
|
|
||||||
/** Initializes a {@link PklEvaluatorSettings} from a raw object representation. */
|
/** Initializes a {@link PklEvaluatorSettings} from a raw object representation. */
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@@ -106,6 +107,7 @@ public record PklEvaluatorSettings(
|
|||||||
Entry::getKey, entry -> ExternalReader.parse(entry.getValue())));
|
Entry::getKey, entry -> ExternalReader.parse(entry.getValue())));
|
||||||
|
|
||||||
var color = (String) pSettings.get("color");
|
var color = (String) pSettings.get("color");
|
||||||
|
var traceMode = (String) pSettings.get("traceMode");
|
||||||
|
|
||||||
return new PklEvaluatorSettings(
|
return new PklEvaluatorSettings(
|
||||||
(Map<String, String>) pSettings.get("externalProperties"),
|
(Map<String, String>) pSettings.get("externalProperties"),
|
||||||
@@ -120,7 +122,8 @@ public record PklEvaluatorSettings(
|
|||||||
rootDir,
|
rootDir,
|
||||||
Http.parse((Value) pSettings.get("http")),
|
Http.parse((Value) pSettings.get("http")),
|
||||||
externalModuleReaders,
|
externalModuleReaders,
|
||||||
externalResourceReaders);
|
externalResourceReaders,
|
||||||
|
traceMode == null ? null : TraceMode.valueOf(traceMode.toUpperCase()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public record Http(@Nullable Proxy proxy, @Nullable Map<URI, URI> rewrites) {
|
public record Http(@Nullable Proxy proxy, @Nullable Map<URI, URI> rewrites) {
|
||||||
@@ -231,7 +234,8 @@ public record PklEvaluatorSettings(
|
|||||||
&& Objects.equals(moduleCacheDir, that.moduleCacheDir)
|
&& Objects.equals(moduleCacheDir, that.moduleCacheDir)
|
||||||
&& Objects.equals(timeout, that.timeout)
|
&& Objects.equals(timeout, that.timeout)
|
||||||
&& Objects.equals(rootDir, that.rootDir)
|
&& Objects.equals(rootDir, that.rootDir)
|
||||||
&& Objects.equals(http, that.http);
|
&& Objects.equals(http, that.http)
|
||||||
|
&& Objects.equals(traceMode, that.traceMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int hashPatterns(@Nullable List<Pattern> patterns) {
|
private int hashPatterns(@Nullable List<Pattern> patterns) {
|
||||||
@@ -249,7 +253,15 @@ public record PklEvaluatorSettings(
|
|||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
var result =
|
var result =
|
||||||
Objects.hash(
|
Objects.hash(
|
||||||
externalProperties, env, color, noCache, moduleCacheDir, timeout, rootDir, http);
|
externalProperties,
|
||||||
|
env,
|
||||||
|
color,
|
||||||
|
noCache,
|
||||||
|
moduleCacheDir,
|
||||||
|
timeout,
|
||||||
|
rootDir,
|
||||||
|
http,
|
||||||
|
traceMode);
|
||||||
result = 31 * result + hashPatterns(allowedModules);
|
result = 31 * result + hashPatterns(allowedModules);
|
||||||
result = 31 * result + hashPatterns(allowedResources);
|
result = 31 * result + hashPatterns(allowedResources);
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.pkl.core.evaluatorSettings;
|
||||||
|
|
||||||
|
/** Dictates the rendering of calls to the trace() method within Pkl. */
|
||||||
|
public enum TraceMode {
|
||||||
|
/** All structures passed to trace() will be emitted on a single line. */
|
||||||
|
COMPACT,
|
||||||
|
/** All structures passed to trace() will be indented and emitted across multiple lines. */
|
||||||
|
PRETTY
|
||||||
|
}
|
||||||
@@ -79,7 +79,8 @@ public abstract class AbstractMessagePackEncoder implements MessageEncoder {
|
|||||||
@Nullable Object valueC,
|
@Nullable Object valueC,
|
||||||
@Nullable Object valueD,
|
@Nullable Object valueD,
|
||||||
@Nullable Object valueE,
|
@Nullable Object valueE,
|
||||||
@Nullable Object valueF)
|
@Nullable Object valueF,
|
||||||
|
@Nullable Object valueG)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
packer.packMapHeader(
|
packer.packMapHeader(
|
||||||
size
|
size
|
||||||
@@ -97,7 +98,8 @@ public abstract class AbstractMessagePackEncoder implements MessageEncoder {
|
|||||||
+ (valueC != null ? 1 : 0)
|
+ (valueC != null ? 1 : 0)
|
||||||
+ (valueD != null ? 1 : 0)
|
+ (valueD != null ? 1 : 0)
|
||||||
+ (valueE != null ? 1 : 0)
|
+ (valueE != null ? 1 : 0)
|
||||||
+ (valueF != null ? 1 : 0));
|
+ (valueF != null ? 1 : 0)
|
||||||
|
+ (valueG != null ? 1 : 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void packKeyValue(String name, @Nullable Integer value) throws IOException {
|
protected void packKeyValue(String name, @Nullable Integer value) throws IOException {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -43,6 +43,7 @@ import org.pkl.core.StackFrameTransformers;
|
|||||||
import org.pkl.core.Value;
|
import org.pkl.core.Value;
|
||||||
import org.pkl.core.Version;
|
import org.pkl.core.Version;
|
||||||
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings;
|
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings;
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode;
|
||||||
import org.pkl.core.module.ModuleKeyFactories;
|
import org.pkl.core.module.ModuleKeyFactories;
|
||||||
import org.pkl.core.packages.Checksums;
|
import org.pkl.core.packages.Checksums;
|
||||||
import org.pkl.core.packages.Dependency.RemoteDependency;
|
import org.pkl.core.packages.Dependency.RemoteDependency;
|
||||||
@@ -197,7 +198,8 @@ public final class Project {
|
|||||||
builder.getModuleKeyFactories(),
|
builder.getModuleKeyFactories(),
|
||||||
builder.getModuleCacheDir(),
|
builder.getModuleCacheDir(),
|
||||||
builder.getProjectDependencies(),
|
builder.getProjectDependencies(),
|
||||||
builder.getHttpClient());
|
builder.getHttpClient(),
|
||||||
|
builder.getTraceMode());
|
||||||
var importGraph = analyzer.importGraph(moduleSource.getUri());
|
var importGraph = analyzer.importGraph(moduleSource.getUri());
|
||||||
var ret = ImportGraphUtils.findImportCycles(importGraph);
|
var ret = ImportGraphUtils.findImportCycles(importGraph);
|
||||||
// we only care about cycles in the same scheme as `moduleSource`
|
// we only care about cycles in the same scheme as `moduleSource`
|
||||||
@@ -511,7 +513,8 @@ public final class Project {
|
|||||||
@Nullable Path moduleCacheDir,
|
@Nullable Path moduleCacheDir,
|
||||||
@Nullable List<Path> modulePath,
|
@Nullable List<Path> modulePath,
|
||||||
@Nullable Duration timeout,
|
@Nullable Duration timeout,
|
||||||
@Nullable Path rootDir) {
|
@Nullable Path rootDir,
|
||||||
|
@Nullable TraceMode traceMode) {
|
||||||
this.delegate =
|
this.delegate =
|
||||||
new PklEvaluatorSettings(
|
new PklEvaluatorSettings(
|
||||||
externalProperties,
|
externalProperties,
|
||||||
@@ -526,7 +529,8 @@ public final class Project {
|
|||||||
rootDir,
|
rootDir,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null);
|
null,
|
||||||
|
traceMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated(forRemoval = true)
|
@Deprecated(forRemoval = true)
|
||||||
@@ -610,6 +614,8 @@ public final class Project {
|
|||||||
+ delegate.timeout()
|
+ delegate.timeout()
|
||||||
+ ", rootDir="
|
+ ", rootDir="
|
||||||
+ delegate.rootDir()
|
+ delegate.rootDir()
|
||||||
|
+ ", traceMode="
|
||||||
|
+ delegate.traceMode()
|
||||||
+ '}';
|
+ '}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import org.pkl.core.ast.builder.AstBuilder;
|
|||||||
import org.pkl.core.ast.member.*;
|
import org.pkl.core.ast.member.*;
|
||||||
import org.pkl.core.ast.repl.ResolveClassMemberNode;
|
import org.pkl.core.ast.repl.ResolveClassMemberNode;
|
||||||
import org.pkl.core.ast.type.TypeNode;
|
import org.pkl.core.ast.type.TypeNode;
|
||||||
|
import org.pkl.core.evaluatorSettings.TraceMode;
|
||||||
import org.pkl.core.http.HttpClient;
|
import org.pkl.core.http.HttpClient;
|
||||||
import org.pkl.core.module.*;
|
import org.pkl.core.module.*;
|
||||||
import org.pkl.core.packages.PackageResolver;
|
import org.pkl.core.packages.PackageResolver;
|
||||||
@@ -82,7 +83,8 @@ public class ReplServer implements AutoCloseable {
|
|||||||
@Nullable String outputFormat,
|
@Nullable String outputFormat,
|
||||||
Path workingDir,
|
Path workingDir,
|
||||||
StackFrameTransformer frameTransformer,
|
StackFrameTransformer frameTransformer,
|
||||||
boolean color) {
|
boolean color,
|
||||||
|
TraceMode traceMode) {
|
||||||
|
|
||||||
this.workingDir = workingDir;
|
this.workingDir = workingDir;
|
||||||
this.securityManager = securityManager;
|
this.securityManager = securityManager;
|
||||||
@@ -114,7 +116,8 @@ public class ReplServer implements AutoCloseable {
|
|||||||
moduleCacheDir,
|
moduleCacheDir,
|
||||||
outputFormat,
|
outputFormat,
|
||||||
packageResolver,
|
packageResolver,
|
||||||
projectDependenciesManager));
|
projectDependenciesManager,
|
||||||
|
traceMode));
|
||||||
});
|
});
|
||||||
language = languageRef.get();
|
language = languageRef.get();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,6 +143,9 @@ public final class Identifier implements Comparable<Identifier> {
|
|||||||
// members of pkl.yaml
|
// members of pkl.yaml
|
||||||
public static final Identifier MAX_COLLECTION_ALIASES = get("maxCollectionAliases");
|
public static final Identifier MAX_COLLECTION_ALIASES = get("maxCollectionAliases");
|
||||||
|
|
||||||
|
// members of pkl.encoding
|
||||||
|
public static final Identifier IMPORTS = get("imports");
|
||||||
|
|
||||||
// common in lambdas etc
|
// common in lambdas etc
|
||||||
public static final Identifier IT = get("it");
|
public static final Identifier IT = get("it");
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -37,7 +37,7 @@ public final class MirrorFactories {
|
|||||||
public static final VmObjectFactory<VmTypeAlias> typeAliasFactory =
|
public static final VmObjectFactory<VmTypeAlias> typeAliasFactory =
|
||||||
new VmObjectFactory<>(ReflectModule::getTypeAliasClass);
|
new VmObjectFactory<>(ReflectModule::getTypeAliasClass);
|
||||||
|
|
||||||
public static final VmObjectFactory<ClassProperty> propertyFactory =
|
public static final VmObjectFactory<ClassProperty.Mirror> propertyFactory =
|
||||||
new VmObjectFactory<>(ReflectModule::getPropertyClass);
|
new VmObjectFactory<>(ReflectModule::getPropertyClass);
|
||||||
|
|
||||||
public static final VmObjectFactory<ClassMethod> methodFactory =
|
public static final VmObjectFactory<ClassMethod> methodFactory =
|
||||||
@@ -146,8 +146,10 @@ public final class MirrorFactories {
|
|||||||
.addProperty("superclass", VmClass::getSuperclassMirror)
|
.addProperty("superclass", VmClass::getSuperclassMirror)
|
||||||
.addProperty("supertype", VmClass::getSupertypeMirror)
|
.addProperty("supertype", VmClass::getSupertypeMirror)
|
||||||
.addMapProperty("properties", VmClass::getPropertyMirrors)
|
.addMapProperty("properties", VmClass::getPropertyMirrors)
|
||||||
|
.addMapProperty("allProperties", VmClass::getAllPropertyMirrors)
|
||||||
.addTypedProperty("enclosingDeclaration", VmClass::getModuleMirror)
|
.addTypedProperty("enclosingDeclaration", VmClass::getModuleMirror)
|
||||||
.addMapProperty("methods", VmClass::getMethodMirrors);
|
.addMapProperty("methods", VmClass::getMethodMirrors)
|
||||||
|
.addMapProperty("allMethods", VmClass::getAllMethodMirrors);
|
||||||
|
|
||||||
typeAliasFactory
|
typeAliasFactory
|
||||||
.addTypedProperty(
|
.addTypedProperty(
|
||||||
@@ -164,24 +166,30 @@ public final class MirrorFactories {
|
|||||||
|
|
||||||
propertyFactory
|
propertyFactory
|
||||||
.addTypedProperty(
|
.addTypedProperty(
|
||||||
"location", property -> sourceLocationFactory.create(property.getHeaderSection()))
|
"location",
|
||||||
|
property -> sourceLocationFactory.create(property.getProperty().getHeaderSection()))
|
||||||
.addProperty(
|
.addProperty(
|
||||||
"docComment",
|
"docComment",
|
||||||
property -> VmNull.lift(VmUtils.exportDocComment(property.getDocComment())))
|
property ->
|
||||||
.addListProperty("annotations", property -> VmList.create(property.getAnnotations()))
|
VmNull.lift(VmUtils.exportDocComment(property.getProperty().getDocComment())))
|
||||||
.addSetProperty("modifiers", ClassProperty::getModifierMirrors)
|
.addListProperty(
|
||||||
.addStringProperty("name", property -> property.getName().toString())
|
"annotations", property -> VmList.create(property.getProperty().getAnnotations()))
|
||||||
.addTypedProperty("type", ClassProperty::getTypeMirror)
|
.addListProperty("allAnnotations", property -> VmList.create(property.getAllAnnotations()))
|
||||||
|
.addSetProperty("modifiers", property -> property.getProperty().getModifierMirrors())
|
||||||
|
.addSetProperty("allModifiers", ClassProperty.Mirror::getAllModifierMirrors)
|
||||||
|
.addStringProperty("name", property -> property.getProperty().getName().toString())
|
||||||
|
.addTypedProperty("type", property -> property.getProperty().getTypeMirror())
|
||||||
.addProperty(
|
.addProperty(
|
||||||
"defaultValue",
|
"defaultValue",
|
||||||
property ->
|
property ->
|
||||||
property.isAbstract()
|
property.getProperty().isAbstract()
|
||||||
|| property.isExternal()
|
|| property.getProperty().isExternal()
|
||||||
|| property.getInitializer().isUndefined()
|
|| property.getProperty().getInitializer().isUndefined()
|
||||||
? VmNull.withoutDefault()
|
? VmNull.withoutDefault()
|
||||||
:
|
:
|
||||||
// get default from prototype because it's cached there
|
// get default from prototype because it's cached there
|
||||||
VmUtils.readMember(property.getOwner(), property.getName()));
|
VmUtils.readMember(
|
||||||
|
property.getProperty().getOwner(), property.getProperty().getName()));
|
||||||
|
|
||||||
methodFactory
|
methodFactory
|
||||||
.addTypedProperty(
|
.addTypedProperty(
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -92,6 +92,8 @@ public final class ModuleCache {
|
|||||||
return BaseModule.getModule();
|
return BaseModule.getModule();
|
||||||
case "Benchmark":
|
case "Benchmark":
|
||||||
return BenchmarkModule.getModule();
|
return BenchmarkModule.getModule();
|
||||||
|
case "pklbinary":
|
||||||
|
return PklBinaryModule.getModule();
|
||||||
case "jsonnet":
|
case "jsonnet":
|
||||||
return JsonnetModule.getModule();
|
return JsonnetModule.getModule();
|
||||||
case "math":
|
case "math":
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.pkl.core.runtime;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
public class PklBinaryModule extends StdLibModule {
|
||||||
|
private static final VmTyped instance = VmUtils.createEmptyModule();
|
||||||
|
|
||||||
|
static {
|
||||||
|
loadModule(URI.create("pkl:pklbinary"), instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static VmTyped getModule() {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user