mirror of
https://github.com/apple/pkl.git
synced 2026-07-12 16:12:42 +02:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4aa2cd0fc1 |
@@ -1,4 +1,2 @@
|
|||||||
# Auto-format Kotlin code
|
# Auto-format Kotlin code
|
||||||
816cd483c8adf4c04e14236c173a1dc6bd2579ea
|
816cd483c8adf4c04e14236c173a1dc6bd2579ea
|
||||||
# Format Kotlin code again
|
|
||||||
2b3603b544bae2ad87374b65afaf8ac018216261
|
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ amends "pkl:Project"
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
["pkl.impl.ghactions"] {
|
["pkl.impl.ghactions"] {
|
||||||
uri = "package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1.8.2"
|
uri = "package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1.6.0"
|
||||||
}
|
}
|
||||||
["gha"] {
|
["gha"] {
|
||||||
uri = "package://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1.4.0"
|
uri = "package://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1.4.0"
|
||||||
|
|||||||
@@ -3,37 +3,37 @@
|
|||||||
"resolvedDependencies": {
|
"resolvedDependencies": {
|
||||||
"package://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1": {
|
"package://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1": {
|
||||||
"type": "remote",
|
"type": "remote",
|
||||||
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1.9.0",
|
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1.4.0",
|
||||||
"checksums": {
|
"checksums": {
|
||||||
"sha256": "5947924cf94fae9d8cdca42ade3f86db2675842cab7254214e7c0e281ddb6908"
|
"sha256": "e0b9a9f71071d6101e9d764c069b2ec4a597d5315cb6e4c265b3f0d90c2b482c"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1": {
|
"package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1": {
|
||||||
"type": "remote",
|
"type": "remote",
|
||||||
"uri": "projectpackage://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1.8.2",
|
"uri": "projectpackage://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1.6.0",
|
||||||
"checksums": {
|
"checksums": {
|
||||||
"sha256": "12cca6326806ec37abc790a6707b6d907b4f8ba97628f2bc7fb327b5a6f68b49"
|
"sha256": "fbc3c456ea468a0fe6baa9b3d30167259ac04e721a41a10fe82d2970026f0b1d"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"package://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.deepToTyped@1": {
|
"package://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.deepToTyped@1": {
|
||||||
"type": "remote",
|
"type": "remote",
|
||||||
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.deepToTyped@1.2.1",
|
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.deepToTyped@1.2.0",
|
||||||
"checksums": {
|
"checksums": {
|
||||||
"sha256": "6e752d1e84aff24c3a1801658f27f12af70840c39b3fe7bac509c8178d566d25"
|
"sha256": "84c7feb391f4ac273a99dc89b8fd51dbcd21dbda4ce640f6908527f83acdd4d6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"package://pkg.pkl-lang.org/pkl-pantry/pkl.github.dependabotManagedActions@1": {
|
"package://pkg.pkl-lang.org/pkl-pantry/pkl.github.dependabotManagedActions@1": {
|
||||||
"type": "remote",
|
"type": "remote",
|
||||||
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/pkl.github.dependabotManagedActions@1.1.9",
|
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/pkl.github.dependabotManagedActions@1.1.0",
|
||||||
"checksums": {
|
"checksums": {
|
||||||
"sha256": "467b91559f31ad7401c78d3df9569b5ec7aa4e1b49209f9f22d02bd72971e0bd"
|
"sha256": "025fac778f2c5f75c8229fa4ec0f49ebdb99a61affe9aae489fefd8fccd92faa"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"package://pkg.pkl-lang.org/pkl-pantry/com.github.dependabot@1": {
|
"package://pkg.pkl-lang.org/pkl-pantry/com.github.dependabot@1": {
|
||||||
"type": "remote",
|
"type": "remote",
|
||||||
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/com.github.dependabot@1.0.4",
|
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/com.github.dependabot@1.0.1",
|
||||||
"checksums": {
|
"checksums": {
|
||||||
"sha256": "c7391119f946d7761d0ca0cc358ed8fe2bdfc691411087ccac89637bd96fec4a"
|
"sha256": "0a4fe9b0983716ec49fb060b9e5e83f8c365eb899d517123b43134416a9574b6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
amends "@gha/Workflow.pkl"
|
||||||
|
|
||||||
|
import "@gha/catalog.pkl"
|
||||||
|
|
||||||
|
on {
|
||||||
|
push {
|
||||||
|
branches {
|
||||||
|
"main"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pull_request {}
|
||||||
|
schedule {
|
||||||
|
// Run at 01:38 on Saturday
|
||||||
|
new { cron = "38 1 * * 6" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
local class CodeQLScan {
|
||||||
|
language: String
|
||||||
|
|
||||||
|
`build-mode`: String
|
||||||
|
}
|
||||||
|
|
||||||
|
local scans: Listing<CodeQLScan> = new {
|
||||||
|
new {
|
||||||
|
language = "actions"
|
||||||
|
`build-mode` = "none"
|
||||||
|
}
|
||||||
|
new {
|
||||||
|
language = "java-kotlin"
|
||||||
|
`build-mode` = "autobuild"
|
||||||
|
}
|
||||||
|
new {
|
||||||
|
language = "javascript-typescript"
|
||||||
|
`build-mode` = "none"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jobs {
|
||||||
|
for (scan in scans) {
|
||||||
|
["analyze-\(scan.language)"] {
|
||||||
|
name = "Analyze (\(scan.language))"
|
||||||
|
`runs-on` = "ubuntu-latest"
|
||||||
|
permissions {
|
||||||
|
`security-events` = "write"
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
catalog.`actions/checkout@v6`
|
||||||
|
new {
|
||||||
|
name = "Initialize CodeQL"
|
||||||
|
uses = "github/codeql-action/init@v4"
|
||||||
|
with {
|
||||||
|
["languages"] = scan.language
|
||||||
|
["build-mode"] = scan.`build-mode`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
new {
|
||||||
|
name = "Perform CodeQL Analysis"
|
||||||
|
uses = "github/codeql-action/analyze@v4"
|
||||||
|
with {
|
||||||
|
["category"] = "/language:\(scan.language)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,16 +10,9 @@ updates:
|
|||||||
cooldown:
|
cooldown:
|
||||||
default-days: 7
|
default-days: 7
|
||||||
directory: /
|
directory: /
|
||||||
groups:
|
|
||||||
first-party:
|
|
||||||
patterns:
|
|
||||||
- actions/*
|
|
||||||
codeql:
|
|
||||||
patterns:
|
|
||||||
- github/codeql-action/*
|
|
||||||
ignore:
|
ignore:
|
||||||
- dependency-name: '*'
|
- dependency-name: '*'
|
||||||
update-types:
|
update-types:
|
||||||
- version-update:semver-major
|
- version-update:semver-major
|
||||||
schedule:
|
schedule:
|
||||||
interval: quarterly
|
interval: weekly
|
||||||
|
|||||||
+4
-11
@@ -9,6 +9,7 @@ import "jobs/GithubRelease.pkl"
|
|||||||
import "jobs/GradleJob.pkl"
|
import "jobs/GradleJob.pkl"
|
||||||
import "jobs/PklJob.pkl"
|
import "jobs/PklJob.pkl"
|
||||||
import "jobs/SimpleGradleJob.pkl"
|
import "jobs/SimpleGradleJob.pkl"
|
||||||
|
import "codeql.pkl"
|
||||||
|
|
||||||
triggerDocsBuild = "both"
|
triggerDocsBuild = "both"
|
||||||
|
|
||||||
@@ -240,15 +241,7 @@ dependabot {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
codeql {
|
workflows {
|
||||||
scans {
|
// add codeql workflow to set of workflows
|
||||||
new {
|
["workflows/codeql.yml"] = codeql
|
||||||
language = "java-kotlin"
|
|
||||||
buildMode = "autobuild"
|
|
||||||
}
|
|
||||||
new {
|
|
||||||
language = "javascript-typescript"
|
|
||||||
buildMode = "none"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ abstract module GradleJob
|
|||||||
extends "PklJob.pkl"
|
extends "PklJob.pkl"
|
||||||
|
|
||||||
import "@gha/Workflow.pkl"
|
import "@gha/Workflow.pkl"
|
||||||
import "@gha/context.pkl"
|
|
||||||
import "@pkl.impl.ghactions/catalog.pkl"
|
import "@pkl.impl.ghactions/catalog.pkl"
|
||||||
|
|
||||||
/// Whether this is a release build or not.
|
/// Whether this is a release build or not.
|
||||||
@@ -30,7 +29,8 @@ fetchDepth: Int?
|
|||||||
|
|
||||||
fixed gradleArgs =
|
fixed gradleArgs =
|
||||||
new Listing {
|
new Listing {
|
||||||
"$DEBUG_ARGS"
|
"--info"
|
||||||
|
"--stacktrace"
|
||||||
"--no-daemon"
|
"--no-daemon"
|
||||||
"-DpklMultiJdkTesting=true"
|
"-DpklMultiJdkTesting=true"
|
||||||
when (isRelease) {
|
when (isRelease) {
|
||||||
@@ -97,20 +97,6 @@ fixed job {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
new {
|
|
||||||
name = "Set DEBUG_ARGS env var"
|
|
||||||
env {
|
|
||||||
["RUNNER_DEBUG"] = context.runner.debug
|
|
||||||
}
|
|
||||||
shell = "bash"
|
|
||||||
// language=bash
|
|
||||||
run =
|
|
||||||
"""
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
"""
|
|
||||||
}
|
|
||||||
...module.steps
|
...module.steps
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+5
-5
@@ -17,23 +17,23 @@ jobs:
|
|||||||
runs-on: nothing
|
runs-on: nothing
|
||||||
steps:
|
steps:
|
||||||
- name: EnricoMi/publish-unit-test-result-action@v2
|
- name: EnricoMi/publish-unit-test-result-action@v2
|
||||||
uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
|
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2
|
||||||
- name: actions/checkout@v6
|
- name: actions/checkout@v6
|
||||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
- name: actions/create-github-app-token@v2
|
- name: actions/create-github-app-token@v2
|
||||||
uses: actions/create-github-app-token@fee1f7d63c2ff003460e3d139729b119787bc349 # v2
|
uses: actions/create-github-app-token@fee1f7d63c2ff003460e3d139729b119787bc349 # v2
|
||||||
- name: actions/download-artifact@v6
|
- name: actions/download-artifact@v6
|
||||||
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
|
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
|
||||||
- name: actions/setup-java@v5
|
- name: actions/setup-java@v5
|
||||||
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
- name: actions/upload-artifact@v5
|
- name: actions/upload-artifact@v5
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
- name: dawidd6/action-download-artifact@v11
|
- name: dawidd6/action-download-artifact@v11
|
||||||
uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11
|
uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11
|
||||||
- name: github/codeql-action/analyze@v4
|
- name: github/codeql-action/analyze@v4
|
||||||
uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
|
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
|
||||||
- name: github/codeql-action/init@v4
|
- name: github/codeql-action/init@v4
|
||||||
uses: github/codeql-action/init@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
|
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
|
||||||
- name: gradle/actions/dependency-submission@v6
|
- name: gradle/actions/dependency-submission@v6
|
||||||
uses: gradle/actions/dependency-submission@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6
|
uses: gradle/actions/dependency-submission@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6
|
||||||
- name: gradle/actions/setup-gradle@v5
|
- name: gradle/actions/setup-gradle@v5
|
||||||
|
|||||||
Generated
+53
-189
@@ -19,28 +19,20 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: check
|
- name: check
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -60,28 +52,20 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: check
|
- name: check
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -100,54 +84,38 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: bench:jmh
|
- name: bench:jmh
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true bench:jmh
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true bench:jmh
|
||||||
gradle-compatibility:
|
gradle-compatibility:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -166,31 +134,23 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: gradle build java executables
|
- name: gradle build java executables
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -217,27 +177,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -263,29 +215,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -314,27 +258,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -360,29 +296,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -408,24 +336,16 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Install musl and zlib
|
- name: Install musl and zlib
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
@@ -501,7 +421,7 @@ jobs:
|
|||||||
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -526,27 +446,19 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -573,27 +485,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -619,29 +523,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -670,27 +566,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -716,29 +604,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -764,24 +644,16 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Install musl and zlib
|
- name: Install musl and zlib
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
@@ -857,7 +729,7 @@ jobs:
|
|||||||
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -882,27 +754,19 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -949,7 +813,7 @@ jobs:
|
|||||||
pattern: test-results-xml-*
|
pattern: test-results-xml-*
|
||||||
- name: Publish test results
|
- name: Publish test results
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
|
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2
|
||||||
with:
|
with:
|
||||||
comment_mode: 'off'
|
comment_mode: 'off'
|
||||||
files: test-results-xml-*/**/*.xml
|
files: test-results-xml-*/**/*.xml
|
||||||
|
|||||||
Generated
+14
-13
@@ -1,13 +1,11 @@
|
|||||||
# Generated from Workflow.pkl. DO NOT EDIT.
|
# Generated from Workflow.pkl. DO NOT EDIT.
|
||||||
'on':
|
'on':
|
||||||
pull_request:
|
pull_request: {}
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
schedule:
|
schedule:
|
||||||
- cron: 29 17 * * 4
|
- cron: 38 1 * * 6
|
||||||
jobs:
|
jobs:
|
||||||
analyze-actions:
|
analyze-actions:
|
||||||
name: Analyze (actions)
|
name: Analyze (actions)
|
||||||
@@ -15,15 +13,16 @@ jobs:
|
|||||||
security-events: write
|
security-events: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: github/codeql-action/init@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
|
||||||
with:
|
with:
|
||||||
languages: actions
|
languages: actions
|
||||||
build-mode: none
|
build-mode: none
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
|
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
|
||||||
with:
|
with:
|
||||||
category: /language:actions
|
category: /language:actions
|
||||||
analyze-java-kotlin:
|
analyze-java-kotlin:
|
||||||
@@ -32,15 +31,16 @@ jobs:
|
|||||||
security-events: write
|
security-events: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: github/codeql-action/init@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
|
||||||
with:
|
with:
|
||||||
languages: java-kotlin
|
languages: java-kotlin
|
||||||
build-mode: autobuild
|
build-mode: autobuild
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
|
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
|
||||||
with:
|
with:
|
||||||
category: /language:java-kotlin
|
category: /language:java-kotlin
|
||||||
analyze-javascript-typescript:
|
analyze-javascript-typescript:
|
||||||
@@ -49,14 +49,15 @@ jobs:
|
|||||||
security-events: write
|
security-events: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: github/codeql-action/init@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
|
||||||
with:
|
with:
|
||||||
languages: javascript-typescript
|
languages: javascript-typescript
|
||||||
build-mode: none
|
build-mode: none
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
|
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
|
||||||
with:
|
with:
|
||||||
category: /language:javascript-typescript
|
category: /language:javascript-typescript
|
||||||
|
|||||||
Generated
+59
-203
@@ -17,28 +17,20 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: check
|
- name: check
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -58,28 +50,20 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: check
|
- name: check
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -98,54 +82,38 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: bench:jmh
|
- name: bench:jmh
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true bench:jmh
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true bench:jmh
|
||||||
gradle-compatibility:
|
gradle-compatibility:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -164,31 +132,23 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: gradle build java executables
|
- name: gradle build java executables
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -215,27 +175,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -261,29 +213,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -312,27 +256,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -358,29 +294,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -406,24 +334,16 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Install musl and zlib
|
- name: Install musl and zlib
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
@@ -499,7 +419,7 @@ jobs:
|
|||||||
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -524,27 +444,19 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -571,27 +483,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -617,29 +521,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -668,27 +564,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -714,29 +602,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -762,24 +642,16 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Install musl and zlib
|
- name: Install musl and zlib
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
@@ -855,7 +727,7 @@ jobs:
|
|||||||
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -880,27 +752,19 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -943,25 +807,17 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
environment: maven-release
|
environment: maven-release
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
|
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
|
||||||
@@ -974,16 +830,16 @@ jobs:
|
|||||||
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }}
|
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }}
|
||||||
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEPASSWORD }}
|
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEPASSWORD }}
|
||||||
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEUSERNAME }}
|
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEUSERNAME }}
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true --no-parallel publishToSonatype
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true --no-parallel publishToSonatype
|
||||||
dependency-submission:
|
dependency-submission:
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -1018,7 +874,7 @@ jobs:
|
|||||||
pattern: test-results-xml-*
|
pattern: test-results-xml-*
|
||||||
- name: Publish test results
|
- name: Publish test results
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
|
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2
|
||||||
with:
|
with:
|
||||||
comment_mode: 'off'
|
comment_mode: 'off'
|
||||||
files: test-results-xml-*/**/*.xml
|
files: test-results-xml-*/**/*.xml
|
||||||
|
|||||||
Generated
+43
-180
@@ -13,28 +13,20 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: check
|
- name: check
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -56,28 +48,20 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: check
|
- name: check
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -100,27 +84,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -148,29 +124,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -200,27 +168,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -248,29 +208,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -298,24 +250,16 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Install musl and zlib
|
- name: Install musl and zlib
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
@@ -391,7 +335,7 @@ jobs:
|
|||||||
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -418,27 +362,19 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -466,27 +402,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -514,29 +442,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -566,27 +486,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -614,29 +526,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -664,24 +568,16 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Install musl and zlib
|
- name: Install musl and zlib
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
@@ -757,7 +653,7 @@ jobs:
|
|||||||
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -784,27 +680,19 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -824,31 +712,6 @@ jobs:
|
|||||||
name: test-results-html-pkl-doc-windows-amd64-snapshot
|
name: test-results-html-pkl-doc-windows-amd64-snapshot
|
||||||
path: '**/build/reports/tests/**/*'
|
path: '**/build/reports/tests/**/*'
|
||||||
if-no-files-found: ignore
|
if-no-files-found: ignore
|
||||||
verdict:
|
|
||||||
if: always()
|
|
||||||
needs:
|
|
||||||
- check-pkl-github-actions
|
|
||||||
- gradle-check
|
|
||||||
- gradle-check-windows
|
|
||||||
- pkl-cli-macOS-amd64-snapshot
|
|
||||||
- pkl-cli-linux-amd64-snapshot
|
|
||||||
- pkl-cli-macOS-aarch64-snapshot
|
|
||||||
- pkl-cli-linux-aarch64-snapshot
|
|
||||||
- pkl-cli-alpine-linux-amd64-snapshot
|
|
||||||
- pkl-cli-windows-amd64-snapshot
|
|
||||||
- pkl-doc-macOS-amd64-snapshot
|
|
||||||
- pkl-doc-linux-amd64-snapshot
|
|
||||||
- pkl-doc-macOS-aarch64-snapshot
|
|
||||||
- pkl-doc-linux-aarch64-snapshot
|
|
||||||
- pkl-doc-alpine-linux-amd64-snapshot
|
|
||||||
- pkl-doc-windows-amd64-snapshot
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Failure verdict
|
|
||||||
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
|
|
||||||
run: |-
|
|
||||||
echo "Some of the required jobs are either failing or were cancelled"
|
|
||||||
exit 1
|
|
||||||
upload-event-file:
|
upload-event-file:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
@@ -861,7 +724,7 @@ jobs:
|
|||||||
check-pkl-github-actions:
|
check-pkl-github-actions:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Setup Pkl
|
- name: Setup Pkl
|
||||||
|
|||||||
Generated
+53
-189
@@ -17,28 +17,20 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: check
|
- name: check
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -58,28 +50,20 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: check
|
- name: check
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -98,54 +82,38 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: bench:jmh
|
- name: bench:jmh
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true bench:jmh
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true bench:jmh
|
||||||
gradle-compatibility:
|
gradle-compatibility:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -164,31 +132,23 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: gradle build java executables
|
- name: gradle build java executables
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -215,27 +175,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -261,29 +213,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -312,27 +256,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -358,29 +294,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -406,24 +334,16 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Install musl and zlib
|
- name: Install musl and zlib
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
@@ -499,7 +419,7 @@ jobs:
|
|||||||
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -524,27 +444,19 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -571,27 +483,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -617,29 +521,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -668,27 +564,19 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -714,29 +602,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -762,24 +642,16 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Install musl and zlib
|
- name: Install musl and zlib
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
@@ -855,7 +727,7 @@ jobs:
|
|||||||
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -880,27 +752,19 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -947,7 +811,7 @@ jobs:
|
|||||||
pattern: test-results-xml-*
|
pattern: test-results-xml-*
|
||||||
- name: Publish test results
|
- name: Publish test results
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
|
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2
|
||||||
with:
|
with:
|
||||||
comment_mode: 'off'
|
comment_mode: 'off'
|
||||||
files: test-results-xml-*/**/*.xml
|
files: test-results-xml-*/**/*.xml
|
||||||
|
|||||||
Generated
+57
-201
@@ -17,28 +17,20 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: check
|
- name: check
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -58,28 +50,20 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: check
|
- name: check
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -98,54 +82,38 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: bench:jmh
|
- name: bench:jmh
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true bench:jmh
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true bench:jmh
|
||||||
gradle-compatibility:
|
gradle-compatibility:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with: {}
|
with: {}
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
|
||||||
- name: Upload Test Result XML
|
- name: Upload Test Result XML
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
@@ -164,11 +132,11 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -176,20 +144,12 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: gradle build java executables
|
- name: gradle build java executables
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -216,10 +176,10 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -227,17 +187,9 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -263,10 +215,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -274,19 +226,11 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -315,10 +259,10 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -326,17 +270,9 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -362,10 +298,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -373,19 +309,11 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -411,10 +339,10 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -422,14 +350,6 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Install musl and zlib
|
- name: Install musl and zlib
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
@@ -505,7 +425,7 @@ jobs:
|
|||||||
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.musl=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.musl=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -530,10 +450,10 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -541,17 +461,9 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -578,10 +490,10 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -589,17 +501,9 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -625,10 +529,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -636,19 +540,11 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -677,10 +573,10 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -688,17 +584,9 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -724,10 +612,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -735,19 +623,11 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Fix git ownership
|
- name: Fix git ownership
|
||||||
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -773,10 +653,10 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -784,14 +664,6 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: Install musl and zlib
|
- name: Install musl and zlib
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
@@ -867,7 +739,7 @@ jobs:
|
|||||||
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.musl=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.musl=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -892,10 +764,10 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
JAVA_HOME: /jdk
|
JAVA_HOME: /jdk
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -903,17 +775,9 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- name: gradle buildNative
|
- name: gradle buildNative
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
|
||||||
- name: Upload executable artifacts
|
- name: Upload executable artifacts
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
||||||
with:
|
with:
|
||||||
@@ -956,10 +820,10 @@ jobs:
|
|||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
environment: maven-release
|
environment: maven-release
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
|
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||||
with:
|
with:
|
||||||
java-version: '25'
|
java-version: '25'
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
@@ -967,15 +831,7 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
|
||||||
with:
|
with:
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
- name: Set DEBUG_ARGS env var
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
env:
|
|
||||||
RUNNER_DEBUG: ${{ runner.debug }}
|
|
||||||
shell: bash
|
|
||||||
run: |-
|
|
||||||
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
|
|
||||||
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
|
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
|
||||||
@@ -988,7 +844,7 @@ jobs:
|
|||||||
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }}
|
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }}
|
||||||
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEPASSWORD }}
|
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEPASSWORD }}
|
||||||
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEUSERNAME }}
|
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEUSERNAME }}
|
||||||
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true publishToSonatype closeAndReleaseSonatypeStagingRepository
|
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true publishToSonatype closeAndReleaseSonatypeStagingRepository
|
||||||
github-release:
|
github-release:
|
||||||
needs: deploy-release
|
needs: deploy-release
|
||||||
permissions:
|
permissions:
|
||||||
@@ -1043,7 +899,7 @@ jobs:
|
|||||||
pattern: test-results-xml-*
|
pattern: test-results-xml-*
|
||||||
- name: Publish test results
|
- name: Publish test results
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
|
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2
|
||||||
with:
|
with:
|
||||||
comment_mode: 'off'
|
comment_mode: 'off'
|
||||||
files: test-results-xml-*/**/*.xml
|
files: test-results-xml-*/**/*.xml
|
||||||
|
|||||||
Generated
+1
-1
@@ -25,7 +25,7 @@ jobs:
|
|||||||
name_is_regexp: true
|
name_is_regexp: true
|
||||||
run_id: ${{ github.event.workflow_run.id }}
|
run_id: ${{ github.event.workflow_run.id }}
|
||||||
- name: Publish test results
|
- name: Publish test results
|
||||||
uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
|
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2
|
||||||
with:
|
with:
|
||||||
commit: ${{ github.event.workflow_run.head_sha }}
|
commit: ${{ github.event.workflow_run.head_sha }}
|
||||||
comment_mode: 'off'
|
comment_mode: 'off'
|
||||||
|
|||||||
Generated
+10
@@ -10,6 +10,16 @@
|
|||||||
<option name="INSERT_INNER_CLASS_IMPORTS" value="true" />
|
<option name="INSERT_INNER_CLASS_IMPORTS" value="true" />
|
||||||
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
|
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
|
||||||
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
|
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
|
||||||
|
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
|
||||||
|
<value />
|
||||||
|
</option>
|
||||||
|
<option name="IMPORT_LAYOUT_TABLE">
|
||||||
|
<value>
|
||||||
|
<package name="" withSubpackages="true" static="true" />
|
||||||
|
<emptyLine />
|
||||||
|
<package name="" withSubpackages="true" static="false" />
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
<option name="RIGHT_MARGIN" value="100" />
|
<option name="RIGHT_MARGIN" value="100" />
|
||||||
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
|
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
|
||||||
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
|
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
|
||||||
|
|||||||
+1
-9
@@ -27,19 +27,12 @@
|
|||||||
<option name="searchContext" value="ANY" />
|
<option name="searchContext" value="ANY" />
|
||||||
<option name="replacement" value="evaluatorSettings" />
|
<option name="replacement" value="evaluatorSettings" />
|
||||||
</InspectionPattern>
|
</InspectionPattern>
|
||||||
<InspectionPattern>
|
|
||||||
<option name="regExp" value="project\?\.resolvedEvaluatorSettings" />
|
|
||||||
<option name="_fileType" value="Kotlin" />
|
|
||||||
<option name="searchContext" value="ANY" />
|
|
||||||
<option name="replacement" value="evaluatorSettings" />
|
|
||||||
</InspectionPattern>
|
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</RegExpInspectionConfiguration>
|
</RegExpInspectionConfiguration>
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</inspection_tool>
|
</inspection_tool>
|
||||||
<inspection_tool class="FieldAccessNotGuarded" enabled="true" level="WARNING" enabled_by_default="true" />
|
|
||||||
<inspection_tool class="FieldMayBeFinal" enabled="true" level="INFORMATION" enabled_by_default="true">
|
<inspection_tool class="FieldMayBeFinal" enabled="true" level="INFORMATION" enabled_by_default="true">
|
||||||
<scope name="AllExceptTruffleAst" level="WARNING" enabled="true" />
|
<scope name="AllExceptTruffleAst" level="WARNING" enabled="true" />
|
||||||
</inspection_tool>
|
</inspection_tool>
|
||||||
@@ -101,7 +94,6 @@
|
|||||||
<option name="processLiterals" value="true" />
|
<option name="processLiterals" value="true" />
|
||||||
<option name="processComments" value="true" />
|
<option name="processComments" value="true" />
|
||||||
</inspection_tool>
|
</inspection_tool>
|
||||||
<inspection_tool class="StringToUpperWithoutLocale" enabled="true" level="WARNING" enabled_by_default="true" editorAttributes="WARNING_ATTRIBUTES" />
|
|
||||||
<inspection_tool class="dd497f47-d38f-3fab-9ed7-eabe699620c8" enabled="true" level="ERROR" enabled_by_default="true" editorAttributes="ERRORS_ATTRIBUTES" />
|
<inspection_tool class="dd497f47-d38f-3fab-9ed7-eabe699620c8" enabled="true" level="ERROR" enabled_by_default="true" editorAttributes="ERRORS_ATTRIBUTES" />
|
||||||
</profile>
|
</profile>
|
||||||
</component>
|
</component>
|
||||||
@@ -19,8 +19,8 @@ plugins {
|
|||||||
id("me.champeau.jmh")
|
id("me.champeau.jmh")
|
||||||
}
|
}
|
||||||
|
|
||||||
val truffle: Configuration = configurations.create("truffle")
|
val truffle: Configuration by configurations.creating
|
||||||
val graal: Configuration = configurations.create("graal")
|
val graal: Configuration by configurations.creating
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
jmh(projects.pklCore)
|
jmh(projects.pklCore)
|
||||||
|
|||||||
@@ -1,76 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright © 2026 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 groovy.util.Node
|
|
||||||
import groovy.xml.XmlParser
|
|
||||||
import groovy.xml.XmlUtil
|
|
||||||
import org.gradle.api.DefaultTask
|
|
||||||
import org.gradle.api.tasks.TaskAction
|
|
||||||
|
|
||||||
abstract class ConfigureLateInitAnnotation : DefaultTask() {
|
|
||||||
private val miscXmlFile = project.rootProject.file(".idea/misc.xml")
|
|
||||||
|
|
||||||
init {
|
|
||||||
inputs.file(miscXmlFile)
|
|
||||||
outputs.file(miscXmlFile)
|
|
||||||
}
|
|
||||||
|
|
||||||
@TaskAction
|
|
||||||
fun run() {
|
|
||||||
val annotationName = "org.pkl.core.util.LateInit"
|
|
||||||
|
|
||||||
if (!miscXmlFile.exists()) {
|
|
||||||
miscXmlFile.writeText(
|
|
||||||
"""
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
</project>
|
|
||||||
"""
|
|
||||||
.trimIndent()
|
|
||||||
.trim()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
val root = XmlParser().parse(miscXmlFile)
|
|
||||||
|
|
||||||
fun Node.childNodes() = children().filterIsInstance<Node>()
|
|
||||||
|
|
||||||
var entryPointsManager =
|
|
||||||
root.childNodes().find {
|
|
||||||
it.name() == "component" && it.attribute("name") == "EntryPointsManager"
|
|
||||||
}
|
|
||||||
if (entryPointsManager == null) {
|
|
||||||
entryPointsManager = root.appendNode("component", mapOf("name" to "EntryPointsManager"))
|
|
||||||
}
|
|
||||||
|
|
||||||
var writeAnnotations = entryPointsManager.childNodes().find { it.name() == "writeAnnotations" }
|
|
||||||
if (writeAnnotations == null) {
|
|
||||||
writeAnnotations = entryPointsManager.appendNode("writeAnnotations")
|
|
||||||
}
|
|
||||||
|
|
||||||
val alreadyExists =
|
|
||||||
writeAnnotations.childNodes().any {
|
|
||||||
it.name() == "writeAnnotation" && it.attribute("name") == annotationName
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!alreadyExists) {
|
|
||||||
writeAnnotations.appendNode("writeAnnotation", mapOf("name" to annotationName))
|
|
||||||
miscXmlFile.writeText(XmlUtil.serialize(root))
|
|
||||||
logger.lifecycle("Updated .idea/misc.xml")
|
|
||||||
} else {
|
|
||||||
logger.info("$annotationName is already configured in .idea/misc.xml")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -13,13 +13,10 @@
|
|||||||
* 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.
|
||||||
*/
|
*/
|
||||||
import java.nio.file.AtomicMoveNotSupportedException
|
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.Path
|
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
import java.nio.file.StandardCopyOption
|
import java.nio.file.StandardCopyOption
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.zip.ZipInputStream
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.io.path.createDirectories
|
import kotlin.io.path.createDirectories
|
||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
||||||
@@ -44,14 +41,19 @@ constructor(
|
|||||||
@TaskAction
|
@TaskAction
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
fun run() {
|
fun run() {
|
||||||
// minimize chance of corruption by extract-to-random-dir-and-publish
|
// minimize chance of corruption by extract-to-random-dir-and-flip-symlink
|
||||||
val distroDir = Paths.get(graalVm.get().homeDir, UUID.randomUUID().toString())
|
val distroDir = Paths.get(graalVm.get().homeDir, UUID.randomUUID().toString())
|
||||||
try {
|
try {
|
||||||
distroDir.createDirectories()
|
distroDir.createDirectories()
|
||||||
println("Extracting ${graalVm.get().downloadFile} into $distroDir")
|
println("Extracting ${graalVm.get().downloadFile} into $distroDir")
|
||||||
val os = org.gradle.internal.os.OperatingSystem.current()
|
// faster and more reliable than Gradle's `copy { from tarTree() }`
|
||||||
if (os.isWindows) extractZip(distroDir) else extractTarGz(distroDir)
|
execOperations.exec {
|
||||||
|
workingDir = distroDir.toFile()
|
||||||
|
executable = "tar"
|
||||||
|
args("--strip-components=1", "-xzf", graalVm.get().downloadFile)
|
||||||
|
}
|
||||||
|
|
||||||
|
val os = org.gradle.internal.os.OperatingSystem.current()
|
||||||
val distroBinDir =
|
val distroBinDir =
|
||||||
if (os.isMacOsX) distroDir.resolve("Contents/Home/bin") else distroDir.resolve("bin")
|
if (os.isMacOsX) distroDir.resolve("Contents/Home/bin") else distroDir.resolve("bin")
|
||||||
|
|
||||||
@@ -68,7 +70,17 @@ constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
publishInstallDir(distroDir, os)
|
println("Creating symlink ${graalVm.get().installDir} for $distroDir")
|
||||||
|
val tempLink = Paths.get(graalVm.get().homeDir, UUID.randomUUID().toString())
|
||||||
|
Files.createSymbolicLink(tempLink, distroDir)
|
||||||
|
try {
|
||||||
|
Files.move(tempLink, graalVm.get().installDir.toPath(), StandardCopyOption.ATOMIC_MOVE)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
try {
|
||||||
|
fileOperations.delete(tempLink.toFile())
|
||||||
|
} catch (ignored: Exception) {}
|
||||||
|
throw e
|
||||||
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
try {
|
try {
|
||||||
fileOperations.delete(distroDir)
|
fileOperations.delete(distroDir)
|
||||||
@@ -76,75 +88,4 @@ constructor(
|
|||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun extractTarGz(distroDir: Path) {
|
|
||||||
// faster and more reliable than Gradle's `copy { from tarTree() }`
|
|
||||||
execOperations.exec {
|
|
||||||
workingDir = distroDir.toFile()
|
|
||||||
executable = "tar"
|
|
||||||
args("--strip-components=1", "-xzf", graalVm.get().downloadFile)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun extractZip(distroDir: Path) {
|
|
||||||
val targetDir = distroDir.toAbsolutePath().normalize()
|
|
||||||
ZipInputStream(graalVm.get().downloadFile.inputStream().buffered()).use { zipInput ->
|
|
||||||
var entry = zipInput.nextEntry
|
|
||||||
while (entry != null) {
|
|
||||||
try {
|
|
||||||
val strippedPath = stripFirstPathComponent(entry.name)
|
|
||||||
if (strippedPath != null) {
|
|
||||||
val target = targetDir.resolve(strippedPath).normalize()
|
|
||||||
require(target.startsWith(targetDir)) {
|
|
||||||
"GraalVM archive entry escapes destination directory: ${entry.name}"
|
|
||||||
}
|
|
||||||
if (entry.isDirectory) {
|
|
||||||
target.createDirectories()
|
|
||||||
} else {
|
|
||||||
target.parent?.createDirectories()
|
|
||||||
Files.copy(zipInput, target)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
zipInput.closeEntry()
|
|
||||||
}
|
|
||||||
entry = zipInput.nextEntry
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun stripFirstPathComponent(path: String): String? {
|
|
||||||
val normalizedPath = path.replace('\\', '/').trimStart('/')
|
|
||||||
val separatorIndex = normalizedPath.indexOf('/')
|
|
||||||
if (separatorIndex == -1) return null
|
|
||||||
return normalizedPath.substring(separatorIndex + 1).takeIf { it.isNotEmpty() }
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun publishInstallDir(distroDir: Path, os: org.gradle.internal.os.OperatingSystem) {
|
|
||||||
if (os.isWindows) {
|
|
||||||
println("Installing ${graalVm.get().installDir} from $distroDir")
|
|
||||||
moveAtomicallyOrRegularly(distroDir, graalVm.get().installDir.toPath())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
println("Creating symlink ${graalVm.get().installDir} for $distroDir")
|
|
||||||
val tempLink = Paths.get(graalVm.get().homeDir, UUID.randomUUID().toString())
|
|
||||||
Files.createSymbolicLink(tempLink, distroDir)
|
|
||||||
try {
|
|
||||||
moveAtomicallyOrRegularly(tempLink, graalVm.get().installDir.toPath())
|
|
||||||
} catch (e: Exception) {
|
|
||||||
try {
|
|
||||||
fileOperations.delete(tempLink.toFile())
|
|
||||||
} catch (ignored: Exception) {}
|
|
||||||
throw e
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun moveAtomicallyOrRegularly(source: Path, target: Path) {
|
|
||||||
try {
|
|
||||||
Files.move(source, target, StandardCopyOption.ATOMIC_MOVE)
|
|
||||||
} catch (e: AtomicMoveNotSupportedException) {
|
|
||||||
Files.move(source, target)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,60 +63,58 @@ fun Project.configurePklPomMetadata() {
|
|||||||
|
|
||||||
/** Configures POM validation task to check for unresolved versions and snapshots in releases. */
|
/** Configures POM validation task to check for unresolved versions and snapshots in releases. */
|
||||||
fun Project.configurePomValidation() {
|
fun Project.configurePomValidation() {
|
||||||
val validatePom =
|
val validatePom by tasks.registering {
|
||||||
tasks.register("validatePom") {
|
if (tasks.findByName("generatePomFileForLibraryPublication") == null) {
|
||||||
if (tasks.findByName("generatePomFileForLibraryPublication") == null) {
|
return@registering
|
||||||
return@register
|
}
|
||||||
}
|
val generatePomFileForLibraryPublication by tasks.existing(GenerateMavenPom::class)
|
||||||
val generatePomFileForLibraryPublication =
|
val outputFile =
|
||||||
tasks.named<GenerateMavenPom>("generatePomFileForLibraryPublication")
|
layout.buildDirectory.file("validatePom") // dummy output to satisfy up-to-date check
|
||||||
val outputFile =
|
|
||||||
layout.buildDirectory.file("validatePom") // dummy output to satisfy up-to-date check
|
|
||||||
|
|
||||||
dependsOn(generatePomFileForLibraryPublication)
|
dependsOn(generatePomFileForLibraryPublication)
|
||||||
inputs.file(generatePomFileForLibraryPublication.get().destination)
|
inputs.file(generatePomFileForLibraryPublication.get().destination)
|
||||||
outputs.file(outputFile)
|
outputs.file(outputFile)
|
||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
outputFile.get().asFile.delete()
|
outputFile.get().asFile.delete()
|
||||||
|
|
||||||
val pomFile = generatePomFileForLibraryPublication.get().destination
|
val pomFile = generatePomFileForLibraryPublication.get().destination
|
||||||
assert(pomFile.exists())
|
assert(pomFile.exists())
|
||||||
|
|
||||||
val text = pomFile.readText()
|
val text = pomFile.readText()
|
||||||
|
|
||||||
run {
|
run {
|
||||||
val unresolvedVersion = Regex("<version>.*[+,()\\[\\]].*</version>")
|
val unresolvedVersion = Regex("<version>.*[+,()\\[\\]].*</version>")
|
||||||
val matches = unresolvedVersion.findAll(text).toList()
|
val matches = unresolvedVersion.findAll(text).toList()
|
||||||
if (matches.isNotEmpty()) {
|
if (matches.isNotEmpty()) {
|
||||||
throw org.gradle.api.GradleException(
|
throw org.gradle.api.GradleException(
|
||||||
"""
|
"""
|
||||||
Found unresolved version selector(s) in generated POM:
|
Found unresolved version selector(s) in generated POM:
|
||||||
${matches.joinToString("\n") { it.groupValues[0] }}
|
${matches.joinToString("\n") { it.groupValues[0] }}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val buildInfo = project.extensions.getByType<BuildInfo>()
|
val buildInfo = project.extensions.getByType<BuildInfo>()
|
||||||
if (buildInfo.isReleaseBuild) {
|
if (buildInfo.isReleaseBuild) {
|
||||||
val snapshotVersion = Regex("<version>.*-SNAPSHOT</version>")
|
val snapshotVersion = Regex("<version>.*-SNAPSHOT</version>")
|
||||||
val matches = snapshotVersion.findAll(text).toList()
|
val matches = snapshotVersion.findAll(text).toList()
|
||||||
if (matches.isNotEmpty()) {
|
if (matches.isNotEmpty()) {
|
||||||
throw org.gradle.api.GradleException(
|
throw org.gradle.api.GradleException(
|
||||||
"""
|
"""
|
||||||
Found snapshot version(s) in generated POM of Pkl release version:
|
Found snapshot version(s) in generated POM of Pkl release version:
|
||||||
${matches.joinToString("\n") { it.groupValues[0] }}
|
${matches.joinToString("\n") { it.groupValues[0] }}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
outputFile.get().asFile.writeText("OK")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
outputFile.get().asFile.writeText("OK")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tasks.named("publish") { dependsOn(validatePom) }
|
tasks.named("publish") { dependsOn(validatePom) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ plugins.withType(MavenPublishPlugin::class).configureEach {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val allDependencies = tasks.register<DependencyReportTask>("allDependencies")
|
val allDependencies by tasks.registering(DependencyReportTask::class)
|
||||||
|
|
||||||
tasks.withType(Test::class).configureEach {
|
tasks.withType(Test::class).configureEach {
|
||||||
System.getProperty("testReportsDir")?.let { reportsDir ->
|
System.getProperty("testReportsDir")?.let { reportsDir ->
|
||||||
|
|||||||
@@ -132,8 +132,8 @@ tasks.shadowJar {
|
|||||||
|
|
||||||
shadow { addShadowVariantIntoJavaComponent = false }
|
shadow { addShadowVariantIntoJavaComponent = false }
|
||||||
|
|
||||||
val testFatJar =
|
val testFatJar by
|
||||||
tasks.register<Test>("testFatJar") {
|
tasks.registering(Test::class) {
|
||||||
testClassesDirs = files(tasks.test.get().testClassesDirs)
|
testClassesDirs = files(tasks.test.get().testClassesDirs)
|
||||||
classpath =
|
classpath =
|
||||||
// compiled test classes
|
// compiled test classes
|
||||||
@@ -148,48 +148,47 @@ val testFatJar =
|
|||||||
|
|
||||||
tasks.check { dependsOn(testFatJar) }
|
tasks.check { dependsOn(testFatJar) }
|
||||||
|
|
||||||
val validateFatJar =
|
val validateFatJar by tasks.registering {
|
||||||
tasks.register("validateFatJar") {
|
val outputFile = layout.buildDirectory.file("validateFatJar/result.txt")
|
||||||
val outputFile = layout.buildDirectory.file("validateFatJar/result.txt")
|
inputs.files(tasks.shadowJar)
|
||||||
inputs.files(tasks.shadowJar)
|
inputs.property("nonRelocations", nonRelocations)
|
||||||
inputs.property("nonRelocations", nonRelocations)
|
outputs.file(outputFile)
|
||||||
outputs.file(outputFile)
|
|
||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
val unshadowedFiles = mutableListOf<String>()
|
val unshadowedFiles = mutableListOf<String>()
|
||||||
zipTree(tasks.shadowJar.get().outputs.files.singleFile).visit {
|
zipTree(tasks.shadowJar.get().outputs.files.singleFile).visit {
|
||||||
val fileDetails = this
|
val fileDetails = this
|
||||||
val path = fileDetails.relativePath.pathString
|
val path = fileDetails.relativePath.pathString
|
||||||
if (
|
if (
|
||||||
!(fileDetails.isDirectory ||
|
!(fileDetails.isDirectory ||
|
||||||
path.startsWith("org/pkl/") ||
|
path.startsWith("org/pkl/") ||
|
||||||
path.startsWith("META-INF/") ||
|
path.startsWith("META-INF/") ||
|
||||||
nonRelocations.any { path.startsWith(it) })
|
nonRelocations.any { path.startsWith(it) })
|
||||||
) {
|
) {
|
||||||
// don't throw exception inside `visit`
|
// don't throw exception inside `visit`
|
||||||
// as this gives a misleading "Could not expand ZIP" error message
|
// as this gives a misleading "Could not expand ZIP" error message
|
||||||
unshadowedFiles.add(path)
|
unshadowedFiles.add(path)
|
||||||
}
|
|
||||||
}
|
|
||||||
if (unshadowedFiles.isEmpty()) {
|
|
||||||
outputFile.get().asFile.writeText("SUCCESS")
|
|
||||||
} else {
|
|
||||||
outputFile.get().asFile.writeText("FAILURE")
|
|
||||||
throw GradleException("Found unshadowed files:\n" + unshadowedFiles.joinToString("\n"))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (unshadowedFiles.isEmpty()) {
|
||||||
|
outputFile.get().asFile.writeText("SUCCESS")
|
||||||
|
} else {
|
||||||
|
outputFile.get().asFile.writeText("FAILURE")
|
||||||
|
throw GradleException("Found unshadowed files:\n" + unshadowedFiles.joinToString("\n"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tasks.check { dependsOn(validateFatJar) }
|
tasks.check { dependsOn(validateFatJar) }
|
||||||
|
|
||||||
val resolveSourcesJars =
|
val resolveSourcesJars by
|
||||||
tasks.register<ResolveSourcesJars>("resolveSourcesJars") {
|
tasks.registering(ResolveSourcesJars::class) {
|
||||||
configuration.set(configurations.runtimeClasspath)
|
configuration.set(configurations.runtimeClasspath)
|
||||||
outputDir.set(layout.buildDirectory.dir("resolveSourcesJars"))
|
outputDir.set(layout.buildDirectory.dir("resolveSourcesJars"))
|
||||||
}
|
}
|
||||||
|
|
||||||
val fatSourcesJar =
|
val fatSourcesJar by
|
||||||
tasks.register<MergeSourcesJars>("fatSourcesJar") {
|
tasks.registering(MergeSourcesJars::class) {
|
||||||
plugins.withId("pklJavaLibrary") { inputJars.from(tasks.named("sourcesJar")) }
|
plugins.withId("pklJavaLibrary") { inputJars.from(tasks.named("sourcesJar")) }
|
||||||
inputJars.from(firstPartySourcesJarsConfiguration)
|
inputJars.from(firstPartySourcesJarsConfiguration)
|
||||||
inputJars.from(resolveSourcesJars.map { fileTree(it.outputDir) })
|
inputJars.from(resolveSourcesJars.map { fileTree(it.outputDir) })
|
||||||
@@ -214,7 +213,7 @@ publishing {
|
|||||||
artifact(fatSourcesJar.flatMap { it.outputJar.asFile }) { classifier = "sources" }
|
artifact(fatSourcesJar.flatMap { it.outputJar.asFile }) { classifier = "sources" }
|
||||||
|
|
||||||
plugins.withId("pklJavaLibrary") {
|
plugins.withId("pklJavaLibrary") {
|
||||||
val javadocJar = tasks.named<Jar>("javadocJar")
|
val javadocJar by tasks.existing(Jar::class)
|
||||||
// Javadoc Jar is not fat (didn't invest effort)
|
// Javadoc Jar is not fat (didn't invest effort)
|
||||||
artifact(javadocJar.flatMap { it.archiveFile }) { classifier = "javadoc" }
|
artifact(javadocJar.flatMap { it.archiveFile }) { classifier = "javadoc" }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,15 +21,11 @@ plugins { id("de.undercouch.download") }
|
|||||||
val buildInfo = project.extensions.getByType<BuildInfo>()
|
val buildInfo = project.extensions.getByType<BuildInfo>()
|
||||||
|
|
||||||
// tries to minimize chance of corruption by download-to-temp-file-and-move
|
// tries to minimize chance of corruption by download-to-temp-file-and-move
|
||||||
val downloadGraalVmAarch64 =
|
val downloadGraalVmAarch64 by
|
||||||
tasks.register<Download>("downloadGraalVmAarch64") {
|
tasks.registering(Download::class) { configureDownloadGraalVm(buildInfo.graalVmAarch64) }
|
||||||
configureDownloadGraalVm(buildInfo.graalVmAarch64)
|
|
||||||
}
|
|
||||||
|
|
||||||
val downloadGraalVmAmd64 =
|
val downloadGraalVmAmd64 by
|
||||||
tasks.register<Download>("downloadGraalVmAmd64") {
|
tasks.registering(Download::class) { configureDownloadGraalVm(buildInfo.graalVmAmd64) }
|
||||||
configureDownloadGraalVm(buildInfo.graalVmAmd64)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Download.configureDownloadGraalVm(graalvm: BuildInfo.GraalVm) {
|
fun Download.configureDownloadGraalVm(graalvm: BuildInfo.GraalVm) {
|
||||||
onlyIf { !graalvm.installDir.exists() }
|
onlyIf { !graalvm.installDir.exists() }
|
||||||
@@ -41,14 +37,14 @@ fun Download.configureDownloadGraalVm(graalvm: BuildInfo.GraalVm) {
|
|||||||
tempAndMove(true)
|
tempAndMove(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
val verifyGraalVmAarch64 =
|
val verifyGraalVmAarch64 by
|
||||||
tasks.register<Verify>("verifyGraalVmAarch64") {
|
tasks.registering(Verify::class) {
|
||||||
configureVerifyGraalVm(buildInfo.graalVmAarch64)
|
configureVerifyGraalVm(buildInfo.graalVmAarch64)
|
||||||
dependsOn(downloadGraalVmAarch64)
|
dependsOn(downloadGraalVmAarch64)
|
||||||
}
|
}
|
||||||
|
|
||||||
val verifyGraalVmAmd64 =
|
val verifyGraalVmAmd64 by
|
||||||
tasks.register<Verify>("verifyGraalVmAmd64") {
|
tasks.registering(Verify::class) {
|
||||||
configureVerifyGraalVm(buildInfo.graalVmAmd64)
|
configureVerifyGraalVm(buildInfo.graalVmAmd64)
|
||||||
dependsOn(downloadGraalVmAmd64)
|
dependsOn(downloadGraalVmAmd64)
|
||||||
}
|
}
|
||||||
@@ -64,15 +60,15 @@ fun Verify.configureVerifyGraalVm(graalvm: BuildInfo.GraalVm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val installGraalVmAarch64 =
|
val installGraalVmAarch64 by
|
||||||
tasks.register<InstallGraalVm>("installGraalVmAarch64") {
|
tasks.registering(InstallGraalVm::class) {
|
||||||
dependsOn(verifyGraalVmAarch64)
|
dependsOn(verifyGraalVmAarch64)
|
||||||
graalVm = buildInfo.graalVmAarch64
|
graalVm = buildInfo.graalVmAarch64
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val installGraalVmAmd64 =
|
val installGraalVmAmd64 by
|
||||||
tasks.register<InstallGraalVm>("installGraalVmAmd64") {
|
tasks.registering(InstallGraalVm::class) {
|
||||||
dependsOn(verifyGraalVmAmd64)
|
dependsOn(verifyGraalVmAmd64)
|
||||||
graalVm = buildInfo.graalVmAmd64
|
graalVm = buildInfo.graalVmAmd64
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,8 +47,8 @@ dependencies {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val validateHtml =
|
val validateHtml by
|
||||||
tasks.register<JavaExec>("validateHtml") {
|
tasks.registering(JavaExec::class) {
|
||||||
val resultFile = layout.buildDirectory.file("validateHtml/result.txt")
|
val resultFile = layout.buildDirectory.file("validateHtml/result.txt")
|
||||||
inputs.files(htmlValidator.sources)
|
inputs.files(htmlValidator.sources)
|
||||||
outputs.file(resultFile)
|
outputs.file(resultFile)
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
* 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.
|
||||||
*/
|
*/
|
||||||
import net.ltgt.gradle.errorprone.CheckSeverity
|
|
||||||
import net.ltgt.gradle.errorprone.errorprone
|
import net.ltgt.gradle.errorprone.errorprone
|
||||||
import net.ltgt.gradle.nullaway.nullaway
|
import net.ltgt.gradle.nullaway.nullaway
|
||||||
import org.gradle.accessors.dm.LibrariesForLibs
|
import org.gradle.accessors.dm.LibrariesForLibs
|
||||||
@@ -37,8 +36,6 @@ nullaway { onlyNullMarked = true }
|
|||||||
|
|
||||||
tasks.withType<JavaCompile>().configureEach {
|
tasks.withType<JavaCompile>().configureEach {
|
||||||
options.errorprone.disableAllChecks = true
|
options.errorprone.disableAllChecks = true
|
||||||
options.errorprone.check("StringCaseLocaleUsage", CheckSeverity.ERROR)
|
|
||||||
options.errorprone.check("GuardedBy", CheckSeverity.ERROR)
|
|
||||||
options.errorprone.nullaway {
|
options.errorprone.nullaway {
|
||||||
error()
|
error()
|
||||||
onlyNullMarked = true
|
onlyNullMarked = true
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ plugins {
|
|||||||
val executableSpec = project.extensions.create("executable", ExecutableSpec::class.java)
|
val executableSpec = project.extensions.create("executable", ExecutableSpec::class.java)
|
||||||
val buildInfo = project.extensions.getByType<BuildInfo>()
|
val buildInfo = project.extensions.getByType<BuildInfo>()
|
||||||
|
|
||||||
val javaExecutable =
|
val javaExecutable by
|
||||||
tasks.register<ExecutableJar>("javaExecutable") {
|
tasks.registering(ExecutableJar::class) {
|
||||||
group = "build"
|
group = "build"
|
||||||
dependsOn(tasks.jar)
|
dependsOn(tasks.jar)
|
||||||
inJar = tasks.shadowJar.flatMap { it.archiveFile }
|
inJar = tasks.shadowJar.flatMap { it.archiveFile }
|
||||||
@@ -77,8 +77,7 @@ fun Task.setupTestStartJavaExecutable(launcher: Provider<JavaLauncher>? = null)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val testStartJavaExecutable =
|
val testStartJavaExecutable by tasks.registering { setupTestStartJavaExecutable() }
|
||||||
tasks.register("testStartJavaExecutable") { setupTestStartJavaExecutable() }
|
|
||||||
|
|
||||||
// Setup `testStartJavaExecutable` tasks for multi-JDK testing.
|
// Setup `testStartJavaExecutable` tasks for multi-JDK testing.
|
||||||
val testStartJavaExecutableOnOtherJdks =
|
val testStartJavaExecutableOnOtherJdks =
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ kotlin {
|
|||||||
freeCompilerArgs.addAll(
|
freeCompilerArgs.addAll(
|
||||||
"-jvm-default=no-compatibility", // was: -Xjvm-default=all
|
"-jvm-default=no-compatibility", // was: -Xjvm-default=all
|
||||||
"-Xjdk-release=${buildInfo.jvmTarget}",
|
"-Xjdk-release=${buildInfo.jvmTarget}",
|
||||||
|
"-Xjsr305=strict",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,26 +30,22 @@ plugins {
|
|||||||
val executableSpec = project.extensions.getByType<ExecutableSpec>()
|
val executableSpec = project.extensions.getByType<ExecutableSpec>()
|
||||||
val buildInfo = project.extensions.getByType<BuildInfo>()
|
val buildInfo = project.extensions.getByType<BuildInfo>()
|
||||||
|
|
||||||
val stagedMacAmd64Executable: Configuration = configurations.create("stagedMacAmd64Executable")
|
val stagedMacAmd64Executable: Configuration by configurations.creating
|
||||||
val stagedMacAarch64Executable: Configuration = configurations.create("stagedMacAarch64Executable")
|
val stagedMacAarch64Executable: Configuration by configurations.creating
|
||||||
val stagedLinuxAmd64Executable: Configuration = configurations.create("stagedLinuxAmd64Executable")
|
val stagedLinuxAmd64Executable: Configuration by configurations.creating
|
||||||
val stagedLinuxAarch64Executable: Configuration =
|
val stagedLinuxAarch64Executable: Configuration by configurations.creating
|
||||||
configurations.create("stagedLinuxAarch64Executable")
|
val stagedAlpineLinuxAmd64Executable: Configuration by configurations.creating
|
||||||
val stagedAlpineLinuxAmd64Executable: Configuration =
|
val stagedWindowsAmd64Executable: Configuration by configurations.creating
|
||||||
configurations.create("stagedAlpineLinuxAmd64Executable")
|
|
||||||
val stagedWindowsAmd64Executable: Configuration =
|
|
||||||
configurations.create("stagedWindowsAmd64Executable")
|
|
||||||
|
|
||||||
val nativeImageClasspath =
|
val nativeImageClasspath by configurations.creating {
|
||||||
configurations.create("nativeImageClasspath") {
|
extendsFrom(configurations.runtimeClasspath.get())
|
||||||
extendsFrom(configurations.runtimeClasspath.get())
|
// Ensure native-image version uses GraalVM C SDKs instead of Java FFI or JNA
|
||||||
// Ensure native-image version uses GraalVM C SDKs instead of Java FFI or JNA
|
// (comes from artifact `mordant-jvm-graal-ffi`).
|
||||||
// (comes from artifact `mordant-jvm-graal-ffi`).
|
exclude("com.github.ajalt.mordant", "mordant-jvm-ffm")
|
||||||
exclude("com.github.ajalt.mordant", "mordant-jvm-ffm")
|
exclude("com.github.ajalt.mordant", "mordant-jvm-ffm-jvm")
|
||||||
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")
|
exclude("com.github.ajalt.mordant", "mordant-jvm-jna-jvm")
|
||||||
exclude("com.github.ajalt.mordant", "mordant-jvm-jna-jvm")
|
}
|
||||||
}
|
|
||||||
|
|
||||||
val libs = the<LibrariesForLibs>()
|
val libs = the<LibrariesForLibs>()
|
||||||
|
|
||||||
@@ -89,32 +85,32 @@ private fun NativeImageBuild.setClasspath() {
|
|||||||
classpath.from(nativeImageClasspath)
|
classpath.from(nativeImageClasspath)
|
||||||
}
|
}
|
||||||
|
|
||||||
val macExecutableAmd64 =
|
val macExecutableAmd64 by
|
||||||
tasks.register<NativeImageBuild>("macExecutableAmd64") {
|
tasks.registering(NativeImageBuild::class) {
|
||||||
imageName = executableSpec.name.map { "$it-macos-amd64" }
|
imageName = executableSpec.name.map { "$it-macos-amd64" }
|
||||||
mainClass = executableSpec.mainClass
|
mainClass = executableSpec.mainClass
|
||||||
amd64()
|
amd64()
|
||||||
setClasspath()
|
setClasspath()
|
||||||
}
|
}
|
||||||
|
|
||||||
val macExecutableAarch64 =
|
val macExecutableAarch64 by
|
||||||
tasks.register<NativeImageBuild>("macExecutableAarch64") {
|
tasks.registering(NativeImageBuild::class) {
|
||||||
imageName = executableSpec.name.map { "$it-macos-aarch64" }
|
imageName = executableSpec.name.map { "$it-macos-aarch64" }
|
||||||
mainClass = executableSpec.mainClass
|
mainClass = executableSpec.mainClass
|
||||||
aarch64()
|
aarch64()
|
||||||
setClasspath()
|
setClasspath()
|
||||||
}
|
}
|
||||||
|
|
||||||
val linuxExecutableAmd64 =
|
val linuxExecutableAmd64 by
|
||||||
tasks.register<NativeImageBuild>("linuxExecutableAmd64") {
|
tasks.registering(NativeImageBuild::class) {
|
||||||
imageName = executableSpec.name.map { "$it-linux-amd64" }
|
imageName = executableSpec.name.map { "$it-linux-amd64" }
|
||||||
mainClass = executableSpec.mainClass
|
mainClass = executableSpec.mainClass
|
||||||
amd64()
|
amd64()
|
||||||
setClasspath()
|
setClasspath()
|
||||||
}
|
}
|
||||||
|
|
||||||
val linuxExecutableAarch64 =
|
val linuxExecutableAarch64 by
|
||||||
tasks.register<NativeImageBuild>("linuxExecutableAarch64") {
|
tasks.registering(NativeImageBuild::class) {
|
||||||
imageName = executableSpec.name.map { "$it-linux-aarch64" }
|
imageName = executableSpec.name.map { "$it-linux-aarch64" }
|
||||||
mainClass = executableSpec.mainClass
|
mainClass = executableSpec.mainClass
|
||||||
aarch64()
|
aarch64()
|
||||||
@@ -124,8 +120,8 @@ val linuxExecutableAarch64 =
|
|||||||
extraNativeImageArgs.add("-H:PageSize=65536")
|
extraNativeImageArgs.add("-H:PageSize=65536")
|
||||||
}
|
}
|
||||||
|
|
||||||
val alpineExecutableAmd64 =
|
val alpineExecutableAmd64 by
|
||||||
tasks.register<NativeImageBuild>("alpineExecutableAmd64") {
|
tasks.registering(NativeImageBuild::class) {
|
||||||
imageName = executableSpec.name.map { "$it-alpine-linux-amd64" }
|
imageName = executableSpec.name.map { "$it-alpine-linux-amd64" }
|
||||||
mainClass = executableSpec.mainClass
|
mainClass = executableSpec.mainClass
|
||||||
amd64()
|
amd64()
|
||||||
@@ -133,75 +129,73 @@ val alpineExecutableAmd64 =
|
|||||||
extraNativeImageArgs.addAll(listOf("--static", "--libc=musl"))
|
extraNativeImageArgs.addAll(listOf("--static", "--libc=musl"))
|
||||||
}
|
}
|
||||||
|
|
||||||
val windowsExecutableAmd64 =
|
val windowsExecutableAmd64 by
|
||||||
tasks.register<NativeImageBuild>("windowsExecutableAmd64") {
|
tasks.registering(NativeImageBuild::class) {
|
||||||
imageName = executableSpec.name.map { "$it-windows-amd64" }
|
imageName = executableSpec.name.map { "$it-windows-amd64" }
|
||||||
mainClass = executableSpec.mainClass
|
mainClass = executableSpec.mainClass
|
||||||
amd64()
|
amd64()
|
||||||
setClasspath()
|
setClasspath()
|
||||||
}
|
}
|
||||||
|
|
||||||
val assembleNative = tasks.named("assembleNative")
|
val assembleNative by tasks.existing
|
||||||
|
|
||||||
val testStartNativeExecutable =
|
val testStartNativeExecutable by tasks.registering {
|
||||||
tasks.register("testStartNativeExecutable") {
|
dependsOn(assembleNative)
|
||||||
dependsOn(assembleNative)
|
|
||||||
|
|
||||||
// dummy file for up-to-date checking
|
// dummy file for up-to-date checking
|
||||||
val outputFile = project.layout.buildDirectory.file("testStartNativeExecutable/output.txt")
|
val outputFile = project.layout.buildDirectory.file("testStartNativeExecutable/output.txt")
|
||||||
outputs.file(outputFile)
|
outputs.file(outputFile)
|
||||||
|
|
||||||
val execOutput = providers.exec {
|
val execOutput = providers.exec {
|
||||||
commandLine(assembleNative.get().outputs.files.singleFile, "--version")
|
commandLine(assembleNative.get().outputs.files.singleFile, "--version")
|
||||||
|
}
|
||||||
|
|
||||||
|
doLast {
|
||||||
|
val outputText = execOutput.standardOutput.asText.get()
|
||||||
|
if (!outputText.contains(buildInfo.pklVersionNonUnique)) {
|
||||||
|
throw GradleException(
|
||||||
|
"Expected version output to contain current version (${buildInfo.pklVersionNonUnique}), but got '$outputText'"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
outputFile.get().asFile.toPath().apply {
|
||||||
doLast {
|
try {
|
||||||
val outputText = execOutput.standardOutput.asText.get()
|
parent.createDirectories()
|
||||||
if (!outputText.contains(buildInfo.pklVersionNonUnique)) {
|
} catch (_: java.nio.file.FileAlreadyExistsException) {}
|
||||||
throw GradleException(
|
writeText("OK")
|
||||||
"Expected version output to contain current version (${buildInfo.pklVersionNonUnique}), but got '$outputText'"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
outputFile.get().asFile.toPath().apply {
|
|
||||||
try {
|
|
||||||
parent.createDirectories()
|
|
||||||
} catch (_: java.nio.file.FileAlreadyExistsException) {}
|
|
||||||
writeText("OK")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val requiredGlibcVersion: Version = Version.parse("2.17")
|
val requiredGlibcVersion: Version = Version.parse("2.17")
|
||||||
|
|
||||||
val checkGlibc =
|
val checkGlibc by tasks.registering {
|
||||||
tasks.register("checkGlibc") {
|
enabled = buildInfo.os.isLinux && !buildInfo.musl
|
||||||
enabled = buildInfo.os.isLinux && !buildInfo.musl
|
dependsOn(assembleNative)
|
||||||
dependsOn(assembleNative)
|
doLast {
|
||||||
doLast {
|
val exec = providers.exec {
|
||||||
val exec = providers.exec {
|
commandLine("objdump", "-T", assembleNative.get().outputs.files.singleFile)
|
||||||
commandLine("objdump", "-T", assembleNative.get().outputs.files.singleFile)
|
}
|
||||||
}
|
val output = exec.standardOutput.asText.get()
|
||||||
val output = exec.standardOutput.asText.get()
|
val minimumGlibcVersion =
|
||||||
val minimumGlibcVersion =
|
output
|
||||||
output
|
.split("\n")
|
||||||
.split("\n")
|
.mapNotNull { line ->
|
||||||
.mapNotNull { line ->
|
val match = Regex("GLIBC_([.0-9]*)").find(line)
|
||||||
val match = Regex("GLIBC_([.0-9]*)").find(line)
|
match?.groups[1]?.let { Version.parse(it.value) }
|
||||||
match?.groups[1]?.let { Version.parse(it.value) }
|
}
|
||||||
}
|
.maxOrNull()
|
||||||
.maxOrNull()
|
if (minimumGlibcVersion == null) {
|
||||||
if (minimumGlibcVersion == null) {
|
throw GradleException(
|
||||||
throw GradleException(
|
"Could not determine glibc version from executable. objdump output: $output"
|
||||||
"Could not determine glibc version from executable. objdump output: $output"
|
)
|
||||||
)
|
}
|
||||||
}
|
if (minimumGlibcVersion > requiredGlibcVersion) {
|
||||||
if (minimumGlibcVersion > requiredGlibcVersion) {
|
throw GradleException(
|
||||||
throw GradleException(
|
"Incorrect glibc version. Found: $minimumGlibcVersion, required: $requiredGlibcVersion"
|
||||||
"Incorrect glibc version. Found: $minimumGlibcVersion, required: $requiredGlibcVersion"
|
)
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Expose underlying task's outputs
|
// Expose underlying task's outputs
|
||||||
private fun <T : Task> Task.wraps(other: TaskProvider<T>) {
|
private fun <T : Task> Task.wraps(other: TaskProvider<T>) {
|
||||||
@@ -209,24 +203,19 @@ private fun <T : Task> Task.wraps(other: TaskProvider<T>) {
|
|||||||
outputs.files(other)
|
outputs.files(other)
|
||||||
}
|
}
|
||||||
|
|
||||||
val testNative = tasks.named("testNative") { dependsOn(testStartNativeExecutable, checkGlibc) }
|
val testNative by tasks.existing { dependsOn(testStartNativeExecutable, checkGlibc) }
|
||||||
|
|
||||||
val assembleNativeMacOsAarch64 =
|
val assembleNativeMacOsAarch64 by tasks.existing { wraps(macExecutableAarch64) }
|
||||||
tasks.named("assembleNativeMacOsAarch64") { wraps(macExecutableAarch64) }
|
|
||||||
|
|
||||||
val assembleNativeMacOsAmd64 = tasks.named("assembleNativeMacOsAmd64") { wraps(macExecutableAmd64) }
|
val assembleNativeMacOsAmd64 by tasks.existing { wraps(macExecutableAmd64) }
|
||||||
|
|
||||||
val assembleNativeLinuxAarch64 =
|
val assembleNativeLinuxAarch64 by tasks.existing { wraps(linuxExecutableAarch64) }
|
||||||
tasks.named("assembleNativeLinuxAarch64") { wraps(linuxExecutableAarch64) }
|
|
||||||
|
|
||||||
val assembleNativeLinuxAmd64 =
|
val assembleNativeLinuxAmd64 by tasks.existing { wraps(linuxExecutableAmd64) }
|
||||||
tasks.named("assembleNativeLinuxAmd64") { wraps(linuxExecutableAmd64) }
|
|
||||||
|
|
||||||
val assembleNativeAlpineLinuxAmd64 =
|
val assembleNativeAlpineLinuxAmd64 by tasks.existing { wraps(alpineExecutableAmd64) }
|
||||||
tasks.named("assembleNativeAlpineLinuxAmd64") { wraps(alpineExecutableAmd64) }
|
|
||||||
|
|
||||||
val assembleNativeWindowsAmd64 =
|
val assembleNativeWindowsAmd64 by tasks.existing { wraps(windowsExecutableAmd64) }
|
||||||
tasks.named("assembleNativeWindowsAmd64") { wraps(windowsExecutableAmd64) }
|
|
||||||
|
|
||||||
publishing {
|
publishing {
|
||||||
publications {
|
publications {
|
||||||
|
|||||||
@@ -13,31 +13,29 @@
|
|||||||
* 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.
|
||||||
*/
|
*/
|
||||||
val assembleNativeMacOsAarch64 = tasks.register("assembleNativeMacOsAarch64") { group = "build" }
|
val assembleNativeMacOsAarch64 by tasks.registering { group = "build" }
|
||||||
|
|
||||||
val assembleNativeMacOsAmd64 = tasks.register("assembleNativeMacOsAmd64") { group = "build" }
|
val assembleNativeMacOsAmd64 by tasks.registering { group = "build" }
|
||||||
|
|
||||||
val assembleNativeLinuxAarch64 = tasks.register("assembleNativeLinuxAarch64") { group = "build" }
|
val assembleNativeLinuxAarch64 by tasks.registering { group = "build" }
|
||||||
|
|
||||||
val assembleNativeLinuxAmd64 = tasks.register("assembleNativeLinuxAmd64") { group = "build" }
|
val assembleNativeLinuxAmd64 by tasks.registering { group = "build" }
|
||||||
|
|
||||||
val assembleNativeAlpineLinuxAmd64 =
|
val assembleNativeAlpineLinuxAmd64 by tasks.registering { group = "build" }
|
||||||
tasks.register("assembleNativeAlpineLinuxAmd64") { group = "build" }
|
|
||||||
|
|
||||||
val assembleNativeWindowsAmd64 = tasks.register("assembleNativeWindowsAmd64") { group = "build" }
|
val assembleNativeWindowsAmd64 by tasks.registering { group = "build" }
|
||||||
|
|
||||||
val testNativeMacOsAarch64 = tasks.register("testNativeMacOsAarch64") { group = "verification" }
|
val testNativeMacOsAarch64 by tasks.registering { group = "verification" }
|
||||||
|
|
||||||
val testNativeMacOsAmd64 = tasks.register("testNativeMacOsAmd64") { group = "verification" }
|
val testNativeMacOsAmd64 by tasks.registering { group = "verification" }
|
||||||
|
|
||||||
val testNativeLinuxAarch64 = tasks.register("testNativeLinuxAarch64") { group = "verification" }
|
val testNativeLinuxAarch64 by tasks.registering { group = "verification" }
|
||||||
|
|
||||||
val testNativeLinuxAmd64 = tasks.register("testNativeLinuxAmd64") { group = "verification" }
|
val testNativeLinuxAmd64 by tasks.registering { group = "verification" }
|
||||||
|
|
||||||
val testNativeAlpineLinuxAmd64 =
|
val testNativeAlpineLinuxAmd64 by tasks.registering { group = "verification" }
|
||||||
tasks.register("testNativeAlpineLinuxAmd64") { group = "verification" }
|
|
||||||
|
|
||||||
val testNativeWindowsAmd64 = tasks.register("testNativeWindowsAmd64") { group = "verification" }
|
val testNativeWindowsAmd64 by tasks.registering { group = "verification" }
|
||||||
|
|
||||||
val buildInfo = project.extensions.getByType<BuildInfo>()
|
val buildInfo = project.extensions.getByType<BuildInfo>()
|
||||||
|
|
||||||
@@ -46,85 +44,79 @@ private fun <T : Task> Task.wraps(other: TaskProvider<T>) {
|
|||||||
outputs.files(other)
|
outputs.files(other)
|
||||||
}
|
}
|
||||||
|
|
||||||
val assembleNative =
|
val assembleNative by tasks.registering {
|
||||||
tasks.register("assembleNative") {
|
group = "build"
|
||||||
group = "build"
|
|
||||||
|
|
||||||
if (!buildInfo.isCrossArchSupported && buildInfo.isCrossArch) {
|
if (!buildInfo.isCrossArchSupported && buildInfo.isCrossArch) {
|
||||||
throw GradleException("Cross-arch builds are not supported on ${buildInfo.os.name}")
|
throw GradleException("Cross-arch builds are not supported on ${buildInfo.os.name}")
|
||||||
|
}
|
||||||
|
|
||||||
|
when {
|
||||||
|
buildInfo.os.isMacOsX && buildInfo.targetArch == "aarch64" -> {
|
||||||
|
wraps(assembleNativeMacOsAarch64)
|
||||||
}
|
}
|
||||||
|
buildInfo.os.isMacOsX && buildInfo.targetArch == "amd64" -> {
|
||||||
when {
|
wraps(assembleNativeMacOsAmd64)
|
||||||
buildInfo.os.isMacOsX && buildInfo.targetArch == "aarch64" -> {
|
}
|
||||||
wraps(assembleNativeMacOsAarch64)
|
buildInfo.os.isLinux && buildInfo.targetArch == "aarch64" -> {
|
||||||
}
|
wraps(assembleNativeLinuxAarch64)
|
||||||
buildInfo.os.isMacOsX && buildInfo.targetArch == "amd64" -> {
|
}
|
||||||
wraps(assembleNativeMacOsAmd64)
|
buildInfo.os.isLinux && buildInfo.targetArch == "amd64" -> {
|
||||||
}
|
if (buildInfo.musl) wraps(assembleNativeAlpineLinuxAmd64) else wraps(assembleNativeLinuxAmd64)
|
||||||
buildInfo.os.isLinux && buildInfo.targetArch == "aarch64" -> {
|
}
|
||||||
wraps(assembleNativeLinuxAarch64)
|
buildInfo.os.isWindows && buildInfo.targetArch == "amd64" -> {
|
||||||
}
|
wraps(assembleNativeWindowsAmd64)
|
||||||
buildInfo.os.isLinux && buildInfo.targetArch == "amd64" -> {
|
}
|
||||||
if (buildInfo.musl) wraps(assembleNativeAlpineLinuxAmd64)
|
else -> {
|
||||||
else wraps(assembleNativeLinuxAmd64)
|
doLast {
|
||||||
}
|
throw GradleException(
|
||||||
buildInfo.os.isWindows && buildInfo.targetArch == "amd64" -> {
|
"Cannot build targeting ${buildInfo.os.name}/${buildInfo.targetArch} with musl=${buildInfo.musl}"
|
||||||
wraps(assembleNativeWindowsAmd64)
|
)
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
doLast {
|
|
||||||
throw GradleException(
|
|
||||||
"Cannot build targeting ${buildInfo.os.name}/${buildInfo.targetArch} with musl=${buildInfo.musl}"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val testNative =
|
val testNative by tasks.registering {
|
||||||
tasks.register("testNative") {
|
group = "verification"
|
||||||
group = "verification"
|
dependsOn(assembleNative)
|
||||||
dependsOn(assembleNative)
|
|
||||||
|
|
||||||
if (!buildInfo.isCrossArchSupported && buildInfo.isCrossArch) {
|
if (!buildInfo.isCrossArchSupported && buildInfo.isCrossArch) {
|
||||||
throw GradleException("Cross-arch builds are not supported on ${buildInfo.os.name}")
|
throw GradleException("Cross-arch builds are not supported on ${buildInfo.os.name}")
|
||||||
|
}
|
||||||
|
|
||||||
|
when {
|
||||||
|
buildInfo.os.isMacOsX && buildInfo.targetArch == "aarch64" -> {
|
||||||
|
dependsOn(testNativeMacOsAarch64)
|
||||||
}
|
}
|
||||||
|
buildInfo.os.isMacOsX && buildInfo.targetArch == "amd64" -> {
|
||||||
when {
|
dependsOn(testNativeMacOsAmd64)
|
||||||
buildInfo.os.isMacOsX && buildInfo.targetArch == "aarch64" -> {
|
}
|
||||||
dependsOn(testNativeMacOsAarch64)
|
buildInfo.os.isLinux && buildInfo.targetArch == "aarch64" -> {
|
||||||
}
|
dependsOn(testNativeLinuxAarch64)
|
||||||
buildInfo.os.isMacOsX && buildInfo.targetArch == "amd64" -> {
|
}
|
||||||
dependsOn(testNativeMacOsAmd64)
|
buildInfo.os.isLinux && buildInfo.targetArch == "amd64" -> {
|
||||||
}
|
if (buildInfo.musl) dependsOn(testNativeAlpineLinuxAmd64) else dependsOn(testNativeLinuxAmd64)
|
||||||
buildInfo.os.isLinux && buildInfo.targetArch == "aarch64" -> {
|
}
|
||||||
dependsOn(testNativeLinuxAarch64)
|
buildInfo.os.isWindows && buildInfo.targetArch == "amd64" -> {
|
||||||
}
|
dependsOn(testNativeWindowsAmd64)
|
||||||
buildInfo.os.isLinux && buildInfo.targetArch == "amd64" -> {
|
}
|
||||||
if (buildInfo.musl) dependsOn(testNativeAlpineLinuxAmd64)
|
else -> {
|
||||||
else dependsOn(testNativeLinuxAmd64)
|
doLast {
|
||||||
}
|
throw GradleException(
|
||||||
buildInfo.os.isWindows && buildInfo.targetArch == "amd64" -> {
|
"Cannot build targeting ${buildInfo.os.name}/${buildInfo.targetArch} with musl=${buildInfo.musl}"
|
||||||
dependsOn(testNativeWindowsAmd64)
|
)
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
doLast {
|
|
||||||
throw GradleException(
|
|
||||||
"Cannot build targeting ${buildInfo.os.name}/${buildInfo.targetArch} with musl=${buildInfo.musl}"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val checkNative =
|
val checkNative by tasks.registering {
|
||||||
tasks.register("checkNative") {
|
group = "verification"
|
||||||
group = "verification"
|
dependsOn(testNative)
|
||||||
dependsOn(testNative)
|
}
|
||||||
}
|
|
||||||
|
|
||||||
val buildNative =
|
val buildNative by tasks.registering {
|
||||||
tasks.register("buildNative") {
|
group = "build"
|
||||||
group = "build"
|
dependsOn(checkNative)
|
||||||
dependsOn(checkNative)
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
plugins { id("com.diffplug.spotless") }
|
plugins { id("com.diffplug.spotless") }
|
||||||
|
|
||||||
val pklFormatter = configurations.create("pklFormatter")
|
val pklFormatter by configurations.creating
|
||||||
|
|
||||||
dependencies { pklFormatter(rootProject.project("pkl-formatter")) }
|
dependencies { pklFormatter(rootProject.project("pkl-formatter")) }
|
||||||
|
|
||||||
|
|||||||
+2
-7
@@ -17,7 +17,6 @@
|
|||||||
import org.jetbrains.gradle.ext.ActionDelegationConfig
|
import org.jetbrains.gradle.ext.ActionDelegationConfig
|
||||||
import org.jetbrains.gradle.ext.ActionDelegationConfig.TestRunner.PLATFORM
|
import org.jetbrains.gradle.ext.ActionDelegationConfig.TestRunner.PLATFORM
|
||||||
import org.jetbrains.gradle.ext.ProjectSettings
|
import org.jetbrains.gradle.ext.ProjectSettings
|
||||||
import org.jetbrains.gradle.ext.taskTriggers
|
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("pklAllProjects")
|
id("pklAllProjects")
|
||||||
@@ -37,9 +36,6 @@ nexusPublishing {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val configureLateInitAnnotation =
|
|
||||||
tasks.register<ConfigureLateInitAnnotation>("configureLateInitAnnotation")
|
|
||||||
|
|
||||||
idea {
|
idea {
|
||||||
project {
|
project {
|
||||||
this as ExtensionAware
|
this as ExtensionAware
|
||||||
@@ -49,14 +45,13 @@ idea {
|
|||||||
delegateBuildRunToGradle = true
|
delegateBuildRunToGradle = true
|
||||||
testRunner = PLATFORM
|
testRunner = PLATFORM
|
||||||
}
|
}
|
||||||
taskTriggers.afterSync(configureLateInitAnnotation)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val clean = tasks.named("clean") { delete(layout.buildDirectory) }
|
val clean by tasks.existing { delete(layout.buildDirectory) }
|
||||||
|
|
||||||
val printVersion = tasks.register("printVersion") { doFirst { println(buildInfo.pklVersion) } }
|
val printVersion by tasks.registering { doFirst { println(buildInfo.pklVersion) } }
|
||||||
|
|
||||||
val message =
|
val message =
|
||||||
"""
|
"""
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
name: main
|
name: main
|
||||||
title: Main Project
|
title: Main Project
|
||||||
version: 0.33.0-dev
|
version: 0.32.0-dev
|
||||||
prerelease: true
|
prerelease: true
|
||||||
nav:
|
nav:
|
||||||
- nav.adoc
|
- nav.adoc
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
// the following attributes must be updated immediately before a release
|
// the following attributes must be updated immediately before a release
|
||||||
|
|
||||||
// pkl version corresponding to current git commit without -dev suffix or git hash
|
// pkl version corresponding to current git commit without -dev suffix or git hash
|
||||||
:pkl-version-no-suffix: 0.33.0
|
:pkl-version-no-suffix: 0.32.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:
|
||||||
@@ -69,7 +69,6 @@ endif::[]
|
|||||||
|
|
||||||
:uri-stdlib-baseModule: {uri-pkl-stdlib-docs}/base
|
:uri-stdlib-baseModule: {uri-pkl-stdlib-docs}/base
|
||||||
:uri-stdlib-CommandModule: {uri-pkl-stdlib-docs}/Command
|
:uri-stdlib-CommandModule: {uri-pkl-stdlib-docs}/Command
|
||||||
:uri-stdlib-refModule: {uri-pkl-stdlib-docs}/ref
|
|
||||||
:uri-stdlib-analyzeModule: {uri-pkl-stdlib-docs}/analyze
|
:uri-stdlib-analyzeModule: {uri-pkl-stdlib-docs}/analyze
|
||||||
:uri-stdlib-jsonnetModule: {uri-pkl-stdlib-docs}/jsonnet
|
:uri-stdlib-jsonnetModule: {uri-pkl-stdlib-docs}/jsonnet
|
||||||
:uri-stdlib-reflectModule: {uri-pkl-stdlib-docs}/reflect
|
:uri-stdlib-reflectModule: {uri-pkl-stdlib-docs}/reflect
|
||||||
@@ -79,10 +78,8 @@ endif::[]
|
|||||||
:uri-stdlib-pklbinaryModule: {uri-pkl-stdlib-docs}/pklbinary
|
:uri-stdlib-pklbinaryModule: {uri-pkl-stdlib-docs}/pklbinary
|
||||||
:uri-stdlib-yamlModule: {uri-pkl-stdlib-docs}/yaml
|
:uri-stdlib-yamlModule: {uri-pkl-stdlib-docs}/yaml
|
||||||
:uri-stdlib-YamlParser: {uri-stdlib-yamlModule}/Parser
|
:uri-stdlib-YamlParser: {uri-stdlib-yamlModule}/Parser
|
||||||
:uri-stdlib-projectModule: {uri-pkl-stdlib-docs}/Project
|
|
||||||
: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-evaluatorSettingsExternalReaderClass: {uri-stdlib-evaluatorSettingsModule}/ExternalReader
|
|
||||||
:uri-stdlib-Boolean: {uri-stdlib-baseModule}/Boolean
|
:uri-stdlib-Boolean: {uri-stdlib-baseModule}/Boolean
|
||||||
:uri-stdlib-xor: {uri-stdlib-baseModule}/Boolean#xor()
|
:uri-stdlib-xor: {uri-stdlib-baseModule}/Boolean#xor()
|
||||||
:uri-stdlib-implies: {uri-stdlib-baseModule}/Boolean#implies()
|
:uri-stdlib-implies: {uri-stdlib-baseModule}/Boolean#implies()
|
||||||
@@ -161,8 +158,6 @@ endif::[]
|
|||||||
:uri-stdlib-Command-CountedFlag: {uri-stdlib-CommandModule}/CountedFlag
|
:uri-stdlib-Command-CountedFlag: {uri-stdlib-CommandModule}/CountedFlag
|
||||||
:uri-stdlib-Command-Argument: {uri-stdlib-CommandModule}/Argument
|
:uri-stdlib-Command-Argument: {uri-stdlib-CommandModule}/Argument
|
||||||
:uri-stdlib-Command-Import: {uri-stdlib-CommandModule}/Import
|
:uri-stdlib-Command-Import: {uri-stdlib-CommandModule}/Import
|
||||||
:uri-stdlib-ref-Reference: {uri-stdlib-baseModule}/Reference
|
|
||||||
:uri-stdlib-ref-Access: {uri-stdlib-baseModule}/Access
|
|
||||||
|
|
||||||
:uri-messagepack: https://msgpack.org/index.html
|
:uri-messagepack: https://msgpack.org/index.html
|
||||||
:uri-messagepack-spec: https://github.com/msgpack/msgpack/blob/master/spec.md
|
:uri-messagepack-spec: https://github.com/msgpack/msgpack/blob/master/spec.md
|
||||||
|
|||||||
@@ -187,15 +187,6 @@ The array's length is the number of slots that are filled. For example, xref:{ur
|
|||||||
|
|
|
|
||||||
|
|
|
|
||||||
|
|
|
|
||||||
|
|
||||||
|link:{uri-stdlib-ref-Reference}[Reference]
|
|
||||||
|`0x20`
|
|
||||||
|`<value>` (Typed)
|
|
||||||
|Domain
|
|
||||||
|`<value>`
|
|
||||||
|Data
|
|
||||||
|link:{uri-messagepack-array}[array]
|
|
||||||
|Array of link:{uri-stdlib-ref-Access}[`pkl.ref#Access`] values
|
|
||||||
|===
|
|===
|
||||||
|
|
||||||
[[type-name-encoding]]
|
[[type-name-encoding]]
|
||||||
|
|||||||
@@ -210,11 +210,6 @@ class Http {
|
|||||||
///
|
///
|
||||||
/// Each rewrite must start with `http://` or `https://`, and must end with `/`.
|
/// Each rewrite must start with `http://` or `https://`, and must end with `/`.
|
||||||
rewrites: Mapping<String, String>?
|
rewrites: Mapping<String, String>?
|
||||||
|
|
||||||
/// HTTP headers.
|
|
||||||
/// Each entry key is a glob pattern that is matched against outbound request URLs.
|
|
||||||
/// Each value is a map of headers that is added to the matching request.
|
|
||||||
headers: Mapping<String, Mapping<String, Listing<String>>>?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Settings that control how Pkl talks to HTTP proxies.
|
/// Settings that control how Pkl talks to HTTP proxies.
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven(url = "{uri-snapshot-repo}")
|
maven(url = "{uri-sonatype}")
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
@@ -75,7 +75,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven { url "{uri-snapshot-repo}" }
|
maven { url "{uri-sonatype}" }
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
@@ -99,9 +99,9 @@ ifndef::is-release-version[]
|
|||||||
<repository>
|
<repository>
|
||||||
<id>sonatype-s01</id>
|
<id>sonatype-s01</id>
|
||||||
<name>Sonatype S01</name>
|
<name>Sonatype S01</name>
|
||||||
<url>{uri-snapshot-repo}</url>
|
<url>{uri-sonatype}</url>
|
||||||
</repository>
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
endif::[]
|
endif::[]
|
||||||
</project>
|
</project>
|
||||||
----
|
----
|
||||||
@@ -198,7 +198,7 @@ For Spring Boot applications, and for users of `pkl-config-java` compiling the g
|
|||||||
.--non-null-annotation
|
.--non-null-annotation
|
||||||
[%collapsible]
|
[%collapsible]
|
||||||
====
|
====
|
||||||
Default: `org.jspecify.annotations.NonNull` +
|
Default: `org.pkl.config.java.mapper.NonNull` +
|
||||||
Fully qualified name of the annotation type to use for annotating non-null types. +
|
Fully qualified name of the annotation type to use for annotating non-null types. +
|
||||||
The specified annotation type must be annotated with `@java.lang.annotation.Target(ElementType.TYPE_USE)`
|
The specified annotation type must be annotated with `@java.lang.annotation.Target(ElementType.TYPE_USE)`
|
||||||
or the generated code may not compile.
|
or the generated code may not compile.
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven(url = "{uri-snapshot-repo}")
|
maven(url = "{uri-sonatype}")
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
@@ -66,7 +66,7 @@ repositories {
|
|||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
repositories {
|
repositories {
|
||||||
maven { url "{uri-snapshot-repo}" }
|
maven { url "{uri-sonatype}" }
|
||||||
}
|
}
|
||||||
endif::[]
|
endif::[]
|
||||||
----
|
----
|
||||||
@@ -92,7 +92,7 @@ ifndef::is-release-version[]
|
|||||||
<repository>
|
<repository>
|
||||||
<id>sonatype-s01</id>
|
<id>sonatype-s01</id>
|
||||||
<name>Sonatype S01</name>
|
<name>Sonatype S01</name>
|
||||||
<url>{uri-snapshot-repo}</url>
|
<url>{uri-sonatype}</url>
|
||||||
</repository>
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
endif::[]
|
endif::[]
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven(url = "{uri-snapshot-repo}")
|
maven(url = "{uri-sonatype}")
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
@@ -65,7 +65,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven { url "{uri-snapshot-repo}" }
|
maven { url "{uri-sonatype}" }
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven(url = "{uri-snapshot-repo}")
|
maven(url = "{uri-sonatype}")
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
@@ -53,7 +53,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven { url "{uri-snapshot-repo}" }
|
maven { url "{uri-sonatype}" }
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
@@ -77,7 +77,7 @@ ifndef::is-release-version[]
|
|||||||
<repository>
|
<repository>
|
||||||
<id>sonatype-s01</id>
|
<id>sonatype-s01</id>
|
||||||
<name>Sonatype S01</name>
|
<name>Sonatype S01</name>
|
||||||
<url>{uri-snapshot-repo}</url>
|
<url>{uri-sonatype}</url>
|
||||||
</repository>
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
endif::[]
|
endif::[]
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -546,15 +546,6 @@ When enabled, test failures will show intermediate values in the assertion expre
|
|||||||
Use `--no-power-assertions` to disable this feature if you prefer simpler output.
|
Use `--no-power-assertions` to disable this feature if you prefer simpler output.
|
||||||
====
|
====
|
||||||
|
|
||||||
[[test-reporter]]
|
|
||||||
.--test-reporter
|
|
||||||
[%collapsible]
|
|
||||||
====
|
|
||||||
Default: `spec` +
|
|
||||||
Example: `--test-reporter minimal` +
|
|
||||||
Which test reporter to use for CLI output. Possible values are `spec` and `minimal`.
|
|
||||||
====
|
|
||||||
|
|
||||||
This command also takes <<common-options, common options>>.
|
This command also takes <<common-options, common options>>.
|
||||||
|
|
||||||
[[command-run]]
|
[[command-run]]
|
||||||
@@ -676,14 +667,6 @@ Force generation of expected examples. +
|
|||||||
The old expected files will be deleted if present.
|
The old expected files will be deleted if present.
|
||||||
====
|
====
|
||||||
|
|
||||||
.--test-reporter
|
|
||||||
[%collapsible]
|
|
||||||
====
|
|
||||||
Default: `spec` +
|
|
||||||
Example: `--test-reporter minimal` +
|
|
||||||
Which test reporter to use for CLI output. Possible values are `spec` and `minimal`.
|
|
||||||
====
|
|
||||||
|
|
||||||
This command also takes <<common-options,common options>>.
|
This command also takes <<common-options,common options>>.
|
||||||
|
|
||||||
[[command-project-resolve]]
|
[[command-project-resolve]]
|
||||||
|
|||||||
@@ -158,23 +158,6 @@ 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`.
|
||||||
====
|
====
|
||||||
|
|
||||||
.--http-header
|
|
||||||
[%collapsible]
|
|
||||||
====
|
|
||||||
Default: (none) +
|
|
||||||
Example: `**=User-Agent: My User Agent` +
|
|
||||||
|
|
||||||
Additional headers to add to outbound HTTP requests.
|
|
||||||
|
|
||||||
The syntax is `<glob pattern>=<header name>:<header value>`, and any whitespace after the leading colon is trimmed.
|
|
||||||
|
|
||||||
The glob pattern is used to match against the URLs of outbound HTTP calls, and the value is the header name and value to add.
|
|
||||||
In the case of multiple matches, every header is added.
|
|
||||||
|
|
||||||
To describe a prefix match, the `\\**` wildcard should be added to the pattern.
|
|
||||||
For example, `https?://example.com/**` matches against every request to host `example.com`.
|
|
||||||
====
|
|
||||||
|
|
||||||
.--trace-mode
|
.--trace-mode
|
||||||
[%collapsible]
|
[%collapsible]
|
||||||
====
|
====
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven(url = "{uri-snapshot-repo}")
|
maven(url = "{uri-sonatype}")
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
@@ -63,7 +63,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven { url "{uri-snapshot-repo}" }
|
maven { url "{uri-sonatype}" }
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
@@ -87,7 +87,7 @@ ifndef::is-release-version[]
|
|||||||
<repository>
|
<repository>
|
||||||
<id>sonatype-s01</id>
|
<id>sonatype-s01</id>
|
||||||
<name>Sonatype S01</name>
|
<name>Sonatype S01</name>
|
||||||
<url>{uri-snapshot-repo}</url>
|
<url>{uri-sonatype}</url>
|
||||||
</repository>
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
endif::[]
|
endif::[]
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven(url = "{uri-snapshot-repo}")
|
maven(url = "{uri-sonatype}")
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
@@ -136,7 +136,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven { url "{uri-snapshot-repo}" }
|
maven { url "{uri-sonatype}" }
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
@@ -160,7 +160,7 @@ ifndef::is-release-version[]
|
|||||||
<repository>
|
<repository>
|
||||||
<id>sonatype-s01</id>
|
<id>sonatype-s01</id>
|
||||||
<name>Sonatype S01</name>
|
<name>Sonatype S01</name>
|
||||||
<url>{uri-snapshot-repo}</url>
|
<url>{uri-sonatype}</url>
|
||||||
</repository>
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
endif::[]
|
endif::[]
|
||||||
@@ -204,7 +204,7 @@ Download links:
|
|||||||
The Pkldoc tool is offered as Gradle plugin, Java library, and CLI.
|
The Pkldoc tool is offered as Gradle plugin, Java library, and CLI.
|
||||||
It can generate documentation either for modules directly, or generate documentation for _package uris_.
|
It can generate documentation either for modules directly, or generate documentation for _package uris_.
|
||||||
|
|
||||||
The tool accepts an optional argument of a module named _docsite-info.pkl_, that amends link:{uri-DocsiteInfo}[pkl.DocsiteInfo].
|
The tool requires an argument of a module named _docsite-info.pkl_, that amends link:{uri-DocsiteInfo}[pkl.DocsiteInfo].
|
||||||
|
|
||||||
[discrete]
|
[discrete]
|
||||||
==== Generating documentation for modules directly
|
==== Generating documentation for modules directly
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven(url = "{uri-snapshot-repo}")
|
maven(url = "{uri-sonatype}")
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -76,7 +76,7 @@ ifdef::is-release-version[]
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
endif::[]
|
endif::[]
|
||||||
ifndef::is-release-version[]
|
ifndef::is-release-version[]
|
||||||
maven { url "{uri-snapshot-repo}" }
|
maven { url "{uri-sonatype}" }
|
||||||
endif::[]
|
endif::[]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -322,15 +322,6 @@ Default: `false` +
|
|||||||
Whether to ignore expected example files and generate them again.
|
Whether to ignore expected example files and generate them again.
|
||||||
====
|
====
|
||||||
|
|
||||||
[[test-reporter]]
|
|
||||||
.testReporter: Property<String>
|
|
||||||
[%collapsible]
|
|
||||||
====
|
|
||||||
Default: `"spec"` +
|
|
||||||
Example: `reporter = "minimal"` +
|
|
||||||
Which test reporter to use for CLI output. Possible values are `"spec"` and `"minimal"`.
|
|
||||||
====
|
|
||||||
|
|
||||||
[[power-assertions-test]]
|
[[power-assertions-test]]
|
||||||
.powerAssertions: Property<Boolean>
|
.powerAssertions: Property<Boolean>
|
||||||
[%collapsible]
|
[%collapsible]
|
||||||
@@ -423,7 +414,7 @@ For Spring Boot applications, and for users of `pkl-config-java` compiling the g
|
|||||||
.nonNullAnnotation: Property<String>
|
.nonNullAnnotation: Property<String>
|
||||||
[%collapsible]
|
[%collapsible]
|
||||||
====
|
====
|
||||||
Default: `"org.jspecify.annotations.NonNull"` +
|
Default: `"org.pkl.config.java.mapper.NonNull"` +
|
||||||
Example: `nonNullAnnotation = "org.project.MyAnnotation"` +
|
Example: `nonNullAnnotation = "org.project.MyAnnotation"` +
|
||||||
Fully qualified name of the annotation type to use for annotating non-null types. +
|
Fully qualified name of the annotation type to use for annotating non-null types. +
|
||||||
The specified annotation type must be annotated with `@java.lang.annotation.Target(ElementType.TYPE_USE)`
|
The specified annotation type must be annotated with `@java.lang.annotation.Target(ElementType.TYPE_USE)`
|
||||||
@@ -686,14 +677,6 @@ Default: `false` +
|
|||||||
Whether to ignore expected example files and generate them again.
|
Whether to ignore expected example files and generate them again.
|
||||||
====
|
====
|
||||||
|
|
||||||
.testReporter: Property<String>
|
|
||||||
[%collapsible]
|
|
||||||
====
|
|
||||||
Default: `"spec"` +
|
|
||||||
Example: `reporter = "minimal"` +
|
|
||||||
Which test reporter to use for CLI output. Possible values are `"spec"` and `"minimal"`.
|
|
||||||
====
|
|
||||||
|
|
||||||
Common properties:
|
Common properties:
|
||||||
|
|
||||||
include::../partials/gradle-common-properties.adoc[]
|
include::../partials/gradle-common-properties.adoc[]
|
||||||
|
|||||||
@@ -119,19 +119,6 @@ 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`.
|
||||||
====
|
====
|
||||||
|
|
||||||
.httpHeaders: MapProperty<String, Map<String, List<String>>>
|
|
||||||
[%collapsible]
|
|
||||||
====
|
|
||||||
Default: `null` +
|
|
||||||
Example: `httpHeaders = ["**": ["User-Agent": ["My User Agent"]]]` +
|
|
||||||
Additional headers to add to outbound HTTP requests.
|
|
||||||
The key is a glob pattern that is used to match against the URLs of outbound HTTP calls, and the value is the header name and values to add.
|
|
||||||
Each header value becomes its own HTTP header.
|
|
||||||
|
|
||||||
To describe a prefix match, the `\\**` wildcard should be added to the pattern.
|
|
||||||
For example, `https?://example.com/**` matches against every request to host `example.com`.
|
|
||||||
====
|
|
||||||
|
|
||||||
.powerAssertions: Property<Boolean>
|
.powerAssertions: Property<Boolean>
|
||||||
[%collapsible]
|
[%collapsible]
|
||||||
====
|
====
|
||||||
|
|||||||
@@ -1,571 +1,60 @@
|
|||||||
= Pkl 0.32 Release Notes
|
= Pkl 0.32.0 Release Notes
|
||||||
:version: 0.32
|
:version: 0.32
|
||||||
:version-minor: 0.32.0
|
:version-minor: 0.32.0
|
||||||
:release-date: July 8th, 2026
|
:release-date: TBD
|
||||||
:version-next: 0.33
|
:version-next: 0.33
|
||||||
:version-next-date: October 2026
|
:version-next-date: TBD
|
||||||
|
|
||||||
include::partial$intro.adoc[]
|
include::partial$intro.adoc[]
|
||||||
|
|
||||||
NOTE: This is the final release that distributes binaries for macOS/amd64.
|
|
||||||
|
|
||||||
== Highlights [small]#💖#
|
== Highlights [small]#💖#
|
||||||
|
|
||||||
=== New data type: `Reference`
|
News you don't want to miss.
|
||||||
|
|
||||||
This release introduces a new data type called `Reference` (https://github.com/apple/pkl/pull/1354[#1354], https://github.com/apple/pkl/pull/1691[#1691], https://github.com/apple/pkl/pull/1692[#1692], https://github.com/apple/pkl/pull/1693[#1693], https://github.com/apple/pkl/pull/1695[#1695]).
|
.XXX
|
||||||
|
[%collapsible]
|
||||||
WARNING: This API is experimental. We are looking for feedback, and will aim to make this ready for production use in the next release.
|
|
||||||
|
|
||||||
A reference represents something whose actual value is unknown to Pkl, but nevertheless its type is checked.
|
|
||||||
The purpose of this data type is to improve how Pkl can be used to configure systems like GitHub Actions, Pulumi, Terraform, and more.
|
|
||||||
|
|
||||||
For example, let's assume that some system accepts YAML configuration that looks like so:
|
|
||||||
|
|
||||||
[source,yaml]
|
|
||||||
----
|
|
||||||
taskA:
|
|
||||||
uses: some-task
|
|
||||||
|
|
||||||
taskB:
|
|
||||||
uses: some-other-task
|
|
||||||
input: '${ taskA.output.number }'
|
|
||||||
----
|
|
||||||
|
|
||||||
In terms of YAML, `'${ taskA.output.number }'` is just a string.
|
|
||||||
However, semantically, it is an _expression_ in this target system, where `taskA.output.number` conveys some type.
|
|
||||||
|
|
||||||
Today, the only way to treat these values in Pkl is to also describe these as strings.
|
|
||||||
This introduces many shortcomings:
|
|
||||||
|
|
||||||
1. It leaves users vulnerable to syntax errors in this system.
|
|
||||||
2. It's hard to validate these beyond that they are a string.
|
|
||||||
3. Pkl has no understanding of the relationship between `taskA` and `taskB`.
|
|
||||||
|
|
||||||
With references, the above can be modeled in Pkl also as plain lookups:
|
|
||||||
|
|
||||||
[source,pkl]
|
|
||||||
----
|
|
||||||
taskA {
|
|
||||||
uses = "some-task"
|
|
||||||
}
|
|
||||||
|
|
||||||
taskB {
|
|
||||||
name = "some-other-task"
|
|
||||||
input = taskA.output.number
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Library authors describe types as `ref.Reference<D, T>`, where `D` is the _domain_, and `T` is the _referent type_.
|
|
||||||
|
|
||||||
[source,pkl]
|
|
||||||
----
|
|
||||||
import "pkl:ref"
|
|
||||||
|
|
||||||
class MyDomain extends ref.Domain { // <1>
|
|
||||||
function renderReference(ref: ref.Reference<MyDomain, Any>): String =
|
|
||||||
"${ " + ref.getData() + "." + ref.getPath().join(".") + " }"
|
|
||||||
}
|
|
||||||
|
|
||||||
typealias MyReference<T> = ref.Reference<MyDomain, T> // <2>
|
|
||||||
|
|
||||||
class MyTask {
|
|
||||||
input: MyReference<Number>
|
|
||||||
}
|
|
||||||
----
|
|
||||||
<1> References exist inside a domain. The domain defines how these references should be stringified.
|
|
||||||
<2> A typealias can be used to improve ergonomics when declaring references that share the same domain.
|
|
||||||
|
|
||||||
Pkl will check that type arguments match up:
|
|
||||||
|
|
||||||
* The referent type must line up.
|
|
||||||
+
|
|
||||||
`MyReference<Int>` is not assignable to `MyReference<String>`.
|
|
||||||
* The domain must line up.
|
|
||||||
+
|
|
||||||
`ref.Reference<MyDomain, Int>` is not assignable to `ref.Reference<OtherDomain, Int>`.
|
|
||||||
|
|
||||||
Additionally, references give you synthetic members.
|
|
||||||
|
|
||||||
[source,pkl]
|
|
||||||
----
|
|
||||||
class Bird {
|
|
||||||
name: String
|
|
||||||
}
|
|
||||||
|
|
||||||
bird: MyReference<Bird>
|
|
||||||
|
|
||||||
birdName = bird.name // <1>
|
|
||||||
----
|
|
||||||
<1> Gives a `MyReference<String>`, because `class Bird` has property `name: String`
|
|
||||||
|
|
||||||
The synthetic member contains metadata about the path that was used to access it (`.name` in this
|
|
||||||
case).
|
|
||||||
This can be used to stringify this reference in that target domain.
|
|
||||||
|
|
||||||
To read more about references, consult the xref:language-reference:index.adoc#references[language reference].
|
|
||||||
To read through the design decisions made, consult the https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0020-type-safe-deferred-references.adoc[SPICE].
|
|
||||||
|
|
||||||
=== Custom HTTP Headers
|
|
||||||
|
|
||||||
Pkl can now attach custom HTTP headers to outbound requests, making it possible to access private or authenticated resources (https://github.com/apple/pkl/pull/1196[#1196], https://github.com/apple/pkl/pull/1584[#1584]).
|
|
||||||
|
|
||||||
For example, a CLI user can add an `Authorization` header either in settings.pkl, or the PklProject file:
|
|
||||||
|
|
||||||
[tabs]
|
|
||||||
====
|
====
|
||||||
~/.pkl/settings.pkl::
|
XXX
|
||||||
+
|
|
||||||
[source,pkl]
|
|
||||||
----
|
|
||||||
amends "pkl:settings"
|
|
||||||
|
|
||||||
http {
|
|
||||||
headers {
|
|
||||||
["https://my.private.server/**"] {
|
|
||||||
["Authorization"] = "Bearer my-secret-token"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
PklProject::
|
|
||||||
+
|
|
||||||
[source,pkl]
|
|
||||||
----
|
|
||||||
amends "pkl:Project"
|
|
||||||
|
|
||||||
evaluatorSettings {
|
|
||||||
http {
|
|
||||||
headers {
|
|
||||||
["https://my.private.server/**"] {
|
|
||||||
["Authorization"] = "Bearer my-secret-token"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
----
|
|
||||||
====
|
====
|
||||||
|
|
||||||
Each key in `headers` is a glob pattern matched against the request URL.
|
|
||||||
When a request is made, every matching pattern's headers are added to the request.
|
|
||||||
|
|
||||||
Headers can also be configured in other ways:
|
|
||||||
|
|
||||||
* In the pkl-gradle plugin
|
|
||||||
* As a CLI flag
|
|
||||||
* In the Java/Swift/Go/Kotlin evaluator APIs
|
|
||||||
* In the pkl-executor API
|
|
||||||
|
|
||||||
Header names must conform to RFC 7230 token syntax.
|
|
||||||
Certain reserved names (e.g. `host`, `connection`, `content-length`) and prefixes (`proxy-`, `sec-`) are forbidden.
|
|
||||||
|
|
||||||
Thank you to https://github.com/kyokuping[@kyokuping] for their contributions to this feature!
|
|
||||||
|
|
||||||
To learn more, consult https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0022-http-headers.adoc[SPICE-0022].
|
|
||||||
|
|
||||||
== Noteworthy [small]#🎶#
|
== Noteworthy [small]#🎶#
|
||||||
|
|
||||||
=== Resolved evaluator settings
|
Ready when you need them.
|
||||||
|
|
||||||
PklProject files now resolve evaluator settings that are file paths (https://github.com/apple/pkl/pull/1394[#1394]).
|
.XXX
|
||||||
|
[%collapsible]
|
||||||
Some of the settings within `pkl:EvaluatorSettings` represent file paths.
|
====
|
||||||
However, these paths are resolved inconsistently:
|
XXX
|
||||||
|
====
|
||||||
* Pkl is inconsistent about what relative paths mean. `rootDir`, `moduleCacheDir`, and `modulePath` are relative to the project dir, while `ExternalReader.executable` is relative to the PWD.
|
|
||||||
* External readers defined in a PklProject have different behavior depending on the PWD.
|
|
||||||
* The logic for resolving these paths is dependent on the caller, rather than Pkl.
|
|
||||||
|
|
||||||
For CLI users, this means that the current working directory can affect how evaluator settings are loaded.
|
|
||||||
|
|
||||||
In Pkl 0.32, these paths are resolved entirely within Pkl, and resolved against the enclosing directory.
|
|
||||||
|
|
||||||
A new method `resolve()` is added to `pkl:EvaluatorSettings`, and a new property `resolvedEvaluatorSettings` is added to `pkl:Project`.
|
|
||||||
Language bindings are expected to use `resolvedEvaluatorSettings` when configuring the evaluator.
|
|
||||||
|
|
||||||
To read more about this change, consult https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0027-resolved-paths-in-pkl-evaluatorsettings.adoc[SPICE-0027].
|
|
||||||
|
|
||||||
=== Line continuations in multiline strings
|
|
||||||
|
|
||||||
When authoring multiline strings, it is now possible to use a _line continuation_ to break a single line's value over multiple lines (https://github.com/apple/pkl/pull/1507[#1507], https://github.com/apple/pkl/pull/1564[#1564]).
|
|
||||||
|
|
||||||
These two string snippets are logically identical:
|
|
||||||
|
|
||||||
[source,pkl]
|
|
||||||
----
|
|
||||||
str =
|
|
||||||
"""
|
|
||||||
Although the Dodo is extinct, \
|
|
||||||
the species will be remembered.
|
|
||||||
"""
|
|
||||||
----
|
|
||||||
|
|
||||||
[source%parsed,pkl]
|
|
||||||
----
|
|
||||||
str = "Although the Dodo is extinct, the species will be remembered."
|
|
||||||
----
|
|
||||||
|
|
||||||
To read more about this design, consult https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0028-multiline-string-continuation.adoc[SPICE-0028].
|
|
||||||
|
|
||||||
[[parse-time-variable-resolution]]
|
|
||||||
=== Parse-time variable resolution
|
|
||||||
|
|
||||||
Pkl now resolves variables at parse time (https://github.com/apple/pkl/pull/1429[#1429], https://github.com/apple/pkl/pull/1622[#1622], https://github.com/apple/pkl/pull/1634[#1634], https://github.com/apple/pkl/pull/1706[#1706]).
|
|
||||||
|
|
||||||
Currently, Pkl defers the resolution of variable names to when the node is executed.
|
|
||||||
In Pkl 0.32, these are resolved when the file is parsed.
|
|
||||||
|
|
||||||
This is a pre-requisite feature for many upcoming features, such as flat member syntax and method varargs.
|
|
||||||
|
|
||||||
Additionally, this enables some runtime optimizations, including let expressions.
|
|
||||||
|
|
||||||
[[let-expression-improvements]]
|
|
||||||
=== Let expression performance improvements
|
|
||||||
|
|
||||||
Performance improvements were made to the handling of xref:language-reference:index.adoc#let-expressions[let expressions] (https://github.com/apple/pkl/pull/1622[#1622], https://github.com/apple/pkl/pull/1634[#1634]).
|
|
||||||
|
|
||||||
Here is a sample benchmark:
|
|
||||||
|
|
||||||
[source,pkl]
|
|
||||||
----
|
|
||||||
amends "pkl:Benchmark"
|
|
||||||
|
|
||||||
microbenchmarks {
|
|
||||||
["let"] {
|
|
||||||
expression =
|
|
||||||
let (a = 1)
|
|
||||||
let (b = 2)
|
|
||||||
let (c = 3)
|
|
||||||
let (d = 4)
|
|
||||||
let (e = 1)
|
|
||||||
let (f = 2)
|
|
||||||
let (g = 3)
|
|
||||||
let (h = 4)
|
|
||||||
let (i = 1)
|
|
||||||
let (j = 2)
|
|
||||||
let (k = 3)
|
|
||||||
let (l = 4)
|
|
||||||
let (m = 1)
|
|
||||||
let (n = 2)
|
|
||||||
let (o = 3)
|
|
||||||
let (p = 4)
|
|
||||||
let (q = 1)
|
|
||||||
let (r = 2)
|
|
||||||
let (s = 3)
|
|
||||||
let (t = 4)
|
|
||||||
a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
output {
|
|
||||||
renderer {
|
|
||||||
converters {
|
|
||||||
[Duration] = (it: Duration) -> super[Duration].apply(it.toUnit("ns"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
And here are the results when run on a MacBook Pro M4 Max machine: `jpkl` is about 12x faster, while native `pkl` is about 4000x faster:
|
|
||||||
|
|
||||||
|===
|
|
||||||
|Variant |Results (mean)
|
|
||||||
|
|
||||||
|jpkl
|
|
||||||
|1208.06.ns -> 97.76.ns
|
|
||||||
|
|
||||||
|pkl
|
|
||||||
|1275.96.ns -> 0.32.ns
|
|
||||||
|===
|
|
||||||
|
|
||||||
=== Test reporter
|
|
||||||
|
|
||||||
A test reporter option is added when running tests (https://github.com/apple/pkl/pull/1563[#1563], https://github.com/apple/pkl/pull/1597[#1597]).
|
|
||||||
|
|
||||||
A new CLI flag, `--test-reporter`, is now available to the `pkl test` and `pkl project package` commands.
|
|
||||||
This flag accepts the name of a test reporter to be used to format test result output.
|
|
||||||
|
|
||||||
There are two possible reporters:
|
|
||||||
|
|
||||||
* `spec` (default) - the current reporter
|
|
||||||
* `minimal` - a reporter that only emits failing tests
|
|
||||||
|
|
||||||
This option is also available to pkl-gradle users.
|
|
||||||
|
|
||||||
=== Dependency notation improvements
|
|
||||||
|
|
||||||
Pkl's evaluator now accepts https://pkl-lang.org/main/current/language-reference/index.html#dependency-notation[dependency notation URIs] as source modules (https://github.com/apple/pkl/pull/1595[#1595]).
|
|
||||||
|
|
||||||
In Pkl 0.31, we introduced xref:0.31.adoc#cli-dependency-notation[CLI support for dependency notation].
|
|
||||||
Now, this support has been extended to the evaluator itself.
|
|
||||||
This means that users of Pkl's various language bindings can also use dependency notation.
|
|
||||||
|
|
||||||
Additionally, the limitation on local dependencies has been dropped.
|
|
||||||
|
|
||||||
=== pkldoc supports single-package docsites
|
|
||||||
|
|
||||||
pkldoc has improved support for single-package documentation websites (https://github.com/apple/pkl/pull/1592[#1592]).
|
|
||||||
|
|
||||||
When a docsite has only one package name, and also no overview from a `docsite-info.pkl`, the resulting docsite does not have a top-level package index page.
|
|
||||||
Instead, it redirects to the package page, and omits the site-level element from the breadcrumb.
|
|
||||||
|
|
||||||
=== Allowed package imports in `PklProject`
|
|
||||||
|
|
||||||
PklProject files can now import xref:language-reference:index.adoc#package-asset-uri[package asset URIs] (https://github.com/apple/pkl/pull/1547[#1547]).
|
|
||||||
|
|
||||||
This means that it is now possible to centralize and share common configurations across multiple projects.
|
|
||||||
|
|
||||||
=== Java Library Changes
|
|
||||||
|
|
||||||
==== Switch to JSpecify annotations
|
|
||||||
|
|
||||||
Pkl has switched to using https://jspecify.dev[JSpecify] for annotating nullability (https://github.com/apple/pkl/pull/1515[#1515], https://github.com/apple/pkl/pull/1527[#1527], https://github.com/apple/pkl/pull/1528[#1528], https://github.com/apple/pkl/pull/1530[#1530], https://github.com/apple/pkl/pull/1544[#1544], https://github.com/apple/pkl/pull/1601[#1601], https://github.com/apple/pkl/pull/1607[#1607]).
|
|
||||||
|
|
||||||
Currently, Pkl uses annotations from the `com.google.code.findbugs:jsr305` library.
|
|
||||||
This suffers from some issues:
|
|
||||||
|
|
||||||
* The https://jcp.org/en/jsr/detail?id=305[JSR-305 proposal] itself is dormant and unlikely to be adopted.
|
|
||||||
* The `com.google.code.findbugs:jsr305` library contributes packages to `javax`, which violates the https://www.oracle.com/downloads/licenses/binary-code-license.html[Oracle Binary Code License Agreement].
|
|
||||||
|
|
||||||
In contrast, JSpecify is widely seen as the standard for nullability annotations, and is already understood by most tools.
|
|
||||||
|
|
||||||
This impacts Pkl's Java APIs; methods previously annotated using JSR-305 nullability annotations now use JSpecify.
|
|
||||||
Additionally, the Java code generator now emits JSpecify annotations by default.
|
|
||||||
|
|
||||||
==== New API: `org.pkl.config.java.ConfigDecoder`
|
|
||||||
|
|
||||||
A new API is introduced called `org.pkl.config.java.ConfigDecoder` (https://github.com/apple/pkl/pull/1533[#1533]).
|
|
||||||
|
|
||||||
Currently, the `org.pkl.config.java.Config` interface mixes configuration representation with decoding logic.
|
|
||||||
To better separate these concerns, a new API is introduced for decoding.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
[source,java]
|
|
||||||
----
|
|
||||||
class Main {
|
|
||||||
Config getConfig() {
|
|
||||||
var decoder = new ConfigDecoderBuilder().preconfigured().build();
|
|
||||||
return decoder.decode(bytes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
==== New `asNullable` methods in `pkl.config.java`
|
|
||||||
|
|
||||||
New methods are added for decoding into nullable types (https://github.com/apple/pkl/pull/1544[#1544]).
|
|
||||||
|
|
||||||
The following methods are introduced:
|
|
||||||
|
|
||||||
* `org.pkl.config.java.Config.asNullable`
|
|
||||||
* `org.pkl.config.java.JavaType.pairOfNullableFirst`
|
|
||||||
* `org.pkl.config.java.JavaType.pairOfNullableSecond`
|
|
||||||
* `org.pkl.config.java.JavaType.pairOfNullableFirstAndSecond`
|
|
||||||
* `org.pkl.config.java.JavaType.arrayOfNullable`
|
|
||||||
* `org.pkl.config.java.JavaType.iterableOfNullable`
|
|
||||||
* `org.pkl.config.java.JavaType.collectionOfNullable`
|
|
||||||
* `org.pkl.config.java.JavaType.listOfNullable`
|
|
||||||
* `org.pkl.config.java.JavaType.setOfNullable`
|
|
||||||
* `org.pkl.config.java.JavaType.mapOfNullableKeys`
|
|
||||||
* `org.pkl.config.java.JavaType.mapOfNullableValues`
|
|
||||||
* `org.pkl.config.java.JavaType.mapOfNullableKeysAndValues`
|
|
||||||
|
|
||||||
NOTE: `org.pkl.config.java.Config.as` can also return a `null` value. In a future release, this method will have a runtime non-null assertion.
|
|
||||||
|
|
||||||
==== `pkl-formatter` migrated to Java
|
|
||||||
|
|
||||||
The `pkl-formatter` library has been migrated from Kotlin to Java (https://github.com/apple/pkl/pull/1514[#1514]).
|
|
||||||
|
|
||||||
Therefore, its Kotlin dependency is dropped.
|
|
||||||
|
|
||||||
=== Standard Library Changes
|
|
||||||
|
|
||||||
==== `pkl:EvaluatorSettings`
|
|
||||||
|
|
||||||
* New method: link:{uri-stdlib-evaluatorSettingsModule}#resolve()[`EvaluatorSettings.resolve()`]
|
|
||||||
* New method: link:{uri-stdlib-evaluatorSettingsModule}#resolveForOs()[`EvaluatorSettings.resolveForOs()`]
|
|
||||||
* New property: link:{uri-stdlib-evaluatorSettingsExternalReaderClass}#workingDir[`EvaluatorSettings#ExternalReader.workingDir`]
|
|
||||||
* New property: link:{uri-stdlib-evaluatorSettingsHttpClass}#headers[`EvaluatorSettings#Http.headers`]
|
|
||||||
* New typealias: link:{uri-stdlib-evaluatorSettingsModule}#HttpHeaders[`EvaluatorSettings.HttpHeaders`]
|
|
||||||
* New typealias: link:{uri-stdlib-evaluatorSettingsModule}#HttpHeaderName[`EvaluatorSettings.HttpHeaderName`]
|
|
||||||
* New typealias: link:{uri-stdlib-evaluatorSettingsModule}#HttpHeaderValue[`EvaluatorSettings.HttpHeaderValue`]
|
|
||||||
|
|
||||||
==== `pkl:base`
|
|
||||||
|
|
||||||
* New property: link:{uri-stdlib-baseModule}/String#isGlobPattern[`String.isGlobPattern`]
|
|
||||||
|
|
||||||
==== `pkl:Project`
|
|
||||||
|
|
||||||
* New property: link:{uri-stdlib-projectModule}#resolvedEvaluatorSettings[`Project.resolvedEvaluatorSettings`]
|
|
||||||
|
|
||||||
==== `pkl:ref`
|
|
||||||
|
|
||||||
* New module introduced.
|
|
||||||
|
|
||||||
=== pkl-gradle changes
|
|
||||||
|
|
||||||
The following changes have been made to pkl-gradle.
|
|
||||||
|
|
||||||
==== Support for external readers
|
|
||||||
|
|
||||||
External readers can now be configured when configuring evaluators (https://github.com/apple/pkl/pull/1578[#1578]).
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
[source,kotlin]
|
|
||||||
----
|
|
||||||
val myPklTask by pkl.evaluators.creating {
|
|
||||||
val foo by externalModuleReaders.creating {
|
|
||||||
executable = "pkl-foo-reader"
|
|
||||||
arguments = listOf("--bar", "baz")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
==== Support for module/resource readers from SPI
|
|
||||||
|
|
||||||
Gradle users can now add module/resource readers by registering a service via the Java SPI mechanism (https://github.com/apple/pkl/pull/1581[#1581]).
|
|
||||||
|
|
||||||
==== Support for Gradle configuration cache
|
|
||||||
|
|
||||||
The plugin now supports the Gradle configuration cache feature (https://github.com/apple/pkl/issues/1425[#1425]).
|
|
||||||
|
|
||||||
Thanks to https://github.com/ffluk3[@ffluk3] for their contributions to this feature!
|
|
||||||
|
|
||||||
== Breaking Changes [small]#💔#
|
== Breaking Changes [small]#💔#
|
||||||
|
|
||||||
=== Name resolution changes
|
Things to watch out for when upgrading.
|
||||||
|
|
||||||
Variables are now <<parse-time-variable-resolution,resolved at parse time>>.
|
=== Removed Java APIs
|
||||||
|
|
||||||
As part of this change, some names are resolved differently.
|
The following APIs have been removed without replacement.
|
||||||
|
|
||||||
Take the following code:
|
* `org.pkl.config.java.Config#makeConfig` (pr:https://github.com/apple/pkl/pull/1531[])
|
||||||
|
|
||||||
[source,pkl]
|
.XXX
|
||||||
----
|
[%collapsible]
|
||||||
qux = "outer"
|
====
|
||||||
|
XXX
|
||||||
|
====
|
||||||
|
|
||||||
foo {
|
== Work In Progress [small]#🚆#
|
||||||
when (cond) {
|
|
||||||
qux = "inner"
|
|
||||||
}
|
|
||||||
res = qux
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Currently, `res = qux` will eval to either `res = "outer"` or `res = "inner"` depending on whether `cond` evals to `true` or not.
|
They missed the train but deserve a mention.
|
||||||
This is a lexical lookup that is either one level up, or zero levels up, depending on the result of code execution.
|
|
||||||
|
|
||||||
This type of resolution is not possible at parse time, because we do not know what `cond` executes to.
|
.XXX
|
||||||
In Pkl 0.32, `res` will always resolve to the inner `qux`, and this snippet will throw if the when generator does not fire.
|
[%collapsible]
|
||||||
|
====
|
||||||
=== Java API changes
|
XXX
|
||||||
|
====
|
||||||
The following breaking changes have been made to the Java API.
|
|
||||||
|
|
||||||
* `org.pkl.config.java.Config#makeConfig`
|
|
||||||
+
|
|
||||||
Removed without replacement
|
|
||||||
|
|
||||||
* `org.pkl.config.java.Config.fromPklBinary`
|
|
||||||
+
|
|
||||||
Deprecated, replaced with `org.pkl.config.java.ConfigDecoder`
|
|
||||||
|
|
||||||
* `org.pkl.config.java.mapper.NonNull`
|
|
||||||
+
|
|
||||||
Deprecated, replaced with `org.jspecify.annotations.NonNull`
|
|
||||||
|
|
||||||
* `org.pkl.core.evaluatorSettings.PklEvaluatorSettings.parse`
|
|
||||||
+
|
|
||||||
No longer accepts `pathNormalizer` argument
|
|
||||||
|
|
||||||
* `org.pkl.formatter.Formatter`
|
|
||||||
** Pass `GrammarVersion` to constructor instead of each `format` method
|
|
||||||
** Replace `format(Path): String` with `format(Reader, Appendable)`
|
|
||||||
** Mark as `throws IOException`
|
|
||||||
** Deprecate methods that accept `GrammarVersion` as an argument
|
|
||||||
|
|
||||||
=== Loading rule changes in `pkl:EvaluatorSettings`
|
|
||||||
|
|
||||||
Breaking changes have been made to how evaluator settings are loaded when using `PklProject` (https://github.com/apple/pkl/pull/1394[#1394]).
|
|
||||||
|
|
||||||
==== Loading rule changes for the external reader executable
|
|
||||||
|
|
||||||
The following changes have been made for the `executable` property in an external reader:
|
|
||||||
|
|
||||||
* If the executable does not contain a slash (`/` on POSIX, `\` on Windows) character, it is always resolved against the `PATH` environment variable.
|
|
||||||
* If it does contain a slash, it is resolved relative to the enclosing PklProject directory, instead of the current working directory.
|
|
||||||
|
|
||||||
=== Changes to `--external-module-reader` and `--external-resource-reader` CLI flags
|
|
||||||
|
|
||||||
The `--external-module-reader` and `--external-resource-reader` CLI flags will _replace_ any external readers otherwise configured within a PklProject, instead of add to it (https://github.com/apple/pkl/pull/1394[#1394]).
|
|
||||||
|
|
||||||
This makes this behavior consistent with how other settings work.
|
|
||||||
|
|
||||||
== Bug Fixes [small]#🐜#
|
|
||||||
|
|
||||||
The following bugs have been fixed.
|
|
||||||
|
|
||||||
* Data race in MessagePack encoder during concurrent server sends (https://github.com/apple/pkl/issues/1486[#1486])
|
|
||||||
* pkl-doc library publishes incorrect Maven dependency scopes (https://github.com/apple/pkl/issues/1517[#1517])
|
|
||||||
* Re-using pklbinary#Renderer during rendering results in incorrect output (https://github.com/apple/pkl/pull/1525[#1525])
|
|
||||||
* Cannot glob using subpatterns inside a project dependency (https://github.com/apple/pkl/issues/1545[#1545])
|
|
||||||
* Project package command incompatible with glob imports on Windows (https://github.com/apple/pkl/issues/1556[#1556])
|
|
||||||
* Thrown PklBugException when using power assertions with unavailable source sections (https://github.com/apple/pkl/pull/1571[#1571])
|
|
||||||
* pkl-doc: DocGenerator never shuts down its thread pool (https://github.com/apple/pkl/issues/1583[#1583])
|
|
||||||
* Imports gathering Gradle task can fail with a confusing exception (https://github.com/apple/pkl/issues/1591[#1591])
|
|
||||||
* HTTP rewrite fails with PklBugException under tr-TR locale when host contains 'I' (https://github.com/apple/pkl/issues/1617[#1617])
|
|
||||||
* Formatter bug fixes (https://github.com/apple/pkl/pull/1619[#1619])
|
|
||||||
* Unrelated error message thrown when computing an error message (https://github.com/apple/pkl/pull/1629[#1629])
|
|
||||||
* pkl-binary serialization produces an incomplete msgpack value in the presence of local properties (https://github.com/apple/pkl/issues/1631[#1631]).
|
|
||||||
* Poor parser error message (https://github.com/apple/pkl/issues/1638[#1638])
|
|
||||||
* relativePathTo does not check if receiver is a module (https://github.com/apple/pkl/issues/1649[#1649])
|
|
||||||
* `Int` overflow on multiplication throws unexpected exception (https://github.com/apple/pkl/issues/1651[#1651])
|
|
||||||
* Incorrect eager check for `Map` type (https://github.com/apple/pkl/issues/1653[#1653])
|
|
||||||
* Incorrect `toRadixString()` for `math.minInt` (https://github.com/apple/pkl/issues/1655[#1655])
|
|
||||||
* `Evaluator.evaluateSchema()` throws if properties are annotated with `@ConvertProperty` (https://github.com/apple/pkl/issues/1657[#1657])
|
|
||||||
* `String.padStart` and `String.padEnd` return incorrect strings sometimes (https://github.com/apple/pkl/issues/1661[#1661])
|
|
||||||
* `String.getOrNull` crashes with certain strings (https://github.com/apple/pkl/issues/1662[#1662])
|
|
||||||
* Incorrect facts in `pkl:base` doc comments (https://github.com/apple/pkl/pull/1669[#1669])
|
|
||||||
* Index-based methods on Set aren't implemented (https://github.com/apple/pkl/issues/1682[#1682])
|
|
||||||
* pkl-gradle throws exception when a Pkl task can't create an evaluator during configuration time (https://github.com/apple/pkl/pull/1684[#1684])
|
|
||||||
* Unrelated exception gets thrown when validating elements/entries in objects (https://github.com/apple/pkl/issues/1697[#1697])
|
|
||||||
* Type argument is lost in constraint expressions within generic typealiases (https://github.com/apple/pkl/issues/1705[#1705])
|
|
||||||
* Typealiases with type var as root are broken (https://github.com/apple/pkl/issues/1711[#1711])
|
|
||||||
* Incorrect `List`/`Set`/`Map`/`Listing`/`Mapping`/union type check behavior through typealiases (https://github.com/apple/pkl/issues/1710[#1710])
|
|
||||||
* Type aliases with type var as root are broken (https://github.com/apple/pkl/issues/1711[#1711])
|
|
||||||
* Type checks through aliases are always run lazily even when they should be eager (https://github.com/apple/pkl/issues/1716[#1716])
|
|
||||||
* Improve thread safety when evaluating `pkl:base` (https://github.com/apple/pkl/pull/1719[#1719])
|
|
||||||
* Incorrect member links in doc comments (https://github.com/apple/pkl/pull/1723[#1723])
|
|
||||||
* pkl-gradle plugin does not allow `projectpackage:` reads by default (https://github.com/apple/pkl/issues/1734[#1734])
|
|
||||||
* `IntSeq` incorrectly emits on empty ``IntSeq``s (https://github.com/apple/pkl/issues/1738[#1738])
|
|
||||||
|
|
||||||
== Security Fixes [small]#🔒#
|
|
||||||
|
|
||||||
The following security vulnerabilities were fixed:
|
|
||||||
|
|
||||||
* Remote packages can read local filesystem items by escaping local dependency roots (https://github.com/apple/pkl/security/advisories/GHSA-fgvf-hh2w-cxff[GHSA-fgvf-hh2w-cxff], https://github.com/apple/pkl/pull/1737[#1737])
|
|
||||||
* Packages can be read/written outside the configured cache directory (https://github.com/apple/pkl/security/advisories/GHSA-87qh-25w9-mh34[GHSA-87qh-25w9-mh34], https://github.com/apple/pkl/pull/1683[#1683])
|
|
||||||
|
|
||||||
== 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):
|
||||||
|
|
||||||
* https://github.com/04cb[@04cb]
|
* XXX
|
||||||
* https://github.com/0xmrma[@0xmrma]
|
|
||||||
* https://github.com/adityabagchi24[@adityabagchi24]
|
|
||||||
* https://github.com/adityasingh2400[@adityasingh2400]
|
|
||||||
* https://github.com/bioball[@bioball]
|
|
||||||
* https://github.com/fallintoplace[@fallintoplace]
|
|
||||||
* https://github.com/ffluk3[@ffluk3]
|
|
||||||
* https://github.com/HT154[@HT154]
|
|
||||||
* https://github.com/KushalP[@KushalP]
|
|
||||||
* https://github.com/kyokuping[@kyokuping]
|
|
||||||
* https://github.com/ldaley[@ldaley]
|
|
||||||
* https://github.com/mirkoalicastro[@mirkoalicastro]
|
|
||||||
* https://github.com/netvl[@netvl]
|
|
||||||
* https://github.com/odenix[@odenix]
|
|
||||||
* https://github.com/stackoverflow[@stackoverflow]
|
|
||||||
* https://github.com/vinayakj592[@vinayakj592]
|
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
= Pkl 0.33 Release Notes
|
|
||||||
:version: 0.33
|
|
||||||
:version-minor: 0.33.0
|
|
||||||
:release-date: XXX
|
|
||||||
:version-next: 0.34
|
|
||||||
:version-next-date: February 2027
|
|
||||||
|
|
||||||
include::partial$intro.adoc[]
|
|
||||||
|
|
||||||
== Highlights [small]#💖#
|
|
||||||
|
|
||||||
=== XXX
|
|
||||||
|
|
||||||
== Noteworthy [small]#🎶#
|
|
||||||
|
|
||||||
=== XXX
|
|
||||||
|
|
||||||
== Breaking Changes [small]#💔#
|
|
||||||
|
|
||||||
=== XXX
|
|
||||||
|
|
||||||
== Bug Fixes [small]#🐜#
|
|
||||||
|
|
||||||
* XXX
|
|
||||||
|
|
||||||
== Contributors [small]#🙏#
|
|
||||||
|
|
||||||
We would like to thank the contributors to this release (in alphabetical order):
|
|
||||||
|
|
||||||
* XXX
|
|
||||||
@@ -1,15 +1,8 @@
|
|||||||
= Changelog
|
= Changelog
|
||||||
include::ROOT:partial$component-attributes.adoc[]
|
include::ROOT:partial$component-attributes.adoc[]
|
||||||
|
|
||||||
[[release-0.33.0]]
|
|
||||||
== 0.33.0 (UNRELEASED)
|
|
||||||
|
|
||||||
xref:0.33.adoc[Release Notes]
|
|
||||||
|
|
||||||
[[release-0.32.0]]
|
[[release-0.32.0]]
|
||||||
== 0.32.0 (2026-07-08)
|
== 0.32.0 (UNRELEASED)
|
||||||
|
|
||||||
xref:0.32.adoc[Release Notes]
|
|
||||||
|
|
||||||
[[release-0.31.1]]
|
[[release-0.31.1]]
|
||||||
== 0.31.1 (2026-03-26)
|
== 0.31.1 (2026-03-26)
|
||||||
@@ -45,7 +38,6 @@ Thank you to all the contributors for this release!
|
|||||||
== 0.31.0 (2026-02-26)
|
== 0.31.0 (2026-02-26)
|
||||||
|
|
||||||
xref:0.31.adoc[Release Notes]
|
xref:0.31.adoc[Release Notes]
|
||||||
|
|
||||||
[[release-0.30.2]]
|
[[release-0.30.2]]
|
||||||
|
|
||||||
== 0.30.2 (2025-12-15)
|
== 0.30.2 (2025-12-15)
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ Too many lines separate `foo` and `baz`.
|
|||||||
Properties that override an existing property shouldn't have doc comments nor type annotations,
|
Properties that override an existing property shouldn't have doc comments nor type annotations,
|
||||||
unless the type is intentionally overridden via `extends`.
|
unless the type is intentionally overridden via `extends`.
|
||||||
|
|
||||||
[source%parsed,{pkl}]
|
[source%tested,{pkl}]
|
||||||
----
|
----
|
||||||
amends "myOtherModule.pkl"
|
amends "myOtherModule.pkl"
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,6 @@
|
|||||||
* xref:ROOT:evolution-and-roadmap.adoc[Evolution and Roadmap]
|
* xref:ROOT:evolution-and-roadmap.adoc[Evolution and Roadmap]
|
||||||
|
|
||||||
* xref:release-notes:index.adoc[Release Notes]
|
* xref:release-notes:index.adoc[Release Notes]
|
||||||
** xref:release-notes:0.33.adoc[0.33 Release Notes]
|
|
||||||
** xref:release-notes:0.32.adoc[0.32 Release Notes]
|
** xref:release-notes:0.32.adoc[0.32 Release Notes]
|
||||||
** xref:release-notes:0.31.adoc[0.31 Release Notes]
|
** xref:release-notes:0.31.adoc[0.31 Release Notes]
|
||||||
** xref:release-notes:0.30.adoc[0.30 Release Notes]
|
** xref:release-notes:0.30.adoc[0.30 Release Notes]
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Copyright © 2024-2026 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 java.nio.file.Files
|
|
||||||
import kotlin.io.path.isDirectory
|
|
||||||
import kotlin.io.path.isRegularFile
|
|
||||||
import kotlin.io.path.useDirectoryEntries
|
|
||||||
import org.junit.platform.commons.annotation.Testable
|
import org.junit.platform.commons.annotation.Testable
|
||||||
import org.junit.platform.engine.*
|
import org.junit.platform.engine.*
|
||||||
import org.junit.platform.engine.TestDescriptor.Type
|
import org.junit.platform.engine.TestDescriptor.Type
|
||||||
@@ -35,18 +16,23 @@ 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.evaluatorSettings.TraceMode
|
||||||
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
|
||||||
import org.pkl.core.repl.ReplResponse
|
import org.pkl.core.repl.ReplResponse
|
||||||
import org.pkl.core.repl.ReplServer
|
import org.pkl.core.repl.ReplServer
|
||||||
import org.pkl.core.resource.ResourceReaders
|
|
||||||
import org.pkl.core.util.IoUtils
|
import org.pkl.core.util.IoUtils
|
||||||
|
import org.pkl.core.http.HttpClient
|
||||||
import org.pkl.parser.Parser
|
import org.pkl.parser.Parser
|
||||||
import org.pkl.parser.ParserError
|
import org.pkl.parser.ParserError
|
||||||
import org.pkl.parser.syntax.ClassProperty
|
import org.pkl.parser.syntax.ClassProperty
|
||||||
|
import org.pkl.core.resource.ResourceReaders
|
||||||
|
import java.nio.file.Files
|
||||||
|
import kotlin.io.path.isDirectory
|
||||||
|
import kotlin.io.path.isRegularFile
|
||||||
|
import kotlin.io.path.useDirectoryEntries
|
||||||
|
|
||||||
@Testable class DocSnippetTests
|
@Testable
|
||||||
|
class DocSnippetTests
|
||||||
|
|
||||||
class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.ExecutionContext>() {
|
class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.ExecutionContext>() {
|
||||||
private val projectDir = rootProjectDir.resolve("docs")
|
private val projectDir = rootProjectDir.resolve("docs")
|
||||||
@@ -55,8 +41,7 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
private companion object {
|
private companion object {
|
||||||
val headingRegex = Regex("""(?u)^\s*(=++)\s*(.+)""")
|
val headingRegex = Regex("""(?u)^\s*(=++)\s*(.+)""")
|
||||||
val collapsibleBlockRegex = Regex("""(?u)^\s*\[%collapsible""")
|
val collapsibleBlockRegex = Regex("""(?u)^\s*\[%collapsible""")
|
||||||
val codeBlockRegex =
|
val codeBlockRegex = Regex("""(?u)^\s*\[source(?:%(tested|parsed)(%error)?)?(?:,\{?([a-zA-Z-_]+)}?)?""")
|
||||||
Regex("""(?u)^\s*\[source(?:%(tested|parsed)(%error)?)?(?:,\{?([a-zA-Z-_]+)}?)?""")
|
|
||||||
val codeBlockNameRegex = Regex("""(?u)^\s*\.(.+)""")
|
val codeBlockNameRegex = Regex("""(?u)^\s*\.(.+)""")
|
||||||
val codeBlockDelimiterRegex = Regex("""(?u)^\s*----""")
|
val codeBlockDelimiterRegex = Regex("""(?u)^\s*----""")
|
||||||
val graphicsRegex = Regex("\\[small]#.+#")
|
val graphicsRegex = Regex("\\[small]#.+#")
|
||||||
@@ -66,7 +51,7 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
|
|
||||||
override fun discover(
|
override fun discover(
|
||||||
discoveryRequest: EngineDiscoveryRequest,
|
discoveryRequest: EngineDiscoveryRequest,
|
||||||
uniqueId: UniqueId,
|
uniqueId: UniqueId
|
||||||
): TestDescriptor {
|
): TestDescriptor {
|
||||||
val packageSelectors = discoveryRequest.getSelectorsByType(PackageSelector::class.java)
|
val packageSelectors = discoveryRequest.getSelectorsByType(PackageSelector::class.java)
|
||||||
val classSelectors = discoveryRequest.getSelectorsByType(ClassSelector::class.java)
|
val classSelectors = discoveryRequest.getSelectorsByType(ClassSelector::class.java)
|
||||||
@@ -77,14 +62,12 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
val packageName = testClass.`package`.name
|
val packageName = testClass.`package`.name
|
||||||
val className = testClass.name
|
val className = testClass.name
|
||||||
|
|
||||||
if (
|
if (methodSelectors.isEmpty()
|
||||||
methodSelectors.isEmpty() &&
|
&& (packageSelectors.isEmpty() || packageSelectors.any { it.packageName == packageName })
|
||||||
(packageSelectors.isEmpty() || packageSelectors.any { it.packageName == packageName }) &&
|
&& (classSelectors.isEmpty() || classSelectors.any { it.className == className })
|
||||||
(classSelectors.isEmpty() || classSelectors.any { it.className == className })
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
val rootDescriptor =
|
val rootDescriptor = Descriptor.Path(uniqueId, docsDir.fileName.toString(), ClassSource.from(testClass), docsDir)
|
||||||
Descriptor.Path(uniqueId, docsDir.fileName.toString(), ClassSource.from(testClass), docsDir)
|
|
||||||
doDiscover(rootDescriptor, uniqueIdSelectors)
|
doDiscover(rootDescriptor, uniqueIdSelectors)
|
||||||
return rootDescriptor
|
return rootDescriptor
|
||||||
}
|
}
|
||||||
@@ -94,34 +77,36 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun createExecutionContext(request: ExecutionRequest): ExecutionContext {
|
override fun createExecutionContext(request: ExecutionRequest): ExecutionContext {
|
||||||
val replServer =
|
val replServer = ReplServer(
|
||||||
ReplServer(
|
SecurityManagers.defaultManager,
|
||||||
SecurityManagers.defaultManager,
|
HttpClient.dummyClient(),
|
||||||
HttpClient.dummyClient(),
|
Loggers.stdErr(),
|
||||||
Loggers.stdErr(),
|
listOf(
|
||||||
listOf(
|
ModuleKeyFactories.standardLibrary,
|
||||||
ModuleKeyFactories.standardLibrary,
|
ModuleKeyFactories.classPath(DocSnippetTests::class.java.classLoader),
|
||||||
ModuleKeyFactories.classPath(DocSnippetTests::class.java.classLoader),
|
ModuleKeyFactories.file
|
||||||
ModuleKeyFactories.file,
|
),
|
||||||
),
|
listOf(
|
||||||
listOf(ResourceReaders.environmentVariable(), ResourceReaders.externalProperty()),
|
ResourceReaders.environmentVariable(),
|
||||||
System.getenv(),
|
ResourceReaders.externalProperty()
|
||||||
emptyMap(),
|
),
|
||||||
null,
|
System.getenv(),
|
||||||
null,
|
emptyMap(),
|
||||||
null,
|
null,
|
||||||
IoUtils.getCurrentWorkingDir(),
|
null,
|
||||||
StackFrameTransformers.defaultTransformer,
|
null,
|
||||||
false,
|
IoUtils.getCurrentWorkingDir(),
|
||||||
TraceMode.COMPACT,
|
StackFrameTransformers.defaultTransformer,
|
||||||
)
|
false,
|
||||||
|
TraceMode.COMPACT,
|
||||||
|
)
|
||||||
return ExecutionContext(replServer)
|
return ExecutionContext(replServer)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun doDiscover(rootDescriptor: TestDescriptor, selectors: List<UniqueIdSelector>) {
|
private fun doDiscover(rootDescriptor: TestDescriptor, selectors: List<UniqueIdSelector>) {
|
||||||
fun isMatch(other: UniqueId) =
|
fun isMatch(other: UniqueId) = selectors.isEmpty() || selectors.any {
|
||||||
selectors.isEmpty() ||
|
it.uniqueId.hasPrefix(other) || other.hasPrefix(it.uniqueId)
|
||||||
selectors.any { it.uniqueId.hasPrefix(other) || other.hasPrefix(it.uniqueId) }
|
}
|
||||||
|
|
||||||
docsDir.useDirectoryEntries { docsDirEntries ->
|
docsDir.useDirectoryEntries { docsDirEntries ->
|
||||||
for (docsDirEntry in docsDirEntries) {
|
for (docsDirEntry in docsDirEntries) {
|
||||||
@@ -131,13 +116,12 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
val docsDirEntryId = rootDescriptor.uniqueId.append("dir", docsDirEntryName)
|
val docsDirEntryId = rootDescriptor.uniqueId.append("dir", docsDirEntryName)
|
||||||
if (!isMatch(docsDirEntryId)) continue
|
if (!isMatch(docsDirEntryId)) continue
|
||||||
|
|
||||||
val docsDirEntryDescriptor =
|
val docsDirEntryDescriptor = Descriptor.Path(
|
||||||
Descriptor.Path(
|
docsDirEntryId,
|
||||||
docsDirEntryId,
|
docsDirEntryName,
|
||||||
docsDirEntryName,
|
DirectorySource.from(docsDirEntry.toFile()),
|
||||||
DirectorySource.from(docsDirEntry.toFile()),
|
docsDirEntry
|
||||||
docsDirEntry,
|
)
|
||||||
)
|
|
||||||
rootDescriptor.addChild(docsDirEntryDescriptor)
|
rootDescriptor.addChild(docsDirEntryDescriptor)
|
||||||
|
|
||||||
val pagesDir = docsDirEntry.resolve("pages")
|
val pagesDir = docsDirEntry.resolve("pages")
|
||||||
@@ -147,20 +131,17 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
for (pagesDirEntry in pagesDirEntries) {
|
for (pagesDirEntry in pagesDirEntries) {
|
||||||
val pagesDirEntryName = pagesDirEntry.fileName.toString()
|
val pagesDirEntryName = pagesDirEntry.fileName.toString()
|
||||||
val pagesDirEntryId = docsDirEntryId.append("file", pagesDirEntryName)
|
val pagesDirEntryId = docsDirEntryId.append("file", pagesDirEntryName)
|
||||||
if (
|
if (!pagesDirEntry.isRegularFile() ||
|
||||||
!pagesDirEntry.isRegularFile() ||
|
!pagesDirEntryName.endsWith(".adoc") ||
|
||||||
!pagesDirEntryName.endsWith(".adoc") ||
|
!isMatch(pagesDirEntryId)
|
||||||
!isMatch(pagesDirEntryId)
|
) continue
|
||||||
)
|
|
||||||
continue
|
|
||||||
|
|
||||||
val pagesDirEntryDescriptor =
|
val pagesDirEntryDescriptor = Descriptor.Path(
|
||||||
Descriptor.Path(
|
pagesDirEntryId,
|
||||||
pagesDirEntryId,
|
pagesDirEntryName,
|
||||||
pagesDirEntryName,
|
FileSource.from(pagesDirEntry.toFile()),
|
||||||
FileSource.from(pagesDirEntry.toFile()),
|
pagesDirEntry
|
||||||
pagesDirEntry,
|
)
|
||||||
)
|
|
||||||
docsDirEntryDescriptor.addChild(pagesDirEntryDescriptor)
|
docsDirEntryDescriptor.addChild(pagesDirEntryDescriptor)
|
||||||
|
|
||||||
parseAsciidoc(pagesDirEntryDescriptor, selectors)
|
parseAsciidoc(pagesDirEntryDescriptor, selectors)
|
||||||
@@ -193,15 +174,17 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
}
|
}
|
||||||
|
|
||||||
val parent = sections.firstOrNull() ?: docDescriptor
|
val parent = sections.firstOrNull() ?: docDescriptor
|
||||||
val normalizedTitle =
|
val normalizedTitle = title
|
||||||
title.replace("<code>", "").replace("</code>", "").replace(graphicsRegex, "").trim()
|
.replace("<code>", "")
|
||||||
val childSection =
|
.replace("</code>", "")
|
||||||
Descriptor.Section(
|
.replace(graphicsRegex, "")
|
||||||
parent.uniqueId.append("section", normalizedTitle),
|
.trim()
|
||||||
normalizedTitle,
|
val childSection = Descriptor.Section(
|
||||||
FileSource.from(docDescriptor.path.toFile(), FilePosition.from(lineNum)),
|
parent.uniqueId.append("section", normalizedTitle),
|
||||||
newLevel,
|
normalizedTitle,
|
||||||
)
|
FileSource.from(docDescriptor.path.toFile(), FilePosition.from(lineNum)),
|
||||||
|
newLevel
|
||||||
|
)
|
||||||
|
|
||||||
sections.addFirst(childSection)
|
sections.addFirst(childSection)
|
||||||
parent.addChild(childSection)
|
parent.addChild(childSection)
|
||||||
@@ -234,8 +217,7 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
codeBlockNum += 1
|
codeBlockNum += 1
|
||||||
val (testMode, error, language) = codeBlockMatch.destructured
|
val (testMode, error, language) = codeBlockMatch.destructured
|
||||||
if (testMode.isNotEmpty()) {
|
if (testMode.isNotEmpty()) {
|
||||||
val blockName =
|
val blockName = codeBlockNameRegex.find(prevLine)?.groupValues?.get(1) ?: "snippet$codeBlockNum"
|
||||||
codeBlockNameRegex.find(prevLine)?.groupValues?.get(1) ?: "snippet$codeBlockNum"
|
|
||||||
while (linesIterator.hasNext()) {
|
while (linesIterator.hasNext()) {
|
||||||
advance()
|
advance()
|
||||||
val startDelimiterMatch = codeBlockDelimiterRegex.find(line)
|
val startDelimiterMatch = codeBlockDelimiterRegex.find(line)
|
||||||
@@ -254,13 +236,10 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
snippetId,
|
snippetId,
|
||||||
blockName,
|
blockName,
|
||||||
language,
|
language,
|
||||||
FileSource.from(
|
FileSource.from(docDescriptor.path.toFile(), FilePosition.from(jumpToLineNum)),
|
||||||
docDescriptor.path.toFile(),
|
|
||||||
FilePosition.from(jumpToLineNum),
|
|
||||||
),
|
|
||||||
builder.toString(),
|
builder.toString(),
|
||||||
testMode == "parsed",
|
testMode == "parsed",
|
||||||
error.isNotEmpty(),
|
error.isNotEmpty()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -282,21 +261,28 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private sealed class Descriptor(uniqueId: UniqueId, displayName: String, source: TestSource) :
|
private sealed class Descriptor(
|
||||||
AbstractTestDescriptor(uniqueId, displayName, source), Node<ExecutionContext> {
|
uniqueId: UniqueId,
|
||||||
|
displayName: String,
|
||||||
|
source: TestSource
|
||||||
|
) : AbstractTestDescriptor(uniqueId, displayName, source), Node<ExecutionContext> {
|
||||||
|
|
||||||
class Path(
|
class Path(
|
||||||
uniqueId: UniqueId,
|
uniqueId: UniqueId,
|
||||||
displayName: String,
|
displayName: String,
|
||||||
source: TestSource,
|
source: TestSource,
|
||||||
val path: java.nio.file.Path,
|
val path: java.nio.file.Path
|
||||||
) : Descriptor(uniqueId, displayName, source) {
|
) : Descriptor(uniqueId, displayName, source) {
|
||||||
|
|
||||||
override fun getType() = Type.CONTAINER
|
override fun getType() = Type.CONTAINER
|
||||||
}
|
}
|
||||||
|
|
||||||
class Section(uniqueId: UniqueId, displayName: String, source: TestSource, val level: Int) :
|
class Section(
|
||||||
Descriptor(uniqueId, displayName, source) {
|
uniqueId: UniqueId,
|
||||||
|
displayName: String,
|
||||||
|
source: TestSource,
|
||||||
|
val level: Int
|
||||||
|
) : Descriptor(uniqueId, displayName, source) {
|
||||||
|
|
||||||
override fun getType() = Type.CONTAINER
|
override fun getType() = Type.CONTAINER
|
||||||
|
|
||||||
@@ -313,7 +299,7 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
source: TestSource,
|
source: TestSource,
|
||||||
private val code: String,
|
private val code: String,
|
||||||
private val parseOnly: Boolean,
|
private val parseOnly: Boolean,
|
||||||
private val expectError: Boolean,
|
private val expectError: Boolean
|
||||||
) : Descriptor(uniqueId, displayName, source) {
|
) : Descriptor(uniqueId, displayName, source) {
|
||||||
|
|
||||||
override fun getType() = Type.TEST
|
override fun getType() = Type.TEST
|
||||||
@@ -322,14 +308,11 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
when (language) {
|
when (language) {
|
||||||
"pkl" -> Parser().parseModule(code)
|
"pkl" -> Parser().parseModule(code)
|
||||||
"pkl-expr" -> Parser().parseExpressionInput(code)
|
"pkl-expr" -> Parser().parseExpressionInput(code)
|
||||||
else -> throw (Exception("Unrecognized language: $language"))
|
else -> throw(Exception("Unrecognized language: $language"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun execute(
|
override fun execute(context: ExecutionContext, executor: DynamicTestExecutor): ExecutionContext {
|
||||||
context: ExecutionContext,
|
|
||||||
executor: DynamicTestExecutor,
|
|
||||||
): ExecutionContext {
|
|
||||||
if (parseOnly) {
|
if (parseOnly) {
|
||||||
try {
|
try {
|
||||||
parsed
|
parsed
|
||||||
@@ -345,7 +328,12 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
}
|
}
|
||||||
|
|
||||||
context.replServer.handleRequest(
|
context.replServer.handleRequest(
|
||||||
ReplRequest.Eval("snippet", code, !expectError, !expectError)
|
ReplRequest.Eval(
|
||||||
|
"snippet",
|
||||||
|
code,
|
||||||
|
!expectError,
|
||||||
|
!expectError
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
val properties = parsed.children()?.filterIsInstance<ClassProperty>() ?: emptyList()
|
val properties = parsed.children()?.filterIsInstance<ClassProperty>() ?: emptyList()
|
||||||
@@ -354,21 +342,21 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
|
|||||||
|
|
||||||
// force each property
|
// force each property
|
||||||
for (prop in properties) {
|
for (prop in properties) {
|
||||||
responses.addAll(
|
responses.addAll(context.replServer.handleRequest(
|
||||||
context.replServer.handleRequest(
|
ReplRequest.Eval(
|
||||||
ReplRequest.Eval("snippet", prop.name.value, false, true)
|
"snippet",
|
||||||
|
prop.name.value,
|
||||||
|
false,
|
||||||
|
true
|
||||||
)
|
)
|
||||||
)
|
))
|
||||||
}
|
}
|
||||||
if (expectError) {
|
if (expectError) {
|
||||||
if (
|
if (responses.dropLast(1).any { it !is ReplResponse.EvalSuccess } ||
|
||||||
responses.dropLast(1).any { it !is ReplResponse.EvalSuccess } ||
|
responses.last() !is ReplResponse.EvalError) {
|
||||||
responses.last() !is ReplResponse.EvalError
|
|
||||||
) {
|
|
||||||
throw AssertionError(
|
throw AssertionError(
|
||||||
"Expected %error snippet to fail at the end, but got the following REPL responses:\n\n" +
|
"Expected %error snippet to fail at the end, but got the following REPL responses:\n\n" +
|
||||||
responses.joinToString("\n\n") { it.message }
|
responses.joinToString("\n\n") { it.message })
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
# suppress inspection "UnusedProperty" for whole file
|
# suppress inspection "UnusedProperty" for whole file
|
||||||
|
|
||||||
group=org.pkl-lang
|
group=org.pkl-lang
|
||||||
version=0.33.0
|
version=0.32.0
|
||||||
|
|
||||||
# google-java-format requires jdk.compiler exports
|
# google-java-format requires jdk.compiler exports
|
||||||
org.gradle.jvmargs= \
|
org.gradle.jvmargs= \
|
||||||
|
|||||||
+17
-16
@@ -3,11 +3,11 @@ assertj = "3.27.7"
|
|||||||
checksumPlugin = "1.4.0"
|
checksumPlugin = "1.4.0"
|
||||||
# 5.0.3 is the last version compatible with Kotlin 2.2
|
# 5.0.3 is the last version compatible with Kotlin 2.2
|
||||||
clikt = "5.0.3"
|
clikt = "5.0.3"
|
||||||
commonMark = "0.29.0"
|
commonMark = "0.28.0"
|
||||||
downloadTaskPlugin = "5.7.0"
|
downloadTaskPlugin = "5.7.0"
|
||||||
errorProne = "2.50.0"
|
errorProne = "2.48.0"
|
||||||
errorPronePlugin = "5.1.0"
|
errorPronePlugin = "5.1.0"
|
||||||
geantyref = "2.0.1"
|
geantyref = "1.3.16"
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
googleJavaFormat = "1.35.0"
|
googleJavaFormat = "1.35.0"
|
||||||
# 25.0.2 no longer supports macos-x64
|
# 25.0.2 no longer supports macos-x64
|
||||||
@@ -29,39 +29,40 @@ graalVmSha256-windows-x64 = "fde83c5ceec2c75560c747ccd9f314f90e4cf5c5287416e67c4
|
|||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
graalVmSha256-windows-aarch64 = "unavailable"
|
graalVmSha256-windows-aarch64 = "unavailable"
|
||||||
ideaExtPlugin = "1.4.1"
|
ideaExtPlugin = "1.4.1"
|
||||||
javaPoet = "0.17.0"
|
javaPoet = "0.14.0"
|
||||||
javaxInject = "1"
|
javaxInject = "1"
|
||||||
jimfs = "1.3.1"
|
jimfs = "1.3.1"
|
||||||
jline = "4.3.1"
|
jline = "4.0.12"
|
||||||
jmh = "1.37"
|
jmh = "1.37"
|
||||||
jmhPlugin = "0.7.3"
|
jmhPlugin = "0.7.3"
|
||||||
jspecify = "1.0.0"
|
jspecify = "1.0.0"
|
||||||
junit = "6.1.1"
|
jsr305 = "3.0.2"
|
||||||
|
junit = "6.0.3"
|
||||||
# 1.7+ generates much more verbose code
|
# 1.7+ generates much more verbose code
|
||||||
kotlinPoet = "1.6.0"
|
kotlinPoet = "2.3.0"
|
||||||
kotlinStdLib = "2.2.21"
|
kotlinStdLib = "2.2.21"
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
kotlinTarget = "2.2"
|
kotlinTarget = "2.2"
|
||||||
kotlinToolchain = "2.4.0"
|
kotlinToolchain = "2.3.20"
|
||||||
kotlinxHtml = "0.12.0"
|
kotlinxHtml = "0.12.0"
|
||||||
# 1.9.0 is the last version compatible with Kotlin 2.2
|
# 1.9.0 is the last version compatible with Kotlin 2.2
|
||||||
kotlinxSerialization = "1.9.0"
|
kotlinxSerialization = "1.9.0"
|
||||||
kotlinxCoroutines = "1.11.0"
|
kotlinxCoroutines = "1.10.2"
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
ktfmt = "0.62"
|
ktfmt = "0.62"
|
||||||
# replaces nuValidator's log4j dependency
|
# replaces nuValidator's log4j dependency
|
||||||
# 2.17.1 is the last version compatible with nuValidator
|
# 2.17.1 is the last version compatible with nuValidator
|
||||||
log4j = "2.17.1"
|
log4j = "2.17.1"
|
||||||
msgpack = "0.9.12"
|
msgpack = "0.9.11"
|
||||||
nexusPublishPlugin = "2.0.0"
|
nexusPublishPlugin = "2.0.0"
|
||||||
nullaway = "0.13.7"
|
nullaway = "0.13.2"
|
||||||
nullawayPlugin = "3.0.0"
|
nullawayPlugin = "3.0.0"
|
||||||
nuValidator = "26.6.24"
|
nuValidator = "26.4.2"
|
||||||
paguro = "3.10.3"
|
paguro = "3.10.3"
|
||||||
shadowPlugin = "9.4.2"
|
shadowPlugin = "9.4.1"
|
||||||
slf4j = "2.0.18"
|
slf4j = "2.0.17"
|
||||||
snakeYaml = "3.0.1"
|
snakeYaml = "3.0.1"
|
||||||
spotlessPlugin = "8.7.0"
|
spotlessPlugin = "8.4.0"
|
||||||
wiremock = "3.13.2"
|
wiremock = "3.13.2"
|
||||||
|
|
||||||
[libraries] # ordered alphabetically
|
[libraries] # ordered alphabetically
|
||||||
@@ -73,7 +74,6 @@ commonMarkTables = { group = "org.commonmark", name = "commonmark-ext-gfm-tables
|
|||||||
downloadTaskPlugin = { group = "de.undercouch", name = "gradle-download-task", version.ref = "downloadTaskPlugin" }
|
downloadTaskPlugin = { group = "de.undercouch", name = "gradle-download-task", version.ref = "downloadTaskPlugin" }
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
errorProne = { group = "com.google.errorprone", name = "error_prone_core", version.ref = "errorProne" }
|
errorProne = { group = "com.google.errorprone", name = "error_prone_core", version.ref = "errorProne" }
|
||||||
errorProneAnnotations = { group = "com.google.errorprone", name = "error_prone_annotations", version.ref = "errorProne" }
|
|
||||||
errorPronePlugin = { group = "net.ltgt.gradle", name = "gradle-errorprone-plugin", version.ref = "errorPronePlugin" }
|
errorPronePlugin = { group = "net.ltgt.gradle", name = "gradle-errorprone-plugin", version.ref = "errorPronePlugin" }
|
||||||
geantyref = { group = "io.leangen.geantyref", name = "geantyref", version.ref = "geantyref" }
|
geantyref = { group = "io.leangen.geantyref", name = "geantyref", version.ref = "geantyref" }
|
||||||
graalCompiler = { group = "org.graalvm.compiler", name = "compiler", version.ref = "graalVm" }
|
graalCompiler = { group = "org.graalvm.compiler", name = "compiler", version.ref = "graalVm" }
|
||||||
@@ -87,6 +87,7 @@ jlineTerminal = { group = "org.jline", name = "jline-terminal", version.ref = "j
|
|||||||
jlineTerminalJni = { group = "org.jline", name = "jline-terminal-jni", version.ref = "jline" }
|
jlineTerminalJni = { group = "org.jline", name = "jline-terminal-jni", version.ref = "jline" }
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
jspecify = { group = "org.jspecify", name = "jspecify", version.ref = "jspecify" }
|
jspecify = { group = "org.jspecify", name = "jspecify", version.ref = "jspecify" }
|
||||||
|
jsr305 = { group = "com.google.code.findbugs", name = "jsr305", version.ref = "jsr305" }
|
||||||
junitApi = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" }
|
junitApi = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" }
|
||||||
junitEngine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit" }
|
junitEngine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit" }
|
||||||
junitParams = { group = "org.junit.jupiter", name = "junit-jupiter-params", version.ref = "junit" }
|
junitParams = { group = "org.junit.jupiter", name = "junit-jupiter-params", version.ref = "junit" }
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
+2
-4
@@ -1,10 +1,8 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionSha256Sum=bbaeb2fef8710818cf0e261201dab964c572f92b942812df0c3620d62a529a01
|
distributionSha256Sum=2ab2958f2a1e51120c326cad6f385153bb11ee93b3c216c5fccebfdfbb7ec6cb
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.0-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
retries=0
|
|
||||||
retryBackOffMs=500
|
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# gradlew start up script for POSIX generated by Gradle.
|
# Gradle start up script for POSIX generated by Gradle.
|
||||||
#
|
#
|
||||||
# Important for running:
|
# Important for running:
|
||||||
#
|
#
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
# bash, then to run this script, type that shell name before the whole
|
# bash, then to run this script, type that shell name before the whole
|
||||||
# command line, like:
|
# command line, like:
|
||||||
#
|
#
|
||||||
# ksh gradlew
|
# ksh Gradle
|
||||||
#
|
#
|
||||||
# Busybox and similar reduced shells will NOT work, because this script
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
# requires all of these POSIX shell features:
|
# requires all of these POSIX shell features:
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
# Darwin, MinGW, and NonStop.
|
# Darwin, MinGW, and NonStop.
|
||||||
#
|
#
|
||||||
# (3) This script is generated from the Groovy template
|
# (3) This script is generated from the Groovy template
|
||||||
# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
# within the Gradle project.
|
# within the Gradle project.
|
||||||
#
|
#
|
||||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
|||||||
Vendored
+23
-12
@@ -19,12 +19,12 @@
|
|||||||
@if "%DEBUG%"=="" @echo off
|
@if "%DEBUG%"=="" @echo off
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
@rem
|
@rem
|
||||||
@rem gradlew startup script for Windows
|
@rem Gradle startup script for Windows
|
||||||
@rem
|
@rem
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
|
|
||||||
@rem Set local scope for the variables, and ensure extensions are enabled
|
@rem Set local scope for the variables with windows NT shell
|
||||||
setlocal EnableExtensions
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
set DIRNAME=%~dp0
|
||||||
if "%DIRNAME%"=="" set DIRNAME=.
|
if "%DIRNAME%"=="" set DIRNAME=.
|
||||||
@@ -51,7 +51,7 @@ echo. 1>&2
|
|||||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
echo location of your Java installation. 1>&2
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
"%COMSPEC%" /c exit 1
|
goto fail
|
||||||
|
|
||||||
:findJavaFromJavaHome
|
:findJavaFromJavaHome
|
||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
@@ -65,18 +65,29 @@ echo. 1>&2
|
|||||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
echo location of your Java installation. 1>&2
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
"%COMSPEC%" /c exit 1
|
goto fail
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@rem Execute gradlew
|
@rem Execute Gradle
|
||||||
@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
|
||||||
@rem which allows us to clear the local environment before executing the java command
|
|
||||||
endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel
|
|
||||||
|
|
||||||
:exitWithErrorLevel
|
:end
|
||||||
@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
|
@rem End local scope for the variables with windows NT shell
|
||||||
"%COMSPEC%" /c exit %ERRORLEVEL%
|
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||||
|
|
||||||
|
:fail
|
||||||
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
|
rem the _cmd.exe /c_ return code!
|
||||||
|
set EXIT_CODE=%ERRORLEVEL%
|
||||||
|
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||||
|
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||||
|
exit /b %EXIT_CODE%
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
||||||
|
|||||||
+3
-3
@@ -2,15 +2,15 @@
|
|||||||
"catalogs": {},
|
"catalogs": {},
|
||||||
"aliases": {
|
"aliases": {
|
||||||
"pkl": {
|
"pkl": {
|
||||||
"script-ref": "org.pkl-lang:pkl-cli-java:0.32.0",
|
"script-ref": "org.pkl-lang:pkl-cli-java:0.31.1",
|
||||||
"java-agents": []
|
"java-agents": []
|
||||||
},
|
},
|
||||||
"pkl-codegen-java": {
|
"pkl-codegen-java": {
|
||||||
"script-ref": "org.pkl-lang:pkl-codegen-java:0.32.0",
|
"script-ref": "org.pkl-lang:pkl-codegen-java:0.31.1",
|
||||||
"java-agents": []
|
"java-agents": []
|
||||||
},
|
},
|
||||||
"pkl-codegen-kotlin": {
|
"pkl-codegen-kotlin": {
|
||||||
"script-ref": "org.pkl-lang:pkl-codegen-kotlin:0.32.0",
|
"script-ref": "org.pkl-lang:pkl-codegen-kotlin:0.31.1",
|
||||||
"java-agents": []
|
"java-agents": []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -83,8 +83,8 @@ tasks.shadowJar {
|
|||||||
exclude("module-info.*")
|
exclude("module-info.*")
|
||||||
}
|
}
|
||||||
|
|
||||||
val testJavaExecutable =
|
val testJavaExecutable by
|
||||||
tasks.register<Test>("testJavaExecutable") {
|
tasks.registering(Test::class) {
|
||||||
testClassesDirs = tasks.test.get().testClassesDirs
|
testClassesDirs = tasks.test.get().testClassesDirs
|
||||||
classpath =
|
classpath =
|
||||||
// compiled test classes
|
// compiled test classes
|
||||||
@@ -138,7 +138,7 @@ fun Exec.useRootDirAndSuppressOutput() {
|
|||||||
|
|
||||||
// 0.28 Preparing for JDK21 toolchains revealed that `testStartJavaExecutable` may pass, even though
|
// 0.28 Preparing for JDK21 toolchains revealed that `testStartJavaExecutable` may pass, even though
|
||||||
// the evaluator fails. To catch this, we eval a simple expression using the fat jar.
|
// the evaluator fails. To catch this, we eval a simple expression using the fat jar.
|
||||||
val testEvalJavaExecutable =
|
val testEvalJavaExecutable by
|
||||||
setupJavaExecutableRun("testEvalJavaExecutable", evalTestFlags) { useRootDirAndSuppressOutput() }
|
setupJavaExecutableRun("testEvalJavaExecutable", evalTestFlags) { useRootDirAndSuppressOutput() }
|
||||||
|
|
||||||
// Run the same evaluator tests on all configured JDK test versions.
|
// Run the same evaluator tests on all configured JDK test versions.
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ constructor(
|
|||||||
val evaluator = builder.build()
|
val evaluator = builder.build()
|
||||||
evaluator.use {
|
evaluator.use {
|
||||||
evaluator.evaluateCommand(
|
evaluator.evaluateCommand(
|
||||||
uri(options.normalizedSourceModules.first()),
|
uri(resolvedSourceModules.first()),
|
||||||
reservedFlagNames,
|
reservedFlagNames,
|
||||||
reservedFlagShortNames,
|
reservedFlagShortNames,
|
||||||
) { spec ->
|
) { spec ->
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ constructor(
|
|||||||
// used just to resolve the `%{moduleName}` placeholder
|
// used just to resolve the `%{moduleName}` placeholder
|
||||||
val moduleResolver = ModuleResolver(moduleKeyFactories(ModulePathResolver.empty()))
|
val moduleResolver = ModuleResolver(moduleKeyFactories(ModulePathResolver.empty()))
|
||||||
|
|
||||||
return options.base.normalizedSourceModules.associateWith { uri ->
|
return resolvedSourceModules.associateWith { uri ->
|
||||||
val moduleDir: String? =
|
val moduleDir: String? =
|
||||||
IoUtils.toPath(uri)?.let {
|
IoUtils.toPath(uri)?.let {
|
||||||
IoUtils.relativize(it.parent, workingDir).toString().ifEmpty { "." }
|
IoUtils.relativize(it.parent, workingDir).toString().ifEmpty { "." }
|
||||||
@@ -191,7 +191,7 @@ constructor(
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
var outputWritten = false
|
var outputWritten = false
|
||||||
for (moduleUri in options.base.normalizedSourceModules) {
|
for (moduleUri in resolvedSourceModules) {
|
||||||
val moduleSource = toModuleSource(moduleUri, inputStream)
|
val moduleSource = toModuleSource(moduleUri, inputStream)
|
||||||
if (options.expression != null) {
|
if (options.expression != null) {
|
||||||
val output = evaluator.evaluateExpressionString(moduleSource, options.expression)
|
val output = evaluator.evaluateExpressionString(moduleSource, options.expression)
|
||||||
@@ -229,43 +229,42 @@ constructor(
|
|||||||
private fun writeMultipleFileOutput(builder: EvaluatorBuilder) {
|
private fun writeMultipleFileOutput(builder: EvaluatorBuilder) {
|
||||||
val outputDirs = directoryOutputPaths!!
|
val outputDirs = directoryOutputPaths!!
|
||||||
val writtenFiles = mutableMapOf<Path, OutputFile>()
|
val writtenFiles = mutableMapOf<Path, OutputFile>()
|
||||||
builder.setOutputFormat(options.outputFormat).build().use { evaluator ->
|
for ((moduleUri, outputDir) in outputDirs) {
|
||||||
for ((moduleUri, outputDir) in outputDirs) {
|
val evaluator = builder.setOutputFormat(options.outputFormat).build()
|
||||||
if (outputDir.exists() && !outputDir.isDirectory()) {
|
if (outputDir.exists() && !outputDir.isDirectory()) {
|
||||||
throw CliException("Output path `$outputDir` exists and is not a directory.")
|
throw CliException("Output path `$outputDir` exists and is not a directory.")
|
||||||
}
|
}
|
||||||
val moduleSource = toModuleSource(moduleUri, inputStream)
|
val moduleSource = toModuleSource(moduleUri, inputStream)
|
||||||
val output = evaluator.evaluateOutputFiles(moduleSource)
|
val output = evaluator.evaluateOutputFiles(moduleSource)
|
||||||
val realOutputDir = if (outputDir.exists()) outputDir.toRealPath() else outputDir
|
val realOutputDir = if (outputDir.exists()) outputDir.toRealPath() else outputDir
|
||||||
|
|
||||||
for ((pathSpec, fileOutput) in output) {
|
for ((pathSpec, fileOutput) in output) {
|
||||||
checkPathSpec(pathSpec)
|
checkPathSpec(pathSpec)
|
||||||
val (realPath, resolvedPath) = realOutputDir.resolveRealPath(Path.of(pathSpec))
|
val (realPath, resolvedPath) = realOutputDir.resolveRealPath(Path.of(pathSpec))
|
||||||
if (!realPath.startsWith(realOutputDir)) {
|
if (!realPath.startsWith(realOutputDir)) {
|
||||||
throw CliException(
|
throw CliException(
|
||||||
"Output file conflict: `output.files` entry `\"$pathSpec\"` in module `$moduleUri` resolves to file path `$realPath`, which is outside output directory `$realOutputDir`."
|
"Output file conflict: `output.files` entry `\"$pathSpec\"` in module `$moduleUri` resolves to file path `$realPath`, which is outside output directory `$realOutputDir`."
|
||||||
)
|
|
||||||
}
|
|
||||||
val previousOutput = writtenFiles[realPath]
|
|
||||||
if (previousOutput != null) {
|
|
||||||
throw CliException(
|
|
||||||
"Output file conflict: `output.files` entries `\"${previousOutput.pathSpec}\"` in module `${previousOutput.moduleUri}` and `\"$pathSpec\"` in module `$moduleUri` resolve to the same file path `$realPath`."
|
|
||||||
)
|
|
||||||
}
|
|
||||||
if (realPath.isDirectory()) {
|
|
||||||
throw CliException(
|
|
||||||
"Output file conflict: `output.files` entry `\"$pathSpec\"` in module `$moduleUri` resolves to file path `$realPath`, which is a directory."
|
|
||||||
)
|
|
||||||
}
|
|
||||||
writtenFiles[realPath] = OutputFile(pathSpec, moduleUri)
|
|
||||||
realPath.createParentDirectories()
|
|
||||||
realPath.writeBytes(fileOutput.bytes)
|
|
||||||
outputStream.writeText(
|
|
||||||
IoUtils.relativize(resolvedPath, currentWorkingDir).toString() +
|
|
||||||
IoUtils.getLineSeparator()
|
|
||||||
)
|
)
|
||||||
outputStream.flush()
|
|
||||||
}
|
}
|
||||||
|
val previousOutput = writtenFiles[realPath]
|
||||||
|
if (previousOutput != null) {
|
||||||
|
throw CliException(
|
||||||
|
"Output file conflict: `output.files` entries `\"${previousOutput.pathSpec}\"` in module `${previousOutput.moduleUri}` and `\"$pathSpec\"` in module `$moduleUri` resolve to the same file path `$realPath`."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if (realPath.isDirectory()) {
|
||||||
|
throw CliException(
|
||||||
|
"Output file conflict: `output.files` entry `\"$pathSpec\"` in module `$moduleUri` resolves to file path `$realPath`, which is a directory."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
writtenFiles[realPath] = OutputFile(pathSpec, moduleUri)
|
||||||
|
realPath.createParentDirectories()
|
||||||
|
realPath.writeBytes(fileOutput.bytes)
|
||||||
|
outputStream.writeText(
|
||||||
|
IoUtils.relativize(resolvedPath, currentWorkingDir).toString() +
|
||||||
|
IoUtils.getLineSeparator()
|
||||||
|
)
|
||||||
|
outputStream.flush()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,19 +44,19 @@ constructor(
|
|||||||
private val sourceModule =
|
private val sourceModule =
|
||||||
ModuleSource.text(
|
ModuleSource.text(
|
||||||
"""
|
"""
|
||||||
import "pkl:analyze"
|
import "pkl:analyze"
|
||||||
|
|
||||||
local importStrings = read*("prop:pkl.analyzeImports.**").toMap().values.toSet()
|
local importStrings = read*("prop:pkl.analyzeImports.**").toMap().values.toSet()
|
||||||
|
|
||||||
output {
|
output {
|
||||||
value = analyze.importGraph(importStrings)
|
value = analyze.importGraph(importStrings)
|
||||||
renderer {
|
renderer {
|
||||||
converters {
|
converters {
|
||||||
[Map] = (it) -> it.toMapping()
|
[Map] = (it) -> it.toMapping()
|
||||||
[Set] = (it) -> it.toListing()
|
[Set] = (it) -> it.toListing()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
@@ -66,7 +66,7 @@ constructor(
|
|||||||
try {
|
try {
|
||||||
return builder
|
return builder
|
||||||
.apply {
|
.apply {
|
||||||
for ((idx, sourceModule) in options.base.normalizedSourceModules.withIndex()) {
|
for ((idx, sourceModule) in resolvedSourceModules.withIndex()) {
|
||||||
addExternalProperty("pkl.analyzeImports.$idx", sourceModule.toString())
|
addExternalProperty("pkl.analyzeImports.$idx", sourceModule.toString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.pkl.cli
|
package org.pkl.cli
|
||||||
|
|
||||||
import java.io.StringWriter
|
|
||||||
import java.io.Writer
|
import java.io.Writer
|
||||||
import org.pkl.commons.cli.*
|
import org.pkl.commons.cli.*
|
||||||
import org.pkl.core.Closeables
|
import org.pkl.core.Closeables
|
||||||
@@ -23,9 +22,8 @@ import org.pkl.core.EvaluatorBuilder
|
|||||||
import org.pkl.core.ModuleSource.uri
|
import org.pkl.core.ModuleSource.uri
|
||||||
import org.pkl.core.PklException
|
import org.pkl.core.PklException
|
||||||
import org.pkl.core.TestResults
|
import org.pkl.core.TestResults
|
||||||
import org.pkl.core.stdlib.test.report.JUnitReporter
|
import org.pkl.core.stdlib.test.report.JUnitReport
|
||||||
import org.pkl.core.stdlib.test.report.MinimalReporter
|
import org.pkl.core.stdlib.test.report.SimpleReport
|
||||||
import org.pkl.core.stdlib.test.report.SpecReporter
|
|
||||||
import org.pkl.core.util.ErrorMessages
|
import org.pkl.core.util.ErrorMessages
|
||||||
|
|
||||||
class CliTestRunner
|
class CliTestRunner
|
||||||
@@ -49,15 +47,15 @@ constructor(
|
|||||||
|
|
||||||
private fun evalTest(builder: EvaluatorBuilder) {
|
private fun evalTest(builder: EvaluatorBuilder) {
|
||||||
val sources =
|
val sources =
|
||||||
options.normalizedSourceModules.ifEmpty { project?.tests?.map { it.toUri() } }
|
resolvedSourceModules.ifEmpty { project?.tests?.map { it.toUri() } }
|
||||||
?:
|
?:
|
||||||
// keep in sync with error message thrown by clikt
|
// keep in sync with error message thrown by clikt
|
||||||
throw CliException(
|
throw CliException(
|
||||||
"""
|
"""
|
||||||
Usage: pkl test [<options>] <modules>...
|
Usage: pkl test [<options>] <modules>...
|
||||||
|
|
||||||
Error: missing argument <modules>
|
Error: missing argument <modules>
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -66,15 +64,13 @@ constructor(
|
|||||||
var failed = false
|
var failed = false
|
||||||
var isExampleWrittenFailure = true
|
var isExampleWrittenFailure = true
|
||||||
val moduleNames = mutableSetOf<String>()
|
val moduleNames = mutableSetOf<String>()
|
||||||
val reporter =
|
val reporter = SimpleReport(useColor)
|
||||||
when (testOptions.reporter) {
|
|
||||||
TestReporter.SPEC -> SpecReporter(useColor)
|
|
||||||
TestReporter.MINIMAL -> MinimalReporter(useColor)
|
|
||||||
}
|
|
||||||
val allTestResults = mutableListOf<TestResults>()
|
val allTestResults = mutableListOf<TestResults>()
|
||||||
|
|
||||||
val junitDir = testOptions.junitDir
|
val junitDir = testOptions.junitDir
|
||||||
junitDir?.toFile()?.mkdirs()
|
if (junitDir != null) {
|
||||||
|
junitDir.toFile().mkdirs()
|
||||||
|
}
|
||||||
|
|
||||||
for ((idx, moduleUri) in sources.withIndex()) {
|
for ((idx, moduleUri) in sources.withIndex()) {
|
||||||
try {
|
try {
|
||||||
@@ -84,11 +80,8 @@ constructor(
|
|||||||
failed = results.failed()
|
failed = results.failed()
|
||||||
isExampleWrittenFailure = results.isExampleWrittenFailure.and(isExampleWrittenFailure)
|
isExampleWrittenFailure = results.isExampleWrittenFailure.and(isExampleWrittenFailure)
|
||||||
}
|
}
|
||||||
val tmpWriter = StringWriter()
|
reporter.report(results, consoleWriter)
|
||||||
reporter.report(results, tmpWriter)
|
if (sources.size > 1 && idx != sources.size - 1) {
|
||||||
val report = tmpWriter.toString()
|
|
||||||
consoleWriter.write(report)
|
|
||||||
if (report.isNotEmpty() && sources.size > 1 && idx != sources.size - 1) {
|
|
||||||
consoleWriter.append('\n')
|
consoleWriter.append('\n')
|
||||||
}
|
}
|
||||||
consoleWriter.flush()
|
consoleWriter.flush()
|
||||||
@@ -108,7 +101,7 @@ constructor(
|
|||||||
moduleNames += moduleName
|
moduleNames += moduleName
|
||||||
|
|
||||||
if (!testOptions.junitAggregateReports) {
|
if (!testOptions.junitAggregateReports) {
|
||||||
JUnitReporter().reportToPath(results, junitDir.resolve(moduleName))
|
JUnitReport().reportToPath(results, junitDir.resolve(moduleName))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
@@ -126,7 +119,7 @@ constructor(
|
|||||||
}
|
}
|
||||||
if (testOptions.junitAggregateReports && junitDir != null) {
|
if (testOptions.junitAggregateReports && junitDir != null) {
|
||||||
val fileName = "${testOptions.junitAggregateSuiteName}.xml"
|
val fileName = "${testOptions.junitAggregateSuiteName}.xml"
|
||||||
JUnitReporter(testOptions.junitAggregateSuiteName)
|
JUnitReport(testOptions.junitAggregateSuiteName)
|
||||||
.summarizeToPath(allTestResults, junitDir.resolve(fileName))
|
.summarizeToPath(allTestResults, junitDir.resolve(fileName))
|
||||||
}
|
}
|
||||||
consoleWriter.append('\n')
|
consoleWriter.append('\n')
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024 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.
|
||||||
@@ -47,7 +47,7 @@ internal object ReplMessages {
|
|||||||
* Incomplete input will be continued on the next line.
|
* Incomplete input will be continued on the next line.
|
||||||
* Multi-line programs can be copy-pasted into the REPL.
|
* Multi-line programs can be copy-pasted into the REPL.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
|
|
||||||
val examples: String =
|
val examples: String =
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -58,7 +58,7 @@ class CliEvaluatorTest {
|
|||||||
name = "pigeon"
|
name = "pigeon"
|
||||||
age = 20 + 10
|
age = 20 + 10
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
|
|
||||||
private val packageServer = PackageServer()
|
private val packageServer = PackageServer()
|
||||||
@@ -243,12 +243,12 @@ person:
|
|||||||
.resolve("test2.pkl")
|
.resolve("test2.pkl")
|
||||||
.writeString(
|
.writeString(
|
||||||
"""
|
"""
|
||||||
amends "test.pkl"
|
amends "test.pkl"
|
||||||
|
|
||||||
person {
|
person {
|
||||||
name = "barn owl"
|
name = "barn owl"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -655,9 +655,9 @@ result = someLib.x
|
|||||||
"output.pcf",
|
"output.pcf",
|
||||||
"""
|
"""
|
||||||
x = 1
|
x = 1
|
||||||
|
|
||||||
y = 2
|
y = 2
|
||||||
|
|
||||||
z = 3
|
z = 3
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
@@ -739,7 +739,7 @@ result = someLib.x
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -815,31 +815,31 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test0.pkl",
|
"test0.pkl",
|
||||||
"""
|
"""
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["foo.pcf"] {
|
["foo.pcf"] {
|
||||||
value = new Dynamic {
|
value = new Dynamic {
|
||||||
["bar"] = "baz"
|
["bar"] = "baz"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
),
|
),
|
||||||
writePklFile(
|
writePklFile(
|
||||||
"test1.pkl",
|
"test1.pkl",
|
||||||
"""
|
"""
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["bar.pcf"] {
|
["bar.pcf"] {
|
||||||
value = new Dynamic {
|
value = new Dynamic {
|
||||||
["bar"] = "baz"
|
["bar"] = "baz"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -860,27 +860,27 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"bar.pkl",
|
"bar.pkl",
|
||||||
"""
|
"""
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["foo.pcf"] {
|
["foo.pcf"] {
|
||||||
text = "myBar"
|
text = "myBar"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
),
|
),
|
||||||
writePklFile(
|
writePklFile(
|
||||||
"foo.pkl",
|
"foo.pkl",
|
||||||
"""
|
"""
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["foo.pcf"] {
|
["foo.pcf"] {
|
||||||
text = "myFoo"
|
text = "myFoo"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -918,7 +918,7 @@ result = someLib.x
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
val options =
|
val options =
|
||||||
@@ -949,7 +949,7 @@ result = someLib.x
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
val options =
|
val options =
|
||||||
@@ -970,23 +970,23 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test1.pkl",
|
"test1.pkl",
|
||||||
"""
|
"""
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["."] { text = "bar" }
|
["."] { text = "bar" }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
),
|
),
|
||||||
writePklFile(
|
writePklFile(
|
||||||
"test2.pkl",
|
"test2.pkl",
|
||||||
"""
|
"""
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["myDir"] { text = "bar" }
|
["myDir"] { text = "bar" }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -1009,23 +1009,23 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test1.pkl",
|
"test1.pkl",
|
||||||
"""
|
"""
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["foo.txt"] { text = "bar" }
|
["foo.txt"] { text = "bar" }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
),
|
),
|
||||||
writePklFile(
|
writePklFile(
|
||||||
"test2.pkl",
|
"test2.pkl",
|
||||||
"""
|
"""
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["foo.txt"] { text = "bar" }
|
["foo.txt"] { text = "bar" }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -1045,13 +1045,13 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test.pkl",
|
"test.pkl",
|
||||||
"""
|
"""
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["foo.txt"] { text = "bar" }
|
["foo.txt"] { text = "bar" }
|
||||||
["./foo.txt"] { text = "bar" }
|
["./foo.txt"] { text = "bar" }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
val options =
|
val options =
|
||||||
@@ -1071,12 +1071,12 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test.pkl",
|
"test.pkl",
|
||||||
"""
|
"""
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["foo:bar"] { text = "bar" }
|
["foo:bar"] { text = "bar" }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1096,12 +1096,12 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test.pkl",
|
"test.pkl",
|
||||||
"""
|
"""
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["foo\\bar"] { text = "bar" }
|
["foo\\bar"] { text = "bar" }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1120,10 +1120,10 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test.pkl",
|
"test.pkl",
|
||||||
"""
|
"""
|
||||||
foo {
|
foo {
|
||||||
bar = 1
|
bar = 1
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
val options =
|
val options =
|
||||||
@@ -1136,8 +1136,8 @@ result = someLib.x
|
|||||||
assertThat(buffer.toString(StandardCharsets.UTF_8))
|
assertThat(buffer.toString(StandardCharsets.UTF_8))
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"""
|
"""
|
||||||
new Dynamic { bar = 1 }
|
new Dynamic { bar = 1 }
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -1148,13 +1148,13 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test.pkl",
|
"test.pkl",
|
||||||
"""
|
"""
|
||||||
class Person {
|
class Person {
|
||||||
name: String
|
name: String
|
||||||
|
|
||||||
function toString() = "Person(\(name))"
|
function toString() = "Person(\(name))"
|
||||||
}
|
}
|
||||||
person: Person = new { name = "Frodo" }
|
person: Person = new { name = "Frodo" }
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
val options =
|
val options =
|
||||||
@@ -1173,10 +1173,10 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test.pkl",
|
"test.pkl",
|
||||||
"""
|
"""
|
||||||
person {
|
person {
|
||||||
friend { name = "Bilbo" }
|
friend { name = "Bilbo" }
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
val options =
|
val options =
|
||||||
@@ -1196,17 +1196,17 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test.pkl",
|
"test.pkl",
|
||||||
"""
|
"""
|
||||||
res = 1
|
res = 1
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
writePklFile(
|
writePklFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package = throw("invalid project package")
|
package = throw("invalid project package")
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
val options =
|
val options =
|
||||||
@@ -1225,8 +1225,8 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test.pkl",
|
"test.pkl",
|
||||||
"""
|
"""
|
||||||
res = read*("env:**")
|
res = read*("env:**")
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
writePklFile(
|
writePklFile(
|
||||||
@@ -1234,14 +1234,14 @@ result = someLib.x
|
|||||||
// language=Pkl
|
// language=Pkl
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
evaluatorSettings {
|
evaluatorSettings {
|
||||||
env {
|
env {
|
||||||
["foo"] = "foo"
|
["foo"] = "foo"
|
||||||
["bar"] = "bar"
|
["bar"] = "bar"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
val options =
|
val options =
|
||||||
@@ -1251,12 +1251,12 @@ result = someLib.x
|
|||||||
assertThat(buffer.toString(StandardCharsets.UTF_8))
|
assertThat(buffer.toString(StandardCharsets.UTF_8))
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"""
|
"""
|
||||||
res {
|
res {
|
||||||
["env:bar"] = "bar"
|
["env:bar"] = "bar"
|
||||||
["env:foo"] = "foo"
|
["env:foo"] = "foo"
|
||||||
}
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -1295,7 +1295,7 @@ result = someLib.x
|
|||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
sourceModules = listOf(moduleUri),
|
sourceModules = listOf(moduleUri),
|
||||||
workingDir = tempDir,
|
workingDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
val buffer = ByteArrayOutputStream()
|
val buffer = ByteArrayOutputStream()
|
||||||
@@ -1337,7 +1337,7 @@ result = someLib.x
|
|||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
sourceModules = listOf(moduleUri),
|
sourceModules = listOf(moduleUri),
|
||||||
workingDir = tempDir,
|
workingDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
settings = settingsFile,
|
settings = settingsFile,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -1353,10 +1353,10 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test.pkl",
|
"test.pkl",
|
||||||
"""
|
"""
|
||||||
import "package://localhost:0/birds@0.5.0#/catalog/Swallow.pkl"
|
import "package://localhost:0/birds@0.5.0#/catalog/Swallow.pkl"
|
||||||
|
|
||||||
res = Swallow
|
res = Swallow
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
val buffer = ByteArrayOutputStream()
|
val buffer = ByteArrayOutputStream()
|
||||||
@@ -1367,7 +1367,7 @@ result = someLib.x
|
|||||||
workingDir = tempDir,
|
workingDir = tempDir,
|
||||||
moduleCacheDir = tempDir,
|
moduleCacheDir = tempDir,
|
||||||
noCache = true,
|
noCache = true,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = packageServer.port,
|
testPort = packageServer.port,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -1375,14 +1375,14 @@ result = someLib.x
|
|||||||
assertThat(buffer.toString(StandardCharsets.UTF_8))
|
assertThat(buffer.toString(StandardCharsets.UTF_8))
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"""
|
"""
|
||||||
res {
|
res {
|
||||||
name = "Swallow"
|
name = "Swallow"
|
||||||
favoriteFruit {
|
favoriteFruit {
|
||||||
name = "Apple"
|
name = "Apple"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
"""
|
|
||||||
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
assertThat(tempDir.resolve("package-2")).doesNotExist()
|
assertThat(tempDir.resolve("package-2")).doesNotExist()
|
||||||
@@ -1473,7 +1473,7 @@ result = someLib.x
|
|||||||
sourceModules = listOf(URI("package://localhost:1/birds@0.5.0#/catalog/Ostrich.pkl")),
|
sourceModules = listOf(URI("package://localhost:1/birds@0.5.0#/catalog/Ostrich.pkl")),
|
||||||
noCache = true,
|
noCache = true,
|
||||||
httpProxy = URI(wwRuntimeInfo.httpBaseUrl),
|
httpProxy = URI(wwRuntimeInfo.httpBaseUrl),
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
allowedModules = SecurityManagers.defaultAllowedModules + Pattern.compile("http:"),
|
allowedModules = SecurityManagers.defaultAllowedModules + Pattern.compile("http:"),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -1481,13 +1481,13 @@ result = someLib.x
|
|||||||
assertThat(output)
|
assertThat(output)
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"""
|
"""
|
||||||
name = "Ostrich"
|
name = "Ostrich"
|
||||||
|
|
||||||
favoriteFruit {
|
favoriteFruit {
|
||||||
name = "Orange"
|
name = "Orange"
|
||||||
}
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
verify(getRequestedFor(urlEqualTo("birds@0.5.0")))
|
verify(getRequestedFor(urlEqualTo("birds@0.5.0")))
|
||||||
@@ -1590,13 +1590,13 @@ result = someLib.x
|
|||||||
homeDir.writeFile(
|
homeDir.writeFile(
|
||||||
"settings.pkl",
|
"settings.pkl",
|
||||||
"""
|
"""
|
||||||
amends "pkl:settings"
|
amends "pkl:settings"
|
||||||
|
|
||||||
http {
|
http {
|
||||||
proxy {
|
proxy {
|
||||||
address = "http://invalid.proxy.address"
|
address = "http://invalid.proxy.address"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -1614,24 +1614,6 @@ result = someLib.x
|
|||||||
assertThat(output).isEqualTo("result = 1\n")
|
assertThat(output).isEqualTo("result = 1\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `eval configured http headers`(wwRuntimeInfo: WireMockRuntimeInfo) {
|
|
||||||
stubFor(get(anyUrl()).willReturn(ok("result = 1")))
|
|
||||||
val file = URI("${wwRuntimeInfo.httpBaseUrl}/foo.pkl")
|
|
||||||
val output =
|
|
||||||
evalToConsole(
|
|
||||||
CliEvaluatorOptions(
|
|
||||||
CliBaseOptions(
|
|
||||||
sourceModules = listOf(file),
|
|
||||||
httpHeaders = mapOf("**" to mapOf("X-Foo" to listOf("Foo"))),
|
|
||||||
allowedModules =
|
|
||||||
listOf(Pattern.compile("http:"), Pattern.compile("file:"), Pattern.compile("pkl:")),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
verify(getRequestedFor(urlEqualTo("/foo.pkl")).withHeader("X-Foo", equalTo("Foo")))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `eval file with non-ASCII name`() {
|
fun `eval file with non-ASCII name`() {
|
||||||
val tempDirUri = tempDir.toUri()
|
val tempDirUri = tempDir.toUri()
|
||||||
@@ -1695,26 +1677,26 @@ result = someLib.x
|
|||||||
writePklFile(
|
writePklFile(
|
||||||
"test.pkl",
|
"test.pkl",
|
||||||
"""
|
"""
|
||||||
pigeon {
|
pigeon {
|
||||||
name = "Pigeon"
|
name = "Pigeon"
|
||||||
diet = "Seeds"
|
diet = "Seeds"
|
||||||
}
|
}
|
||||||
parrot {
|
parrot {
|
||||||
name = "Parrot"
|
name = "Parrot"
|
||||||
diet = "Seeds"
|
diet = "Seeds"
|
||||||
}
|
}
|
||||||
output {
|
output {
|
||||||
files {
|
files {
|
||||||
["pigeon.json"] {
|
["pigeon.json"] {
|
||||||
value = pigeon
|
value = pigeon
|
||||||
renderer = new JsonRenderer {}
|
renderer = new JsonRenderer {}
|
||||||
}
|
}
|
||||||
["birds/parrot.yaml"] {
|
["birds/parrot.yaml"] {
|
||||||
value = parrot
|
value = parrot
|
||||||
renderer = new YamlRenderer {}
|
renderer = new YamlRenderer {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -1731,10 +1713,10 @@ result = someLib.x
|
|||||||
realOutputDir.resolve("pigeon.json"),
|
realOutputDir.resolve("pigeon.json"),
|
||||||
"pigeon.json",
|
"pigeon.json",
|
||||||
"""
|
"""
|
||||||
{
|
{
|
||||||
"name": "Pigeon",
|
"name": "Pigeon",
|
||||||
"diet": "Seeds"
|
"diet": "Seeds"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -1743,8 +1725,8 @@ result = someLib.x
|
|||||||
realOutputDir.resolve("birds/parrot.yaml"),
|
realOutputDir.resolve("birds/parrot.yaml"),
|
||||||
"parrot.yaml",
|
"parrot.yaml",
|
||||||
"""
|
"""
|
||||||
name: Parrot
|
name: Parrot
|
||||||
diet: Seeds
|
diet: Seeds
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -1753,10 +1735,10 @@ result = someLib.x
|
|||||||
symlinkOutputDir.resolve("pigeon.json"),
|
symlinkOutputDir.resolve("pigeon.json"),
|
||||||
"pigeon.json",
|
"pigeon.json",
|
||||||
"""
|
"""
|
||||||
{
|
{
|
||||||
"name": "Pigeon",
|
"name": "Pigeon",
|
||||||
"diet": "Seeds"
|
"diet": "Seeds"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -1765,39 +1747,13 @@ result = someLib.x
|
|||||||
symlinkOutputDir.resolve("birds/parrot.yaml"),
|
symlinkOutputDir.resolve("birds/parrot.yaml"),
|
||||||
"parrot.yaml",
|
"parrot.yaml",
|
||||||
"""
|
"""
|
||||||
name: Parrot
|
name: Parrot
|
||||||
diet: Seeds
|
diet: Seeds
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `eval dependency notation source`(@TempDir tempDir: Path) {
|
|
||||||
PackageServer.populateCacheDir(tempDir)
|
|
||||||
val projectPath =
|
|
||||||
FileTestUtils.rootProjectDir.resolve(
|
|
||||||
"pkl-commons-cli/src/main/resources/org/pkl/commons/cli/project1/"
|
|
||||||
)
|
|
||||||
val options =
|
|
||||||
CliEvaluatorOptions(
|
|
||||||
CliBaseOptions(
|
|
||||||
sourceModules = listOf(URI("@fruit/catalog/apple.pkl")),
|
|
||||||
projectDir = projectPath,
|
|
||||||
moduleCacheDir = tempDir,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
val output = evalToConsole(options)
|
|
||||||
assertThat(output)
|
|
||||||
.isEqualTo(
|
|
||||||
"""
|
|
||||||
name = "Apple 🍎"
|
|
||||||
|
|
||||||
"""
|
|
||||||
.trimIndent()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun evalModuleThatImportsPackage(certsFile: Path?, testPort: Int = -1) {
|
private fun evalModuleThatImportsPackage(certsFile: Path?, testPort: Int = -1) {
|
||||||
val moduleUri =
|
val moduleUri =
|
||||||
writePklFile(
|
writePklFile(
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 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.
|
||||||
@@ -69,12 +69,12 @@ class CliMainTest {
|
|||||||
val code =
|
val code =
|
||||||
"""
|
"""
|
||||||
x = 3
|
x = 3
|
||||||
|
|
||||||
output {
|
output {
|
||||||
value = x
|
value = x
|
||||||
renderer = new JsonRenderer {}
|
renderer = new JsonRenderer {}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val inputFile = tempDir.resolve("test.pkl").writeString(code).toString()
|
val inputFile = tempDir.resolve("test.pkl").writeString(code).toString()
|
||||||
val outputFile = makeSymdir(tempDir, "out", "linkOut").resolve("test.pkl").toString()
|
val outputFile = makeSymdir(tempDir, "out", "linkOut").resolve("test.pkl").toString()
|
||||||
@@ -169,60 +169,4 @@ class CliMainTest {
|
|||||||
link.createSymbolicLinkPointingTo(dir)
|
link.createSymbolicLinkPointingTo(dir)
|
||||||
return link
|
return link
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `invalid http header glob pattern`() {
|
|
||||||
val ex =
|
|
||||||
assertThrows<BadParameterValue> {
|
|
||||||
rootCmd.parse(arrayOf("eval", "--http-header", "foo{{}}=bar:baz", "myModule.pkl"))
|
|
||||||
}
|
|
||||||
assertThat(ex.message)
|
|
||||||
.contains("Sub-patterns cannot be nested. To fix, remove or escape the inner `{` character.")
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `forbidden http header name`() {
|
|
||||||
val ex =
|
|
||||||
assertThrows<BadParameterValue> {
|
|
||||||
rootCmd.parse(arrayOf("eval", "--http-header", "**=Connection: baz", "myModule.pkl"))
|
|
||||||
}
|
|
||||||
assertThat(ex.message).contains("HTTP header `Connection` is a reserved header")
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `bad http header value`() {
|
|
||||||
val ex =
|
|
||||||
assertThrows<BadParameterValue> {
|
|
||||||
rootCmd.parse(arrayOf("eval", "--http-header", "**=X-Foo:🙃", "myModule.pkl"))
|
|
||||||
}
|
|
||||||
assertThat(ex.message).contains("HTTP header value `🙃` has invalid syntax")
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `multiple headers`() {
|
|
||||||
val cmd = RootCommand()
|
|
||||||
cmd.parse(
|
|
||||||
arrayOf(
|
|
||||||
"eval",
|
|
||||||
"--http-header",
|
|
||||||
"**=X-Foo:Foo",
|
|
||||||
"--http-header",
|
|
||||||
"**=X-Foo:Foo2",
|
|
||||||
"--http-header",
|
|
||||||
"**=X-Bar:Bar",
|
|
||||||
"--http-header",
|
|
||||||
"https://example.com/**=X-Qux:Qux",
|
|
||||||
"pkl:base",
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
val evalCmd = cmd.registeredSubcommands().filterIsInstance<EvalCommand>().first()
|
|
||||||
assertThat(evalCmd.baseOptions.httpHeaders)
|
|
||||||
.isEqualTo(
|
|
||||||
mapOf(
|
|
||||||
"**" to mapOf("X-Foo" to listOf("Foo", "Foo2"), "X-Bar" to listOf("Bar")),
|
|
||||||
"https://example.com/**" to mapOf("X-Qux" to listOf("Qux")),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 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.
|
||||||
@@ -44,7 +44,7 @@ class CliPackageDownloaderTest {
|
|||||||
baseOptions =
|
baseOptions =
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
moduleCacheDir = tempDir,
|
moduleCacheDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = server.port,
|
testPort = server.port,
|
||||||
),
|
),
|
||||||
packageUris =
|
packageUris =
|
||||||
@@ -70,11 +70,11 @@ class CliPackageDownloaderTest {
|
|||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
evaluatorSettings {
|
evaluatorSettings {
|
||||||
moduleCacheDir = ".my-cache"
|
moduleCacheDir = ".my-cache"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ class CliPackageDownloaderTest {
|
|||||||
baseOptions =
|
baseOptions =
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
workingDir = tempDir,
|
workingDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = server.port,
|
testPort = server.port,
|
||||||
),
|
),
|
||||||
packageUris = listOf(PackageUri("package://localhost:0/birds@0.5.0")),
|
packageUris = listOf(PackageUri("package://localhost:0/birds@0.5.0")),
|
||||||
@@ -103,7 +103,7 @@ class CliPackageDownloaderTest {
|
|||||||
baseOptions =
|
baseOptions =
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
moduleCacheDir = tempDir,
|
moduleCacheDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = server.port,
|
testPort = server.port,
|
||||||
),
|
),
|
||||||
packageUris =
|
packageUris =
|
||||||
@@ -124,7 +124,7 @@ class CliPackageDownloaderTest {
|
|||||||
baseOptions =
|
baseOptions =
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
moduleCacheDir = tempDir,
|
moduleCacheDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = server.port,
|
testPort = server.port,
|
||||||
),
|
),
|
||||||
packageUris =
|
packageUris =
|
||||||
@@ -165,7 +165,7 @@ class CliPackageDownloaderTest {
|
|||||||
baseOptions =
|
baseOptions =
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
moduleCacheDir = tempDir,
|
moduleCacheDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = server.port,
|
testPort = server.port,
|
||||||
),
|
),
|
||||||
packageUris = listOf(PackageUri("package://localhost:0/badChecksum@1.0.0")),
|
packageUris = listOf(PackageUri("package://localhost:0/badChecksum@1.0.0")),
|
||||||
@@ -184,7 +184,7 @@ class CliPackageDownloaderTest {
|
|||||||
baseOptions =
|
baseOptions =
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
moduleCacheDir = tempDir,
|
moduleCacheDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = server.port,
|
testPort = server.port,
|
||||||
),
|
),
|
||||||
packageUris =
|
packageUris =
|
||||||
@@ -210,7 +210,7 @@ class CliPackageDownloaderTest {
|
|||||||
Exception when making request `GET https://bogus.domain/notAPackage@1.0.0`:
|
Exception when making request `GET https://bogus.domain/notAPackage@1.0.0`:
|
||||||
Error connecting to host `bogus.domain`.
|
Error connecting to host `bogus.domain`.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -221,7 +221,7 @@ class CliPackageDownloaderTest {
|
|||||||
baseOptions =
|
baseOptions =
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
moduleCacheDir = tempDir,
|
moduleCacheDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = server.port,
|
testPort = server.port,
|
||||||
),
|
),
|
||||||
packageUris = listOf(PackageUri("package://localhost:0/birds@0.5.0")),
|
packageUris = listOf(PackageUri("package://localhost:0/birds@0.5.0")),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 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.
|
||||||
@@ -85,8 +85,8 @@ class CliProjectPackagerTest {
|
|||||||
.resolve("PklProject")
|
.resolve("PklProject")
|
||||||
.writeString(
|
.writeString(
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
val packager =
|
val packager =
|
||||||
@@ -108,20 +108,20 @@ class CliProjectPackagerTest {
|
|||||||
"myTest.pkl",
|
"myTest.pkl",
|
||||||
"""
|
"""
|
||||||
amends "pkl:test"
|
amends "pkl:test"
|
||||||
|
|
||||||
facts {
|
facts {
|
||||||
["1 == 2"] {
|
["1 == 2"] {
|
||||||
1 == 2
|
1 == 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
@@ -129,7 +129,7 @@ class CliProjectPackagerTest {
|
|||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
apiTests { "myTest.pkl" }
|
apiTests { "myTest.pkl" }
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
val buffer = StringWriter()
|
val buffer = StringWriter()
|
||||||
@@ -154,13 +154,13 @@ class CliProjectPackagerTest {
|
|||||||
.writeString(
|
.writeString(
|
||||||
"""
|
"""
|
||||||
amends "pkl:test"
|
amends "pkl:test"
|
||||||
|
|
||||||
facts {
|
facts {
|
||||||
["1 == 1"] {
|
["1 == 1"] {
|
||||||
1 == 1
|
1 == 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
tempDir
|
tempDir
|
||||||
@@ -168,7 +168,7 @@ class CliProjectPackagerTest {
|
|||||||
.writeString(
|
.writeString(
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
@@ -176,7 +176,7 @@ class CliProjectPackagerTest {
|
|||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
apiTests { "myTest.pkl" }
|
apiTests { "myTest.pkl" }
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
val buffer = StringWriter()
|
val buffer = StringWriter()
|
||||||
@@ -203,13 +203,13 @@ class CliProjectPackagerTest {
|
|||||||
"""
|
"""
|
||||||
amends "pkl:test"
|
amends "pkl:test"
|
||||||
import "@birds/Bird.pkl"
|
import "@birds/Bird.pkl"
|
||||||
|
|
||||||
examples {
|
examples {
|
||||||
["Bird"] {
|
["Bird"] {
|
||||||
new Bird { name = "Finch"; favoriteFruit { name = "Tangerine" } }
|
new Bird { name = "Finch"; favoriteFruit { name = "Tangerine" } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
projectDir
|
projectDir
|
||||||
@@ -226,8 +226,8 @@ class CliProjectPackagerTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
projectDir
|
projectDir
|
||||||
@@ -235,7 +235,7 @@ class CliProjectPackagerTest {
|
|||||||
.writeString(
|
.writeString(
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
@@ -249,7 +249,7 @@ class CliProjectPackagerTest {
|
|||||||
uri = "package://localhost:0/birds@0.5.0"
|
uri = "package://localhost:0/birds@0.5.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
projectDir
|
projectDir
|
||||||
@@ -298,9 +298,9 @@ class CliProjectPackagerTest {
|
|||||||
"a/b/foo.pkl",
|
"a/b/foo.pkl",
|
||||||
"""
|
"""
|
||||||
module foo
|
module foo
|
||||||
|
|
||||||
name: String
|
name: String
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -311,7 +311,7 @@ class CliProjectPackagerTest {
|
|||||||
foo
|
foo
|
||||||
bar
|
bar
|
||||||
baz
|
baz
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -320,14 +320,14 @@ class CliProjectPackagerTest {
|
|||||||
.writeString(
|
.writeString(
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
baseUri = "package://example.com/mypackage"
|
baseUri = "package://example.com/mypackage"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
val packager =
|
val packager =
|
||||||
@@ -348,18 +348,18 @@ class CliProjectPackagerTest {
|
|||||||
assertThat(expectedMetadata)
|
assertThat(expectedMetadata)
|
||||||
.hasContent(
|
.hasContent(
|
||||||
"""
|
"""
|
||||||
{
|
{
|
||||||
"name": "mypackage",
|
"name": "mypackage",
|
||||||
"packageUri": "package://example.com/mypackage@1.0.0",
|
"packageUri": "package://example.com/mypackage@1.0.0",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"packageZipUrl": "https://foo.com",
|
"packageZipUrl": "https://foo.com",
|
||||||
"packageZipChecksums": {
|
"packageZipChecksums": {
|
||||||
"sha256": "e83b67722ea17ba41717ce6e99ae8ee02d66df6294bd319ce403075b1071c3e0"
|
"sha256": "e83b67722ea17ba41717ce6e99ae8ee02d66df6294bd319ce403075b1071c3e0"
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"authors": []
|
"authors": []
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
assertThat(expectedArchive).exists()
|
assertThat(expectedArchive).exists()
|
||||||
@@ -395,21 +395,21 @@ class CliProjectPackagerTest {
|
|||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
baseUri = "package://example.com/mypackage"
|
baseUri = "package://example.com/mypackage"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
exclude {
|
exclude {
|
||||||
"*.bin"
|
"*.bin"
|
||||||
"child/main.pkl"
|
"child/main.pkl"
|
||||||
"*.test.pkl"
|
"*.test.pkl"
|
||||||
"examples/Ex1.pkl"
|
"examples/Ex1.pkl"
|
||||||
"tests/**"
|
"tests/**"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -444,21 +444,21 @@ class CliProjectPackagerTest {
|
|||||||
projectDir.writeFile(
|
projectDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
baseUri = "package://example.com/mypackage"
|
baseUri = "package://example.com/mypackage"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
["birds"] {
|
["birds"] {
|
||||||
uri = "package://localhost:0/birds@0.5.0"
|
uri = "package://localhost:0/birds@0.5.0"
|
||||||
|
}
|
||||||
|
["project2"] = import("../project2/PklProject")
|
||||||
}
|
}
|
||||||
["project2"] = import("../project2/PklProject")
|
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -489,24 +489,24 @@ class CliProjectPackagerTest {
|
|||||||
project2Dir.writeFile(
|
project2Dir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "project2"
|
name = "project2"
|
||||||
baseUri = "package://localhost:0/project2"
|
baseUri = "package://localhost:0/project2"
|
||||||
version = "5.0.0"
|
version = "5.0.0"
|
||||||
packageZipUrl = "https://foo.com/project2.zip"
|
packageZipUrl = "https://foo.com/project2.zip"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
project2Dir.writeFile(
|
project2Dir.writeFile(
|
||||||
"PklProject.deps.json",
|
"PklProject.deps.json",
|
||||||
"""
|
"""
|
||||||
{
|
{
|
||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"resolvedDependencies": {}
|
"resolvedDependencies": {}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -557,18 +557,18 @@ class CliProjectPackagerTest {
|
|||||||
assertThat(project2Metadata.readString())
|
assertThat(project2Metadata.readString())
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"""
|
"""
|
||||||
{
|
{
|
||||||
"name": "project2",
|
"name": "project2",
|
||||||
"packageUri": "package://localhost:0/project2@5.0.0",
|
"packageUri": "package://localhost:0/project2@5.0.0",
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"packageZipUrl": "https://foo.com/project2.zip",
|
"packageZipUrl": "https://foo.com/project2.zip",
|
||||||
"packageZipChecksums": {
|
"packageZipChecksums": {
|
||||||
"sha256": "8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85"
|
"sha256": "8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85"
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"authors": []
|
"authors": []
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -582,44 +582,44 @@ class CliProjectPackagerTest {
|
|||||||
projectDir.writeFile(
|
projectDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
baseUri = "package://example.com/mypackage"
|
baseUri = "package://example.com/mypackage"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
["birds"] {
|
["birds"] {
|
||||||
uri = "package://localhost:0/birds@0.5.0"
|
uri = "package://localhost:0/birds@0.5.0"
|
||||||
|
}
|
||||||
|
["project2"] = import("../project2/PklProject")
|
||||||
}
|
}
|
||||||
["project2"] = import("../project2/PklProject")
|
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
projectDir.writeFile(
|
projectDir.writeFile(
|
||||||
"PklProject.deps.json",
|
"PklProject.deps.json",
|
||||||
"""
|
"""
|
||||||
{
|
{
|
||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"resolvedDependencies": {
|
"resolvedDependencies": {
|
||||||
"package://localhost:0/birds@0": {
|
"package://localhost:0/birds@0": {
|
||||||
"type": "remote",
|
"type": "remote",
|
||||||
"uri": "projectpackage://localhost:0/birds@0.5.0",
|
"uri": "projectpackage://localhost:0/birds@0.5.0",
|
||||||
"checksums": {
|
"checksums": {
|
||||||
"sha256": "0a5ad2dc13f06f73f96ba94e8d01d48252bc934e2de71a837620ca0fef8a7453"
|
"sha256": "0a5ad2dc13f06f73f96ba94e8d01d48252bc934e2de71a837620ca0fef8a7453"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"package://localhost:0/project2@5": {
|
||||||
|
"type": "local",
|
||||||
|
"uri": "projectpackage://localhost:0/project2@5.0.0",
|
||||||
|
"path": "../project2"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"package://localhost:0/project2@5": {
|
|
||||||
"type": "local",
|
|
||||||
"uri": "projectpackage://localhost:0/project2@5.0.0",
|
|
||||||
"path": "../project2"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -627,24 +627,24 @@ class CliProjectPackagerTest {
|
|||||||
project2Dir.writeFile(
|
project2Dir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "project2"
|
name = "project2"
|
||||||
baseUri = "package://localhost:0/project2"
|
baseUri = "package://localhost:0/project2"
|
||||||
version = "5.0.0"
|
version = "5.0.0"
|
||||||
packageZipUrl = "https://foo.com/project2.zip"
|
packageZipUrl = "https://foo.com/project2.zip"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
project2Dir.writeFile(
|
project2Dir.writeFile(
|
||||||
"PklProject.deps.json",
|
"PklProject.deps.json",
|
||||||
"""
|
"""
|
||||||
{
|
{
|
||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"resolvedDependencies": {}
|
"resolvedDependencies": {}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -667,23 +667,23 @@ class CliProjectPackagerTest {
|
|||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"main.pkl",
|
"main.pkl",
|
||||||
"""
|
"""
|
||||||
import "../foo.pkl"
|
import "../foo.pkl"
|
||||||
|
|
||||||
res = foo
|
res = foo
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
baseUri = "package://example.com/mypackage"
|
baseUri = "package://example.com/mypackage"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -702,12 +702,12 @@ class CliProjectPackagerTest {
|
|||||||
assertThat(e.message)
|
assertThat(e.message)
|
||||||
.startsWith(
|
.startsWith(
|
||||||
"""
|
"""
|
||||||
–– Pkl Error ––
|
–– Pkl Error ––
|
||||||
Path `../foo.pkl` includes path segments that are outside the project root directory.
|
Path `../foo.pkl` includes path segments that are outside the project root directory.
|
||||||
|
|
||||||
1 | import "../foo.pkl"
|
1 | import "../foo.pkl"
|
||||||
^^^^^^^^^^^^
|
^^^^^^^^^^^^
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -730,14 +730,14 @@ class CliProjectPackagerTest {
|
|||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
baseUri = "package://example.com/mypackage"
|
baseUri = "package://example.com/mypackage"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -763,43 +763,6 @@ class CliProjectPackagerTest {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `import path verification with glob imports`(@TempDir tempDir: Path) {
|
|
||||||
tempDir.writeFile(
|
|
||||||
"main.pkl",
|
|
||||||
"""
|
|
||||||
import* "**.pkl" as foo
|
|
||||||
|
|
||||||
res = foo
|
|
||||||
"""
|
|
||||||
.trimIndent(),
|
|
||||||
)
|
|
||||||
tempDir.writeFile(
|
|
||||||
"PklProject",
|
|
||||||
"""
|
|
||||||
amends "pkl:Project"
|
|
||||||
|
|
||||||
package {
|
|
||||||
name = "mypackage"
|
|
||||||
version = "1.0.0"
|
|
||||||
baseUri = "package://example.com/mypackage"
|
|
||||||
packageZipUrl = "https://foo.com"
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
.trimIndent(),
|
|
||||||
)
|
|
||||||
|
|
||||||
CliProjectPackager(
|
|
||||||
CliBaseOptions(workingDir = tempDir),
|
|
||||||
listOf(tempDir),
|
|
||||||
CliTestOptions(),
|
|
||||||
".out/%{name}@%{version}",
|
|
||||||
skipPublishCheck = true,
|
|
||||||
consoleWriter = StringWriter(),
|
|
||||||
)
|
|
||||||
.run()
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisabledOnOs(OS.WINDOWS)
|
@DisabledOnOs(OS.WINDOWS)
|
||||||
fun `import path verification -- absolute read from root dir`(@TempDir tempDir: Path) {
|
fun `import path verification -- absolute read from root dir`(@TempDir tempDir: Path) {
|
||||||
@@ -813,14 +776,14 @@ class CliProjectPackagerTest {
|
|||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
baseUri = "package://example.com/mypackage"
|
baseUri = "package://example.com/mypackage"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -851,21 +814,21 @@ class CliProjectPackagerTest {
|
|||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"foo/bar.pkl",
|
"foo/bar.pkl",
|
||||||
"""
|
"""
|
||||||
import "baz.pkl"
|
import "baz.pkl"
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
baseUri = "package://example.com/mypackage"
|
baseUri = "package://example.com/mypackage"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -886,14 +849,14 @@ class CliProjectPackagerTest {
|
|||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"project1/PklProject",
|
"project1/PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "project1"
|
name = "project1"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
baseUri = "package://example.com/project1"
|
baseUri = "package://example.com/project1"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -901,14 +864,14 @@ class CliProjectPackagerTest {
|
|||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"project2/PklProject",
|
"project2/PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "project2"
|
name = "project2"
|
||||||
version = "2.0.0"
|
version = "2.0.0"
|
||||||
baseUri = "package://example.com/project2"
|
baseUri = "package://example.com/project2"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -951,14 +914,14 @@ class CliProjectPackagerTest {
|
|||||||
"project/PklProject",
|
"project/PklProject",
|
||||||
// intentionally conflict with localhost:0/birds@0.5.0 from our test fixtures
|
// intentionally conflict with localhost:0/birds@0.5.0 from our test fixtures
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "birds"
|
name = "birds"
|
||||||
version = "0.5.0"
|
version = "0.5.0"
|
||||||
baseUri = "package://localhost:0/birds"
|
baseUri = "package://localhost:0/birds"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -967,7 +930,7 @@ class CliProjectPackagerTest {
|
|||||||
CliProjectPackager(
|
CliProjectPackager(
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
workingDir = tempDir,
|
workingDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = packageServer.port,
|
testPort = packageServer.port,
|
||||||
),
|
),
|
||||||
listOf(tempDir.resolve("project")),
|
listOf(tempDir.resolve("project")),
|
||||||
@@ -996,14 +959,14 @@ class CliProjectPackagerTest {
|
|||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"project/PklProject",
|
"project/PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mangos"
|
name = "mangos"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
baseUri = "package://localhost:0/mangos"
|
baseUri = "package://localhost:0/mangos"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -1011,7 +974,7 @@ class CliProjectPackagerTest {
|
|||||||
CliProjectPackager(
|
CliProjectPackager(
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
workingDir = tempDir,
|
workingDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = packageServer.port,
|
testPort = packageServer.port,
|
||||||
),
|
),
|
||||||
listOf(tempDir.resolve("project")),
|
listOf(tempDir.resolve("project")),
|
||||||
@@ -1045,14 +1008,14 @@ class CliProjectPackagerTest {
|
|||||||
@Deprecated { since = "0.26.1"; message = "do not use" }
|
@Deprecated { since = "0.26.1"; message = "do not use" }
|
||||||
@ModuleInfo { minPklVersion = "0.26.0" }
|
@ModuleInfo { minPklVersion = "0.26.0" }
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "mypackage"
|
name = "mypackage"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
baseUri = "package://example.com/mypackage"
|
baseUri = "package://example.com/mypackage"
|
||||||
packageZipUrl = "https://foo.com"
|
packageZipUrl = "https://foo.com"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
val packager =
|
val packager =
|
||||||
@@ -1070,53 +1033,53 @@ class CliProjectPackagerTest {
|
|||||||
assertThat(expectedMetadata)
|
assertThat(expectedMetadata)
|
||||||
.hasContent(
|
.hasContent(
|
||||||
"""
|
"""
|
||||||
{
|
{
|
||||||
"name": "mypackage",
|
"name": "mypackage",
|
||||||
"packageUri": "package://example.com/mypackage@1.0.0",
|
"packageUri": "package://example.com/mypackage@1.0.0",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"packageZipUrl": "https://foo.com",
|
"packageZipUrl": "https://foo.com",
|
||||||
"packageZipChecksums": {
|
"packageZipChecksums": {
|
||||||
"sha256": "8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85"
|
"sha256": "8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"authors": [],
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "PObject",
|
||||||
|
"classInfo": {
|
||||||
|
"moduleName": "pkl.base",
|
||||||
|
"class": "Unlisted",
|
||||||
|
"moduleUri": "pkl:base"
|
||||||
|
},
|
||||||
|
"properties": {}
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
{
|
||||||
"authors": [],
|
"type": "PObject",
|
||||||
"annotations": [
|
"classInfo": {
|
||||||
{
|
"moduleName": "pkl.base",
|
||||||
"type": "PObject",
|
"class": "Deprecated",
|
||||||
"classInfo": {
|
"moduleUri": "pkl:base"
|
||||||
"moduleName": "pkl.base",
|
|
||||||
"class": "Unlisted",
|
|
||||||
"moduleUri": "pkl:base"
|
|
||||||
},
|
|
||||||
"properties": {}
|
|
||||||
},
|
},
|
||||||
{
|
"properties": {
|
||||||
"type": "PObject",
|
"since": "0.26.1",
|
||||||
"classInfo": {
|
"message": "do not use",
|
||||||
"moduleName": "pkl.base",
|
"replaceWith": null
|
||||||
"class": "Deprecated",
|
|
||||||
"moduleUri": "pkl:base"
|
|
||||||
},
|
|
||||||
"properties": {
|
|
||||||
"since": "0.26.1",
|
|
||||||
"message": "do not use",
|
|
||||||
"replaceWith": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "PObject",
|
|
||||||
"classInfo": {
|
|
||||||
"moduleName": "pkl.base",
|
|
||||||
"class": "ModuleInfo",
|
|
||||||
"moduleUri": "pkl:base"
|
|
||||||
},
|
|
||||||
"properties": {
|
|
||||||
"minPklVersion": "0.26.0"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
},
|
||||||
}
|
{
|
||||||
"""
|
"type": "PObject",
|
||||||
|
"classInfo": {
|
||||||
|
"moduleName": "pkl.base",
|
||||||
|
"class": "ModuleInfo",
|
||||||
|
"moduleUri": "pkl:base"
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"minPklVersion": "0.26.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,20 +74,20 @@ class CliProjectResolverTest {
|
|||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
["birds"] {
|
["birds"] {
|
||||||
uri = "package://localhost:0/birds@0.5.0"
|
uri = "package://localhost:0/birds@0.5.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
CliProjectResolver(
|
CliProjectResolver(
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
workingDir = tempDir,
|
workingDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = packageServer.port,
|
testPort = packageServer.port,
|
||||||
noCache = true,
|
noCache = true,
|
||||||
),
|
),
|
||||||
@@ -129,20 +129,20 @@ class CliProjectResolverTest {
|
|||||||
tempDir.writeFile(
|
tempDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
["birds"] {
|
["birds"] {
|
||||||
uri = "package://localhost:0/birds@0.5.0"
|
uri = "package://localhost:0/birds@0.5.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
CliProjectResolver(
|
CliProjectResolver(
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
workingDir = tempDir,
|
workingDir = tempDir,
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = packageServer.port,
|
testPort = packageServer.port,
|
||||||
noCache = true,
|
noCache = true,
|
||||||
),
|
),
|
||||||
@@ -185,35 +185,35 @@ class CliProjectResolverTest {
|
|||||||
projectDir.writeFile(
|
projectDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
["birds"] {
|
["birds"] {
|
||||||
uri = "package://localhost:0/birds@0.5.0"
|
uri = "package://localhost:0/birds@0.5.0"
|
||||||
|
}
|
||||||
|
["project2"] = import("../project2/PklProject")
|
||||||
}
|
}
|
||||||
["project2"] = import("../project2/PklProject")
|
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
projectDir.writeFile(
|
projectDir.writeFile(
|
||||||
"../project2/PklProject",
|
"../project2/PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "project2"
|
name = "project2"
|
||||||
baseUri = "package://localhost:0/package2"
|
baseUri = "package://localhost:0/package2"
|
||||||
version = "5.0.0"
|
version = "5.0.0"
|
||||||
packageZipUrl = "https://foo.com/package2.zip"
|
packageZipUrl = "https://foo.com/package2.zip"
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
["fruit"] {
|
["fruit"] {
|
||||||
uri = "package://localhost:0/fruit@1.0.5"
|
uri = "package://localhost:0/fruit@1.0.5"
|
||||||
|
}
|
||||||
|
["project3"] = import("../project3/PklProject")
|
||||||
}
|
}
|
||||||
["project3"] = import("../project3/PklProject")
|
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -221,26 +221,26 @@ class CliProjectResolverTest {
|
|||||||
projectDir.writeFile(
|
projectDir.writeFile(
|
||||||
"../project3/PklProject",
|
"../project3/PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "project3"
|
name = "project3"
|
||||||
baseUri = "package://localhost:0/package3"
|
baseUri = "package://localhost:0/package3"
|
||||||
version = "5.0.0"
|
version = "5.0.0"
|
||||||
packageZipUrl = "https://foo.com/package3.zip"
|
packageZipUrl = "https://foo.com/package3.zip"
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
["fruit"] {
|
["fruit"] {
|
||||||
uri = "package://localhost:0/fruit@1.1.0"
|
uri = "package://localhost:0/fruit@1.1.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
CliProjectResolver(
|
CliProjectResolver(
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = packageServer.port,
|
testPort = packageServer.port,
|
||||||
noCache = true,
|
noCache = true,
|
||||||
),
|
),
|
||||||
@@ -293,28 +293,28 @@ class CliProjectResolverTest {
|
|||||||
projectDir.writeFile(
|
projectDir.writeFile(
|
||||||
"PklProject",
|
"PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
["birds"] {
|
["birds"] {
|
||||||
uri = "package://localhost:0/birds@0.5.0"
|
uri = "package://localhost:0/birds@0.5.0"
|
||||||
|
}
|
||||||
|
["fruit"] = import("../fruit/PklProject")
|
||||||
}
|
}
|
||||||
["fruit"] = import("../fruit/PklProject")
|
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
projectDir.writeFile(
|
projectDir.writeFile(
|
||||||
"../fruit/PklProject",
|
"../fruit/PklProject",
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
package {
|
package {
|
||||||
name = "fruit"
|
name = "fruit"
|
||||||
baseUri = "package://localhost:0/fruit"
|
baseUri = "package://localhost:0/fruit"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
packageZipUrl = "https://foo.com/fruit.zip"
|
packageZipUrl = "https://foo.com/fruit.zip"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
@@ -322,7 +322,7 @@ class CliProjectResolverTest {
|
|||||||
val errOut = StringWriter()
|
val errOut = StringWriter()
|
||||||
CliProjectResolver(
|
CliProjectResolver(
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = packageServer.port,
|
testPort = packageServer.port,
|
||||||
noCache = true,
|
noCache = true,
|
||||||
),
|
),
|
||||||
@@ -375,7 +375,7 @@ class CliProjectResolverTest {
|
|||||||
uri = "package://localhost:0/birds@0.5.0"
|
uri = "package://localhost:0/birds@0.5.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -389,7 +389,7 @@ class CliProjectResolverTest {
|
|||||||
uri = "package://localhost:0/fruit@1.1.0"
|
uri = "package://localhost:0/fruit@1.1.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -397,7 +397,7 @@ class CliProjectResolverTest {
|
|||||||
val errOut = StringWriter()
|
val errOut = StringWriter()
|
||||||
CliProjectResolver(
|
CliProjectResolver(
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = packageServer.port,
|
testPort = packageServer.port,
|
||||||
noCache = true,
|
noCache = true,
|
||||||
),
|
),
|
||||||
@@ -469,14 +469,14 @@ class CliProjectResolverTest {
|
|||||||
.resolve("PklProject")
|
.resolve("PklProject")
|
||||||
.writeString(
|
.writeString(
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
["birds"] {
|
["birds"] {
|
||||||
uri = "package://localhost:0/birds@0.5.0"
|
uri = "package://localhost:0/birds@0.5.0"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
// coerce an IOException by making this a directory
|
// coerce an IOException by making this a directory
|
||||||
@@ -484,7 +484,7 @@ class CliProjectResolverTest {
|
|||||||
assertThatCode {
|
assertThatCode {
|
||||||
CliProjectResolver(
|
CliProjectResolver(
|
||||||
CliBaseOptions(
|
CliBaseOptions(
|
||||||
caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
|
caCertificates = listOf(FileTestUtils.selfSignedCertificate),
|
||||||
testPort = packageServer.port,
|
testPort = packageServer.port,
|
||||||
noCache = true,
|
noCache = true,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class CliTestRunnerTest {
|
|||||||
3 == 3
|
3 == 3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
||||||
val out = StringWriter()
|
val out = StringWriter()
|
||||||
@@ -65,13 +65,13 @@ class CliTestRunnerTest {
|
|||||||
assertThat(out.toString().stripFileAndLines(tempDir))
|
assertThat(out.toString().stripFileAndLines(tempDir))
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"""
|
"""
|
||||||
module test
|
module test
|
||||||
facts
|
facts
|
||||||
✔ succeed
|
✔ succeed
|
||||||
|
|
||||||
|
100.0% tests pass [1 passed], 100.0% asserts pass [2 passed]
|
||||||
|
|
||||||
100.0% tests pass [1 passed], 100.0% asserts pass [2 passed]
|
"""
|
||||||
|
|
||||||
"""
|
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
assertThat(err.toString()).isEqualTo("")
|
assertThat(err.toString()).isEqualTo("")
|
||||||
@@ -89,7 +89,7 @@ class CliTestRunnerTest {
|
|||||||
1 == 5
|
1 == 5
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
||||||
val out = StringWriter()
|
val out = StringWriter()
|
||||||
@@ -136,7 +136,7 @@ class CliTestRunnerTest {
|
|||||||
throw("uh oh")
|
throw("uh oh")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
||||||
val out = StringWriter()
|
val out = StringWriter()
|
||||||
@@ -154,19 +154,19 @@ class CliTestRunnerTest {
|
|||||||
assertThat(out.toString().stripFileAndLines(tempDir))
|
assertThat(out.toString().stripFileAndLines(tempDir))
|
||||||
.isEqualToNormalizingNewlines(
|
.isEqualToNormalizingNewlines(
|
||||||
"""
|
"""
|
||||||
module test
|
module test
|
||||||
facts
|
facts
|
||||||
✘ fail
|
✘ fail
|
||||||
–– Pkl Error ––
|
–– Pkl Error ––
|
||||||
uh oh
|
uh oh
|
||||||
|
|
||||||
5 | throw("uh oh")
|
5 | throw("uh oh")
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
at test#facts["fail"][#1] (/tempDir/test.pkl, line xx)
|
at test#facts["fail"][#1] (/tempDir/test.pkl, line xx)
|
||||||
|
|
||||||
0.0% tests pass [1/1 failed], 0.0% asserts pass [1/1 failed]
|
0.0% tests pass [1/1 failed], 0.0% asserts pass [1/1 failed]
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
assertThat(err.toString()).isEqualTo("")
|
assertThat(err.toString()).isEqualTo("")
|
||||||
@@ -183,7 +183,7 @@ class CliTestRunnerTest {
|
|||||||
throw("uh oh")
|
throw("uh oh")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
||||||
val out = StringWriter()
|
val out = StringWriter()
|
||||||
@@ -201,19 +201,19 @@ class CliTestRunnerTest {
|
|||||||
assertThat(out.toString().stripFileAndLines(tempDir))
|
assertThat(out.toString().stripFileAndLines(tempDir))
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"""
|
"""
|
||||||
module test
|
module test
|
||||||
examples
|
examples
|
||||||
✘ fail
|
✘ fail
|
||||||
–– Pkl Error ––
|
–– Pkl Error ––
|
||||||
uh oh
|
uh oh
|
||||||
|
|
||||||
5 | throw("uh oh")
|
5 | throw("uh oh")
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
at test#examples["fail"][#1] (/tempDir/test.pkl, line xx)
|
at test#examples["fail"][#1] (/tempDir/test.pkl, line xx)
|
||||||
|
|
||||||
0.0% tests pass [1/1 failed], 0.0% asserts pass [1/1 failed]
|
0.0% tests pass [1/1 failed], 0.0% asserts pass [1/1 failed]
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
assertThat(err.toString()).isEqualTo("")
|
assertThat(err.toString()).isEqualTo("")
|
||||||
@@ -232,19 +232,19 @@ class CliTestRunnerTest {
|
|||||||
throw("uh oh")
|
throw("uh oh")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
||||||
tempDir
|
tempDir
|
||||||
.resolve("test.pkl-expected.pcf")
|
.resolve("test.pkl-expected.pcf")
|
||||||
.writeString(
|
.writeString(
|
||||||
"""
|
"""
|
||||||
examples {
|
examples {
|
||||||
["fail"] {
|
["fail"] {
|
||||||
"never compared to"
|
"never compared to"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
val out = StringWriter()
|
val out = StringWriter()
|
||||||
@@ -262,19 +262,19 @@ class CliTestRunnerTest {
|
|||||||
assertThat(out.toString().stripFileAndLines(tempDir))
|
assertThat(out.toString().stripFileAndLines(tempDir))
|
||||||
.isEqualToNormalizingNewlines(
|
.isEqualToNormalizingNewlines(
|
||||||
"""
|
"""
|
||||||
module test
|
module test
|
||||||
examples
|
examples
|
||||||
✘ fail
|
✘ fail
|
||||||
–– Pkl Error ––
|
–– Pkl Error ––
|
||||||
uh oh
|
uh oh
|
||||||
|
|
||||||
|
5 | throw("uh oh")
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
at test#examples["fail"][#1] (/tempDir/test.pkl, line xx)
|
||||||
|
|
||||||
5 | throw("uh oh")
|
0.0% tests pass [1/1 failed], 0.0% asserts pass [1/1 failed]
|
||||||
^^^^^^^^^^^^^^
|
|
||||||
at test#examples["fail"][#1] (/tempDir/test.pkl, line xx)
|
|
||||||
|
|
||||||
0.0% tests pass [1/1 failed], 0.0% asserts pass [1/1 failed]
|
"""
|
||||||
|
|
||||||
"""
|
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
assertThat(err.toString()).isEqualTo("")
|
assertThat(err.toString()).isEqualTo("")
|
||||||
@@ -296,7 +296,7 @@ class CliTestRunnerTest {
|
|||||||
5 == 9
|
5 == 9
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
||||||
val noopWriter = noopWriter()
|
val noopWriter = noopWriter()
|
||||||
@@ -314,19 +314,19 @@ class CliTestRunnerTest {
|
|||||||
assertThat(junitReport)
|
assertThat(junitReport)
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"""
|
"""
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuite name="test" tests="2" failures="1">
|
<testsuite name="test" tests="2" failures="1">
|
||||||
<testcase classname="test.facts" name="foo"></testcase>
|
<testcase classname="test.facts" name="foo"></testcase>
|
||||||
<testcase classname="test.facts" name="bar">
|
<testcase classname="test.facts" name="bar">
|
||||||
<failure message="Fact Failure">5 == 9 (/tempDir/test.pkl, line xx)
|
<failure message="Fact Failure">5 == 9 (/tempDir/test.pkl, line xx)
|
||||||
│
|
│
|
||||||
false</failure>
|
false</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<system-err><![CDATA[9 = 9
|
<system-err><![CDATA[9 = 9
|
||||||
]]></system-err>
|
]]></system-err>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -346,7 +346,7 @@ class CliTestRunnerTest {
|
|||||||
throw("uh oh")
|
throw("uh oh")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
||||||
val noopWriter = noopWriter()
|
val noopWriter = noopWriter()
|
||||||
@@ -364,23 +364,23 @@ class CliTestRunnerTest {
|
|||||||
assertThat(junitReport)
|
assertThat(junitReport)
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"""
|
"""
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuite name="test" tests="2" failures="1">
|
<testsuite name="test" tests="2" failures="1">
|
||||||
<testcase classname="test.facts" name="foo"></testcase>
|
<testcase classname="test.facts" name="foo"></testcase>
|
||||||
<testcase classname="test.facts" name="fail">
|
<testcase classname="test.facts" name="fail">
|
||||||
<error message="uh oh">–– Pkl Error ––
|
<error message="uh oh">–– Pkl Error ––
|
||||||
uh oh
|
uh oh
|
||||||
|
|
||||||
9 | throw("uh oh")
|
9 | throw("uh oh")
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
at test#facts["fail"][#1] (/tempDir/test.pkl, line xx)
|
at test#facts["fail"][#1] (/tempDir/test.pkl, line xx)
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
<system-err><![CDATA[9 = 9
|
<system-err><![CDATA[9 = 9
|
||||||
]]></system-err>
|
]]></system-err>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -390,7 +390,7 @@ class CliTestRunnerTest {
|
|||||||
val foo =
|
val foo =
|
||||||
"""
|
"""
|
||||||
module foo
|
module foo
|
||||||
|
|
||||||
amends "pkl:test"
|
amends "pkl:test"
|
||||||
|
|
||||||
facts {
|
facts {
|
||||||
@@ -398,13 +398,13 @@ class CliTestRunnerTest {
|
|||||||
1 == 1
|
1 == 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
|
|
||||||
val bar =
|
val bar =
|
||||||
"""
|
"""
|
||||||
module foo
|
module foo
|
||||||
|
|
||||||
amends "pkl:test"
|
amends "pkl:test"
|
||||||
|
|
||||||
facts {
|
facts {
|
||||||
@@ -412,7 +412,7 @@ class CliTestRunnerTest {
|
|||||||
1 == 1
|
1 == 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input = tempDir.resolve("test.pkl").writeString(foo).toString()
|
val input = tempDir.resolve("test.pkl").writeString(foo).toString()
|
||||||
val input2 = tempDir.resolve("test.pkl").writeString(bar).toString()
|
val input2 = tempDir.resolve("test.pkl").writeString(bar).toString()
|
||||||
@@ -438,7 +438,7 @@ class CliTestRunnerTest {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
|
|
||||||
val code2 =
|
val code2 =
|
||||||
@@ -450,7 +450,7 @@ class CliTestRunnerTest {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input1 = tempDir.resolve("test1.pkl").writeString(code1).toString()
|
val input1 = tempDir.resolve("test1.pkl").writeString(code1).toString()
|
||||||
val input2 = tempDir.resolve("test2.pkl").writeString(code2).toString()
|
val input2 = tempDir.resolve("test2.pkl").writeString(code2).toString()
|
||||||
@@ -482,7 +482,7 @@ class CliTestRunnerTest {
|
|||||||
5 == 9
|
5 == 9
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
|
|
||||||
val code2 =
|
val code2 =
|
||||||
@@ -500,7 +500,7 @@ class CliTestRunnerTest {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input1 = tempDir.resolve("test1.pkl").writeString(code1).toString()
|
val input1 = tempDir.resolve("test1.pkl").writeString(code1).toString()
|
||||||
val input2 = tempDir.resolve("test2.pkl").writeString(code2).toString()
|
val input2 = tempDir.resolve("test2.pkl").writeString(code2).toString()
|
||||||
@@ -547,7 +547,7 @@ class CliTestRunnerTest {
|
|||||||
</testsuite>
|
</testsuite>
|
||||||
</testsuites>
|
</testsuites>
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -563,7 +563,7 @@ class CliTestRunnerTest {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
|
|
||||||
val code2 =
|
val code2 =
|
||||||
@@ -575,7 +575,7 @@ class CliTestRunnerTest {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input1 = tempDir.resolve("test1.pkl").writeString(code1).toString()
|
val input1 = tempDir.resolve("test1.pkl").writeString(code1).toString()
|
||||||
val input2 = tempDir.resolve("test2.pkl").writeString(code2).toString()
|
val input2 = tempDir.resolve("test2.pkl").writeString(code2).toString()
|
||||||
@@ -620,19 +620,19 @@ class CliTestRunnerTest {
|
|||||||
2
|
2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
||||||
tempDir
|
tempDir
|
||||||
.resolve("test.pkl-expected.pcf")
|
.resolve("test.pkl-expected.pcf")
|
||||||
.writeString(
|
.writeString(
|
||||||
"""
|
"""
|
||||||
examples {
|
examples {
|
||||||
["nums"] {
|
["nums"] {
|
||||||
1
|
1
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"""
|
}
|
||||||
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
val out = StringWriter()
|
val out = StringWriter()
|
||||||
@@ -676,7 +676,7 @@ class CliTestRunnerTest {
|
|||||||
2
|
2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
val input = tempDir.resolve("test.pkl").writeString(code).toString()
|
||||||
val out = StringWriter()
|
val out = StringWriter()
|
||||||
@@ -694,13 +694,13 @@ class CliTestRunnerTest {
|
|||||||
assertThat(out.toString())
|
assertThat(out.toString())
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"""
|
"""
|
||||||
module test
|
module test
|
||||||
examples
|
examples
|
||||||
✍️ nums
|
✍️ nums
|
||||||
|
|
||||||
1 examples written
|
1 examples written
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -738,13 +738,13 @@ class CliTestRunnerTest {
|
|||||||
assertThat(out.toString().stripFileAndLines(tempDir))
|
assertThat(out.toString().stripFileAndLines(tempDir))
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"""
|
"""
|
||||||
module test
|
module test
|
||||||
facts
|
facts
|
||||||
✔ localeTest
|
✔ localeTest
|
||||||
|
|
||||||
100.0% tests pass [1 passed], 100.0% asserts pass [1 passed]
|
100.0% tests pass [1 passed], 100.0% asserts pass [1 passed]
|
||||||
|
|
||||||
"""
|
"""
|
||||||
.trimIndent()
|
.trimIndent()
|
||||||
)
|
)
|
||||||
assertThat(err.toString()).isEqualTo("")
|
assertThat(err.toString()).isEqualTo("")
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class CliJavaCodeGenerator(private val options: CliJavaCodeGeneratorOptions) :
|
|||||||
val builder = evaluatorBuilder()
|
val builder = evaluatorBuilder()
|
||||||
try {
|
try {
|
||||||
builder.build().use { evaluator ->
|
builder.build().use { evaluator ->
|
||||||
for (moduleUri in options.base.normalizedSourceModules) {
|
for (moduleUri in resolvedSourceModules) {
|
||||||
val schema = evaluator.evaluateSchema(ModuleSource.uri(moduleUri))
|
val schema = evaluator.evaluateSchema(ModuleSource.uri(moduleUri))
|
||||||
val codeGenerator = JavaCodeGenerator(schema, options.toJavaCodeGeneratorOptions())
|
val codeGenerator = JavaCodeGenerator(schema, options.toJavaCodeGeneratorOptions())
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
* 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.
|
||||||
*/
|
*/
|
||||||
@file:Suppress("unused", "CanConvertToMultiDollarString")
|
@file:Suppress("unused")
|
||||||
|
|
||||||
package org.pkl.codegen.java
|
package org.pkl.codegen.java
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ class JavaCodeGenerator(
|
|||||||
val annotation = codegenOptions.nonNullAnnotation
|
val annotation = codegenOptions.nonNullAnnotation
|
||||||
val className =
|
val className =
|
||||||
if (annotation == null) {
|
if (annotation == null) {
|
||||||
ClassName.get("org.jspecify.annotations", "NonNull")
|
ClassName.get("org.pkl.config.java.mapper", "NonNull")
|
||||||
} else {
|
} else {
|
||||||
toClassName(annotation)
|
toClassName(annotation)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 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.
|
||||||
@@ -102,10 +102,10 @@ class PklJavaCodegenCommand : ModulesCommand(name = "pkl-codegen-java", helpLink
|
|||||||
names = arrayOf("--non-null-annotation"),
|
names = arrayOf("--non-null-annotation"),
|
||||||
help =
|
help =
|
||||||
"""
|
"""
|
||||||
Fully qualified name of the annotation type to use for annotating non-null types.
|
Fully qualified name of the annotation type to use for annotating non-null types.
|
||||||
The specified annotation type must be annotated with `@java.lang.annotation.Target(ElementType.TYPE_USE)`
|
The specified annotation type must be annotated with `@java.lang.annotation.Target(ElementType.TYPE_USE)`
|
||||||
or the generated code may not compile.
|
or the generated code may not compile.
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -122,10 +122,10 @@ class PklJavaCodegenCommand : ModulesCommand(name = "pkl-codegen-java", helpLink
|
|||||||
metavar = "old_name=new_name",
|
metavar = "old_name=new_name",
|
||||||
help =
|
help =
|
||||||
"""
|
"""
|
||||||
Replace a prefix in the names of the generated Java classes (repeatable).
|
Replace a prefix in the names of the generated Java classes (repeatable).
|
||||||
By default, the names of generated classes are derived from the Pkl module names.
|
By default, the names of generated classes are derived from the Pkl module names.
|
||||||
With this option, you can override or modify the default names, renaming entire
|
With this option, you can override or modify the default names, renaming entire
|
||||||
classes or just their packages.
|
classes or just their packages.
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -5,8 +5,8 @@ import java.lang.Override;
|
|||||||
import java.lang.String;
|
import java.lang.String;
|
||||||
import java.lang.StringBuilder;
|
import java.lang.StringBuilder;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import org.jspecify.annotations.NonNull;
|
|
||||||
import org.pkl.config.java.mapper.Named;
|
import org.pkl.config.java.mapper.Named;
|
||||||
|
import org.pkl.config.java.mapper.NonNull;
|
||||||
import org.pkl.core.DataSize;
|
import org.pkl.core.DataSize;
|
||||||
import org.pkl.core.Duration;
|
import org.pkl.core.Duration;
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import java.lang.Override;
|
|||||||
import java.lang.String;
|
import java.lang.String;
|
||||||
import java.lang.StringBuilder;
|
import java.lang.StringBuilder;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import org.jspecify.annotations.NonNull;
|
|
||||||
import org.pkl.config.java.mapper.Named;
|
import org.pkl.config.java.mapper.Named;
|
||||||
|
import org.pkl.config.java.mapper.NonNull;
|
||||||
import org.pkl.core.Duration;
|
import org.pkl.core.Duration;
|
||||||
|
|
||||||
public final class Mod {
|
public final class Mod {
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import java.lang.Override;
|
|||||||
import java.lang.String;
|
import java.lang.String;
|
||||||
import java.lang.StringBuilder;
|
import java.lang.StringBuilder;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import org.jspecify.annotations.NonNull;
|
|
||||||
import org.pkl.config.java.mapper.Named;
|
import org.pkl.config.java.mapper.Named;
|
||||||
|
import org.pkl.config.java.mapper.NonNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* module comment.
|
* module comment.
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import java.util.Map;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import org.jspecify.annotations.NonNull;
|
|
||||||
import org.pkl.config.java.mapper.Named;
|
import org.pkl.config.java.mapper.Named;
|
||||||
|
import org.pkl.config.java.mapper.NonNull;
|
||||||
import org.pkl.core.DataSize;
|
import org.pkl.core.DataSize;
|
||||||
import org.pkl.core.DataSizeUnit;
|
import org.pkl.core.DataSizeUnit;
|
||||||
import org.pkl.core.Duration;
|
import org.pkl.core.Duration;
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class CliKotlinCodeGenerator(private val options: CliKotlinCodeGeneratorOptions)
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
builder.build().use { evaluator ->
|
builder.build().use { evaluator ->
|
||||||
for (moduleUri in options.base.normalizedSourceModules) {
|
for (moduleUri in resolvedSourceModules) {
|
||||||
val schema = evaluator.evaluateSchema(ModuleSource.uri(moduleUri))
|
val schema = evaluator.evaluateSchema(ModuleSource.uri(moduleUri))
|
||||||
val codeGenerator = KotlinCodeGenerator(schema, options.toKotlinCodeGeneratorOptions())
|
val codeGenerator = KotlinCodeGenerator(schema, options.toKotlinCodeGeneratorOptions())
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 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.
|
||||||
@@ -91,10 +91,10 @@ class PklKotlinCodegenCommand : ModulesCommand(name = "pkl-codegen-kotlin", help
|
|||||||
metavar = "old_name=new_name",
|
metavar = "old_name=new_name",
|
||||||
help =
|
help =
|
||||||
"""
|
"""
|
||||||
Replace a prefix in the names of the generated Kotlin classes (repeatable).
|
Replace a prefix in the names of the generated Kotlin classes (repeatable).
|
||||||
By default, the names of generated classes are derived from the Pkl module names.
|
By default, the names of generated classes are derived from the Pkl module names.
|
||||||
With this option, you can override or modify the default names, renaming entire
|
With this option, you can override or modify the default names, renaming entire
|
||||||
classes or just their packages.
|
classes or just their packages.
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-3
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 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.
|
||||||
@@ -77,7 +77,7 @@ class CliKotlinCodeGeneratorTest {
|
|||||||
open class Mod1(
|
open class Mod1(
|
||||||
open val pigeon: Person
|
open val pigeon: Person
|
||||||
) {
|
) {
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
module1KotlinFile.readString(),
|
module1KotlinFile.readString(),
|
||||||
)
|
)
|
||||||
@@ -88,7 +88,7 @@ class CliKotlinCodeGeneratorTest {
|
|||||||
pigeon: Mod1.Person,
|
pigeon: Mod1.Person,
|
||||||
val parrot: Mod1.Person
|
val parrot: Mod1.Person
|
||||||
) : Mod1(pigeon) {
|
) : Mod1(pigeon) {
|
||||||
"""
|
"""
|
||||||
.trimIndent(),
|
.trimIndent(),
|
||||||
module2KotlinFile.readString(),
|
module2KotlinFile.readString(),
|
||||||
)
|
)
|
||||||
|
|||||||
+489
-490
File diff suppressed because it is too large
Load Diff
@@ -19,11 +19,10 @@ plugins {
|
|||||||
id("pklPublishLibrary")
|
id("pklPublishLibrary")
|
||||||
}
|
}
|
||||||
|
|
||||||
val svmClasspath: Configuration = configurations.create("svmClasspath")
|
val svmClasspath: Configuration by configurations.creating
|
||||||
|
|
||||||
// used by pklNativeExecutable.gradle.kts
|
// used by pklNativeExecutable.gradle.kts
|
||||||
@Suppress("unused")
|
@Suppress("unused") val svm: SourceSet by sourceSets.creating { compileClasspath = svmClasspath }
|
||||||
val svm: SourceSet = sourceSets.create("svm") { compileClasspath = svmClasspath }
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api(projects.pklCore)
|
api(projects.pklCore)
|
||||||
|
|||||||
@@ -144,14 +144,11 @@ data class CliBaseOptions(
|
|||||||
/** URL prefixes to rewrite. */
|
/** URL prefixes to rewrite. */
|
||||||
val httpRewrites: Map<URI, URI>? = null,
|
val httpRewrites: Map<URI, URI>? = null,
|
||||||
|
|
||||||
/** HTTP headers to add to the request. */
|
|
||||||
val httpHeaders: Map<String, Map<String, List<String>>>? = null,
|
|
||||||
|
|
||||||
/** External module reader process specs */
|
/** External module reader process specs */
|
||||||
val externalModuleReaders: Map<String, ExternalReader>? = null,
|
val externalModuleReaders: Map<String, ExternalReader> = mapOf(),
|
||||||
|
|
||||||
/** External resource reader process specs */
|
/** External resource reader process specs */
|
||||||
val externalResourceReaders: Map<String, ExternalReader>? = null,
|
val externalResourceReaders: Map<String, ExternalReader> = mapOf(),
|
||||||
|
|
||||||
/** Defines options for the formatting of calls to the trace() method. */
|
/** Defines options for the formatting of calls to the trace() method. */
|
||||||
val traceMode: TraceMode? = null,
|
val traceMode: TraceMode? = null,
|
||||||
@@ -189,15 +186,16 @@ data class CliBaseOptions(
|
|||||||
sourceModules
|
sourceModules
|
||||||
.map { uri ->
|
.map { uri ->
|
||||||
if (uri.isAbsolute) uri
|
if (uri.isAbsolute) uri
|
||||||
else if (uri.path.startsWith("@")) uri
|
else if (uri.path.startsWith("@") && !noProject && normalizedProjectFile != null) uri
|
||||||
else IoUtils.resolve(normalizedWorkingDir.toUri(), uri)
|
else IoUtils.resolve(normalizedWorkingDir.toUri(), uri)
|
||||||
}
|
}
|
||||||
// sort modules to make cli output independent of source module order
|
// sort modules to make cli output independent of source module order
|
||||||
.sorted()
|
.sorted()
|
||||||
|
|
||||||
val normalizedSettingsModule: URI? = settings?.let { uri ->
|
val normalizedSettingsModule: URI? =
|
||||||
if (uri.isAbsolute) uri else IoUtils.resolve(normalizedWorkingDir.toUri(), uri)
|
settings?.let { uri ->
|
||||||
}
|
if (uri.isAbsolute) uri else IoUtils.resolve(normalizedWorkingDir.toUri(), uri)
|
||||||
|
}
|
||||||
|
|
||||||
/** [modulePath] after normalization. */
|
/** [modulePath] after normalization. */
|
||||||
val normalizedModulePath: List<Path>? = modulePath?.map(normalizedWorkingDir::resolve)
|
val normalizedModulePath: List<Path>? = modulePath?.map(normalizedWorkingDir::resolve)
|
||||||
|
|||||||
@@ -86,6 +86,36 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected fun resolveModuleUri(uri: URI): URI =
|
||||||
|
if (uri.isAbsolute) uri
|
||||||
|
else { // must be @dep/mod.pkl notation!!
|
||||||
|
if (!uri.path.startsWith('@'))
|
||||||
|
throw CliBugException(
|
||||||
|
RuntimeException("tried to resolve project URI `$uri` with no @ prefix")
|
||||||
|
)
|
||||||
|
if (project == null)
|
||||||
|
throw CliBugException(
|
||||||
|
RuntimeException("tried to resolve project URI `$uri` with no project present")
|
||||||
|
)
|
||||||
|
val dep = uri.path.substringBefore('/').drop(1)
|
||||||
|
val path = uri.path.dropWhile { it != '/' }
|
||||||
|
if (path.isEmpty()) throw CliException("Invalid project dependency URI `$uri`.")
|
||||||
|
|
||||||
|
val remoteDep =
|
||||||
|
project!!.dependencies.remoteDependencies()[dep]
|
||||||
|
?: if (project!!.dependencies.localDependencies().containsKey(dep))
|
||||||
|
throw CliException(
|
||||||
|
"Only remote project dependencies may be referenced using @-notation. Dependency `@$dep` is a local dependency."
|
||||||
|
)
|
||||||
|
else throw CliException("Project does not contain dependency `@$dep`.")
|
||||||
|
remoteDep.packageUri.toPackageAssetUri(path).uri
|
||||||
|
}
|
||||||
|
|
||||||
|
protected val resolvedSourceModules: List<URI> by lazy {
|
||||||
|
if (project == null) cliOptions.normalizedSourceModules
|
||||||
|
else cliOptions.normalizedSourceModules.map(::resolveModuleUri)
|
||||||
|
}
|
||||||
|
|
||||||
protected fun loadProject(projectFile: Path): Project {
|
protected fun loadProject(projectFile: Path): Project {
|
||||||
val securityManager =
|
val securityManager =
|
||||||
SecurityManagers.standard(
|
SecurityManagers.standard(
|
||||||
@@ -110,7 +140,7 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
|
|||||||
|
|
||||||
private val evaluatorSettings: PklEvaluatorSettings? by lazy {
|
private val evaluatorSettings: PklEvaluatorSettings? by lazy {
|
||||||
@Suppress("PklCliDirectProjectEvaluatorSettingsAccess")
|
@Suppress("PklCliDirectProjectEvaluatorSettingsAccess")
|
||||||
if (cliOptions.omitProjectSettings) null else project?.resolvedEvaluatorSettings
|
if (cliOptions.omitProjectSettings) null else project?.evaluatorSettings
|
||||||
}
|
}
|
||||||
|
|
||||||
protected val allowedModules: List<Pattern> by lazy {
|
protected val allowedModules: List<Pattern> by lazy {
|
||||||
@@ -185,19 +215,15 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected val httpRewrites: Map<URI, URI>? by lazy {
|
protected val httpRewrites: Map<URI, URI>? by lazy {
|
||||||
cliOptions.httpRewrites ?: evaluatorSettings?.http?.rewrites ?: settings.http?.rewrites
|
cliOptions.httpRewrites ?: evaluatorSettings?.http?.rewrites ?: settings.http?.rewrites()
|
||||||
}
|
|
||||||
|
|
||||||
private val httpHeaders: Map<String, Map<String, List<String>>>? by lazy {
|
|
||||||
cliOptions.httpHeaders ?: evaluatorSettings?.http?.headers ?: settings.http?.headers
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected val externalModuleReaders: Map<String, PklEvaluatorSettings.ExternalReader> by lazy {
|
protected val externalModuleReaders: Map<String, PklEvaluatorSettings.ExternalReader> by lazy {
|
||||||
cliOptions.externalModuleReaders ?: evaluatorSettings?.externalModuleReaders ?: mapOf()
|
(evaluatorSettings?.externalModuleReaders ?: emptyMap()) + cliOptions.externalModuleReaders
|
||||||
}
|
}
|
||||||
|
|
||||||
protected val externalResourceReaders: Map<String, PklEvaluatorSettings.ExternalReader> by lazy {
|
protected val externalResourceReaders: Map<String, PklEvaluatorSettings.ExternalReader> by lazy {
|
||||||
cliOptions.externalResourceReaders ?: evaluatorSettings?.externalResourceReaders ?: mapOf()
|
(evaluatorSettings?.externalResourceReaders ?: emptyMap()) + cliOptions.externalResourceReaders
|
||||||
}
|
}
|
||||||
|
|
||||||
private val externalProcesses:
|
private val externalProcesses:
|
||||||
@@ -251,7 +277,6 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
|
|||||||
setProxy(proxyAddress, noProxy ?: listOf())
|
setProxy(proxyAddress, noProxy ?: listOf())
|
||||||
}
|
}
|
||||||
httpRewrites?.let(::setRewrites)
|
httpRewrites?.let(::setRewrites)
|
||||||
httpHeaders?.let(::setHeaders)
|
|
||||||
// Lazy building significantly reduces execution time of commands that do minimal work.
|
// Lazy building significantly reduces execution time of commands that do minimal work.
|
||||||
// However, it means that HTTP client initialization errors won't surface until an HTTP
|
// However, it means that HTTP client initialization errors won't surface until an HTTP
|
||||||
// request is made.
|
// request is made.
|
||||||
@@ -282,7 +307,6 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
|
|||||||
add(ResourceReaders.modulePath(modulePathResolver))
|
add(ResourceReaders.modulePath(modulePathResolver))
|
||||||
add(ResourceReaders.pkg())
|
add(ResourceReaders.pkg())
|
||||||
add(ResourceReaders.projectpackage())
|
add(ResourceReaders.projectpackage())
|
||||||
addAll(ResourceReaders.fromServiceProviders())
|
|
||||||
add(ResourceReaders.file())
|
add(ResourceReaders.file())
|
||||||
add(ResourceReaders.http())
|
add(ResourceReaders.http())
|
||||||
add(ResourceReaders.https())
|
add(ResourceReaders.https())
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 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.
|
||||||
@@ -22,5 +22,4 @@ class CliTestOptions(
|
|||||||
val overwrite: Boolean = false,
|
val overwrite: Boolean = false,
|
||||||
val junitAggregateReports: Boolean = false,
|
val junitAggregateReports: Boolean = false,
|
||||||
val junitAggregateSuiteName: String = "pkl-tests",
|
val junitAggregateSuiteName: String = "pkl-tests",
|
||||||
val reporter: TestReporter = TestReporter.default,
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ 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.evaluatorSettings.TraceMode
|
||||||
import org.pkl.core.runtime.VmUtils
|
import org.pkl.core.runtime.VmUtils
|
||||||
import org.pkl.core.util.GlobResolver
|
|
||||||
import org.pkl.core.util.IoUtils
|
import org.pkl.core.util.IoUtils
|
||||||
|
|
||||||
@Suppress("MemberVisibilityCanBePrivate")
|
@Suppress("MemberVisibilityCanBePrivate")
|
||||||
@@ -55,8 +54,7 @@ class BaseOptions : OptionGroup() {
|
|||||||
if (IoUtils.isUriLike(moduleName)) URI(moduleName)
|
if (IoUtils.isUriLike(moduleName)) URI(moduleName)
|
||||||
// Can't just use URI constructor, because URI(null, null, "C:/foo/bar", null) turns
|
// Can't just use URI constructor, because URI(null, null, "C:/foo/bar", null) turns
|
||||||
// into `URI("C", null, "/foo/bar", null)`.
|
// into `URI("C", null, "/foo/bar", null)`.
|
||||||
else if (IoUtils.isWindows() && IoUtils.isWindowsAbsolutePath(moduleName))
|
else if (IoUtils.isWindowsAbsolutePath(moduleName)) Path.of(moduleName).toUri()
|
||||||
Path.of(moduleName).toUri()
|
|
||||||
else URI(null, null, IoUtils.toNormalizedPathString(Path.of(moduleName)), null)
|
else URI(null, null, IoUtils.toNormalizedPathString(Path.of(moduleName)), null)
|
||||||
} catch (e: URISyntaxException) {
|
} catch (e: URISyntaxException) {
|
||||||
val message = buildString {
|
val message = buildString {
|
||||||
@@ -92,11 +90,9 @@ class BaseOptions : OptionGroup() {
|
|||||||
> {
|
> {
|
||||||
return splitPair(delimiter).convert {
|
return splitPair(delimiter).convert {
|
||||||
val cmd = shlex(it.second)
|
val cmd = shlex(it.second)
|
||||||
Pair(it.first, ExternalReader(cmd.first(), cmd.drop(1), null))
|
Pair(it.first, ExternalReader(cmd.first(), cmd.drop(1)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val headerRegex = Regex("""^(.+?):[ \t]*(.*)$""")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private val defaults = CliBaseOptions()
|
private val defaults = CliBaseOptions()
|
||||||
@@ -289,37 +285,6 @@ class BaseOptions : OptionGroup() {
|
|||||||
.multiple()
|
.multiple()
|
||||||
.toMap()
|
.toMap()
|
||||||
|
|
||||||
val httpHeaders: Map<String, Map<String, List<String>>> by
|
|
||||||
option(
|
|
||||||
names = arrayOf("--http-header"),
|
|
||||||
metavar = "<url-pattern>=<header name>:<header value>",
|
|
||||||
help = "HTTP header to add to the request.",
|
|
||||||
)
|
|
||||||
.splitPair()
|
|
||||||
.transformAll { pairs ->
|
|
||||||
buildMap<String, MutableMap<String, MutableList<String>>> {
|
|
||||||
for ((pattern, headerNameAndValue) in pairs) {
|
|
||||||
try {
|
|
||||||
GlobResolver.toRegexPattern(pattern)
|
|
||||||
} catch (e: GlobResolver.InvalidGlobPatternException) {
|
|
||||||
fail(e.message!!)
|
|
||||||
}
|
|
||||||
val (headerName, headerValue) =
|
|
||||||
headerRegex.find(headerNameAndValue)?.destructured
|
|
||||||
?: fail("Header '$headerNameAndValue' is not in 'name:value' format.")
|
|
||||||
try {
|
|
||||||
IoUtils.validateHeaderName(headerName)
|
|
||||||
IoUtils.validateHeaderValue(headerValue)
|
|
||||||
} catch (e: IllegalArgumentException) {
|
|
||||||
fail(e.message!!)
|
|
||||||
}
|
|
||||||
getOrPut(pattern) { mutableMapOf() }
|
|
||||||
.getOrPut(headerName) { mutableListOf() }
|
|
||||||
.add(headerValue)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val externalModuleReaders: Map<String, ExternalReader> by
|
val externalModuleReaders: Map<String, ExternalReader> by
|
||||||
option(
|
option(
|
||||||
names = arrayOf("--external-module-reader"),
|
names = arrayOf("--external-module-reader"),
|
||||||
@@ -386,9 +351,8 @@ class BaseOptions : OptionGroup() {
|
|||||||
httpProxy = proxy,
|
httpProxy = proxy,
|
||||||
httpNoProxy = noProxy,
|
httpNoProxy = noProxy,
|
||||||
httpRewrites = httpRewrites.ifEmpty { null },
|
httpRewrites = httpRewrites.ifEmpty { null },
|
||||||
httpHeaders = httpHeaders.ifEmpty { null },
|
externalModuleReaders = externalModuleReaders,
|
||||||
externalModuleReaders = externalModuleReaders.ifEmpty { null },
|
externalResourceReaders = externalResourceReaders,
|
||||||
externalResourceReaders = externalResourceReaders.ifEmpty { null },
|
|
||||||
traceMode = traceMode,
|
traceMode = traceMode,
|
||||||
powerAssertionsEnabled = powerAssertionsEnabled,
|
powerAssertionsEnabled = powerAssertionsEnabled,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 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.
|
||||||
@@ -19,11 +19,9 @@ import com.github.ajalt.clikt.parameters.groups.OptionGroup
|
|||||||
import com.github.ajalt.clikt.parameters.options.default
|
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.commons.cli.CliTestOptions
|
import org.pkl.commons.cli.CliTestOptions
|
||||||
import org.pkl.commons.cli.TestReporter
|
|
||||||
|
|
||||||
class TestOptions : OptionGroup() {
|
class TestOptions : OptionGroup() {
|
||||||
private val junitReportDir: Path? by
|
private val junitReportDir: Path? by
|
||||||
@@ -53,19 +51,7 @@ class TestOptions : OptionGroup() {
|
|||||||
private val overwrite: Boolean by
|
private val overwrite: Boolean by
|
||||||
option(names = arrayOf("--overwrite"), help = "Force generation of expected examples.").flag()
|
option(names = arrayOf("--overwrite"), help = "Force generation of expected examples.").flag()
|
||||||
|
|
||||||
private val reporter: TestReporter by
|
|
||||||
option(names = arrayOf("--test-reporter"), help = "Which test reporter to use for CLI output.")
|
|
||||||
.enum<TestReporter> { it.name.lowercase() }
|
|
||||||
.single()
|
|
||||||
.default(TestReporter.default)
|
|
||||||
|
|
||||||
val cliTestOptions: CliTestOptions by lazy {
|
val cliTestOptions: CliTestOptions by lazy {
|
||||||
CliTestOptions(
|
CliTestOptions(junitReportDir, overwrite, junitAggregateReports, junitAggregateSuiteName)
|
||||||
junitReportDir,
|
|
||||||
overwrite,
|
|
||||||
junitAggregateReports,
|
|
||||||
junitAggregateSuiteName,
|
|
||||||
reporter,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
amends "pkl:Project"
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
["fruit"] { uri = "package://localhost:0/fruit@1.1.0" }
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"schemaVersion": 1,
|
|
||||||
"resolvedDependencies": {
|
|
||||||
"package://localhost:0/fruit@1": {
|
|
||||||
"type": "remote",
|
|
||||||
"uri": "projectpackage://localhost:0/fruit@1.1.0",
|
|
||||||
"checksums": {
|
|
||||||
"sha256": "$skipChecksumVerification"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 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.
|
||||||
@@ -98,17 +98,17 @@ class BaseCommandTest {
|
|||||||
assertThat(cmd.baseOptions.externalModuleReaders)
|
assertThat(cmd.baseOptions.externalModuleReaders)
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
mapOf(
|
mapOf(
|
||||||
"scheme3" to ExternalReader("reader3", emptyList(), null),
|
"scheme3" to ExternalReader("reader3", emptyList()),
|
||||||
"scheme4" to ExternalReader("reader4", listOf("with", "args"), null),
|
"scheme4" to ExternalReader("reader4", listOf("with", "args")),
|
||||||
"scheme+ext" to ExternalReader("reader5", listOf("with", "args"), null),
|
"scheme+ext" to ExternalReader("reader5", listOf("with", "args")),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
assertThat(cmd.baseOptions.externalResourceReaders)
|
assertThat(cmd.baseOptions.externalResourceReaders)
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
mapOf(
|
mapOf(
|
||||||
"scheme1" to ExternalReader("reader1", emptyList(), null),
|
"scheme1" to ExternalReader("reader1", emptyList()),
|
||||||
"scheme2" to ExternalReader("reader2", listOf("with", "args"), null),
|
"scheme2" to ExternalReader("reader2", listOf("with", "args")),
|
||||||
"scheme+ext" to ExternalReader("reader5", listOf("with", "args"), null),
|
"scheme+ext" to ExternalReader("reader5", listOf("with", "args")),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,10 +17,13 @@ package org.pkl.commons.cli
|
|||||||
|
|
||||||
import com.github.ajalt.clikt.core.parse
|
import com.github.ajalt.clikt.core.parse
|
||||||
import com.github.ajalt.clikt.parameters.groups.provideDelegate
|
import com.github.ajalt.clikt.parameters.groups.provideDelegate
|
||||||
|
import java.net.URI
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import kotlin.io.path.ExperimentalPathApi
|
import kotlin.io.path.ExperimentalPathApi
|
||||||
|
import kotlin.io.path.writeText
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
import org.junit.jupiter.api.assertThrows
|
||||||
import org.junit.jupiter.api.condition.DisabledOnJre
|
import org.junit.jupiter.api.condition.DisabledOnJre
|
||||||
import org.junit.jupiter.api.condition.JRE
|
import org.junit.jupiter.api.condition.JRE
|
||||||
import org.junit.jupiter.api.io.TempDir
|
import org.junit.jupiter.api.io.TempDir
|
||||||
@@ -28,12 +31,12 @@ import org.pkl.commons.cli.commands.BaseCommand
|
|||||||
import org.pkl.commons.cli.commands.ProjectOptions
|
import org.pkl.commons.cli.commands.ProjectOptions
|
||||||
import org.pkl.commons.writeString
|
import org.pkl.commons.writeString
|
||||||
import org.pkl.core.SecurityManagers
|
import org.pkl.core.SecurityManagers
|
||||||
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings
|
|
||||||
import org.pkl.core.evaluatorSettings.TraceMode
|
import org.pkl.core.evaluatorSettings.TraceMode
|
||||||
import org.pkl.core.util.IoUtils
|
import org.pkl.core.util.IoUtils
|
||||||
|
|
||||||
@OptIn(ExperimentalPathApi::class)
|
@OptIn(ExperimentalPathApi::class)
|
||||||
class CliCommandTest {
|
class CliCommandTest {
|
||||||
|
|
||||||
private val cmd =
|
private val cmd =
|
||||||
object : BaseCommand("test", "") {
|
object : BaseCommand("test", "") {
|
||||||
val projectOptions: ProjectOptions by ProjectOptions()
|
val projectOptions: ProjectOptions by ProjectOptions()
|
||||||
@@ -46,6 +49,7 @@ class CliCommandTest {
|
|||||||
class CliTest(options: CliBaseOptions) : CliCommand(options) {
|
class CliTest(options: CliBaseOptions) : CliCommand(options) {
|
||||||
override fun doRun() = Unit
|
override fun doRun() = Unit
|
||||||
|
|
||||||
|
val myResolvedSourceModules = resolvedSourceModules
|
||||||
val myAllowedModules = allowedModules
|
val myAllowedModules = allowedModules
|
||||||
val myAllowedResources = allowedResources
|
val myAllowedResources = allowedResources
|
||||||
val myRootDir = rootDir
|
val myRootDir = rootDir
|
||||||
@@ -94,6 +98,114 @@ class CliCommandTest {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `@-notation package URIs - treated as relative paths when no project present`(
|
||||||
|
@TempDir tempDir: Path
|
||||||
|
) {
|
||||||
|
cmd.parse(arrayOf("--working-dir=$tempDir"))
|
||||||
|
val opts = cmd.baseOptions.baseOptions(listOf(URI("@foo/bar.pkl")), testMode = true)
|
||||||
|
val cliTest = CliTest(opts)
|
||||||
|
assertThat(cliTest.myResolvedSourceModules)
|
||||||
|
.isEqualTo(listOf(tempDir.toUri().resolve("@foo/bar.pkl")))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `@-notation package URIs - empty paths are rejected`(@TempDir tempDir: Path) {
|
||||||
|
tempDir
|
||||||
|
.resolve("PklProject")
|
||||||
|
.writeText(
|
||||||
|
"""
|
||||||
|
amends "pkl:Project"
|
||||||
|
"""
|
||||||
|
.trimIndent()
|
||||||
|
)
|
||||||
|
cmd.parse(arrayOf("--working-dir=$tempDir"))
|
||||||
|
val opts = cmd.baseOptions.baseOptions(listOf(URI("@no.slash")), testMode = true)
|
||||||
|
val exc = assertThrows<CliException> { CliTest(opts) }
|
||||||
|
assertThat(exc.message).isEqualTo("Invalid project dependency URI `@no.slash`.")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `@-notation package URIs - missing dependencies are rejected`(@TempDir tempDir: Path) {
|
||||||
|
tempDir
|
||||||
|
.resolve("PklProject")
|
||||||
|
.writeText(
|
||||||
|
"""
|
||||||
|
amends "pkl:Project"
|
||||||
|
"""
|
||||||
|
.trimIndent()
|
||||||
|
)
|
||||||
|
cmd.parse(arrayOf("--working-dir=$tempDir"))
|
||||||
|
val opts = cmd.baseOptions.baseOptions(listOf(URI("@foo/bar.pkl")), testMode = true)
|
||||||
|
val exc = assertThrows<CliException> { CliTest(opts) }
|
||||||
|
assertThat(exc.message).isEqualTo("Project does not contain dependency `@foo`.")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `@-notation package URIs - local dependencies are rejected`(
|
||||||
|
@TempDir tempDir: Path,
|
||||||
|
@TempDir depDir: Path,
|
||||||
|
) {
|
||||||
|
depDir
|
||||||
|
.resolve("PklProject")
|
||||||
|
.writeText(
|
||||||
|
"""
|
||||||
|
amends "pkl:Project"
|
||||||
|
|
||||||
|
package {
|
||||||
|
name = "foo"
|
||||||
|
baseUri = "package://example.com/foo"
|
||||||
|
version = "0.0.1"
|
||||||
|
packageZipUrl = "https://example.com/foo@\(version).zip"
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
.trimIndent()
|
||||||
|
)
|
||||||
|
|
||||||
|
tempDir
|
||||||
|
.resolve("PklProject")
|
||||||
|
.writeText(
|
||||||
|
"""
|
||||||
|
amends "pkl:Project"
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
["foo"] = import("${depDir.toUri().resolve("PklProject")}")
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
.trimIndent()
|
||||||
|
)
|
||||||
|
cmd.parse(arrayOf("--working-dir=$tempDir"))
|
||||||
|
val opts = cmd.baseOptions.baseOptions(listOf(URI("@foo/bar.pkl")), testMode = true)
|
||||||
|
val exc = assertThrows<CliException> { CliTest(opts) }
|
||||||
|
assertThat(exc.message)
|
||||||
|
.isEqualTo(
|
||||||
|
"Only remote project dependencies may be referenced using @-notation. Dependency `@foo` is a local dependency."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `@-notation package URIs - remote dependencies are resolved`(@TempDir tempDir: Path) {
|
||||||
|
tempDir
|
||||||
|
.resolve("PklProject")
|
||||||
|
.writeText(
|
||||||
|
"""
|
||||||
|
amends "pkl:Project"
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
["foo"] {
|
||||||
|
uri = "package://example.com/foo@1.2.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
.trimIndent()
|
||||||
|
)
|
||||||
|
cmd.parse(arrayOf("--working-dir=$tempDir"))
|
||||||
|
val opts = cmd.baseOptions.baseOptions(listOf(URI("@foo/bar.pkl")), testMode = true)
|
||||||
|
val cliTest = CliTest(opts)
|
||||||
|
assertThat(cliTest.myResolvedSourceModules)
|
||||||
|
.isEqualTo(listOf(tempDir.toUri().resolve("package://example.com/foo@1.2.3#/bar.pkl")))
|
||||||
|
}
|
||||||
|
|
||||||
val projectWithAllEvaluatorSettings =
|
val projectWithAllEvaluatorSettings =
|
||||||
"""
|
"""
|
||||||
amends "pkl:Project"
|
amends "pkl:Project"
|
||||||
@@ -172,32 +284,4 @@ class CliCommandTest {
|
|||||||
.isNotNull
|
.isNotNull
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `--external-module-reader blows away PklProject externalModuleReaders`(
|
|
||||||
@TempDir tempDir: Path
|
|
||||||
) {
|
|
||||||
tempDir
|
|
||||||
.resolve("PklProject")
|
|
||||||
.writeString(
|
|
||||||
// language=pkl
|
|
||||||
"""
|
|
||||||
amends "pkl:Project"
|
|
||||||
|
|
||||||
evaluatorSettings {
|
|
||||||
externalModuleReaders {
|
|
||||||
["foo"] {
|
|
||||||
executable = "foo"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
.trimIndent()
|
|
||||||
)
|
|
||||||
cmd.parse(arrayOf("--external-module-reader", "bar=bar"))
|
|
||||||
val opts = cmd.baseOptions.baseOptions(emptyList(), null, true)
|
|
||||||
val cliTest = CliTest(opts)
|
|
||||||
assertThat(cliTest.myExternalModuleReaders)
|
|
||||||
.isEqualTo(mapOf("bar" to PklEvaluatorSettings.ExternalReader("bar", listOf(), null)))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ dependencies {
|
|||||||
* These packages are used by PackageServer to serve assets when running LanguageSnippetTests and
|
* These packages are used by PackageServer to serve assets when running LanguageSnippetTests and
|
||||||
* PackageResolversTest.
|
* PackageResolversTest.
|
||||||
*/
|
*/
|
||||||
val createTestPackages = tasks.register("createTestPackages")
|
val createTestPackages by tasks.registering
|
||||||
|
|
||||||
// make sure that declaring a dependency on this project suffices to have test fixtures generated
|
// make sure that declaring a dependency on this project suffices to have test fixtures generated
|
||||||
tasks.processResources {
|
tasks.processResources {
|
||||||
@@ -92,8 +92,8 @@ val keystoreName = "localhost.p12"
|
|||||||
val keystoreFile = keystoreDir.map { it.file(keystoreName) }
|
val keystoreFile = keystoreDir.map { it.file(keystoreName) }
|
||||||
val certsFileName = "localhost.pem"
|
val certsFileName = "localhost.pem"
|
||||||
|
|
||||||
val generateKeys =
|
val generateKeys by
|
||||||
tasks.register<JavaExec>("generateKeys") {
|
tasks.registering(JavaExec::class) {
|
||||||
outputs.file(keystoreFile)
|
outputs.file(keystoreFile)
|
||||||
mainClass.set("sun.security.tools.keytool.Main")
|
mainClass.set("sun.security.tools.keytool.Main")
|
||||||
args =
|
args =
|
||||||
@@ -117,8 +117,8 @@ val generateKeys =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val exportCerts =
|
val exportCerts by
|
||||||
tasks.register<JavaExec>("exportCerts") {
|
tasks.registering(JavaExec::class) {
|
||||||
val outputFile = keystoreDir.map { it.file(certsFileName) }
|
val outputFile = keystoreDir.map { it.file(certsFileName) }
|
||||||
dependsOn(generateKeys)
|
dependsOn(generateKeys)
|
||||||
inputs.file(keystoreFile)
|
inputs.file(keystoreFile)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 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.
|
||||||
@@ -31,19 +31,12 @@ object FileTestUtils {
|
|||||||
?: workingDir.parent.parent.takeIf { it.resolve("settings.gradle.kts").exists() }
|
?: workingDir.parent.parent.takeIf { it.resolve("settings.gradle.kts").exists() }
|
||||||
?: throw AssertionError("Failed to locate root project directory.")
|
?: throw AssertionError("Failed to locate root project directory.")
|
||||||
}
|
}
|
||||||
|
val selfSignedCertificate: Path by lazy {
|
||||||
val selfSignedCertificateP12: Path by lazy {
|
|
||||||
rootProjectDir.resolve("pkl-commons-test/build/keystore/localhost.p12")
|
|
||||||
}
|
|
||||||
|
|
||||||
val selfSignedCertificatePem: Path by lazy {
|
|
||||||
rootProjectDir.resolve("pkl-commons-test/build/keystore/localhost.pem")
|
rootProjectDir.resolve("pkl-commons-test/build/keystore/localhost.pem")
|
||||||
}
|
}
|
||||||
|
|
||||||
val selfSignedCertificatePassword = "password"
|
|
||||||
|
|
||||||
fun writeCertificateWithMissingLines(dir: Path): Path {
|
fun writeCertificateWithMissingLines(dir: Path): Path {
|
||||||
val lines = selfSignedCertificatePem.readLines()
|
val lines = selfSignedCertificate.readLines()
|
||||||
// drop some lines in the middle
|
// drop some lines in the middle
|
||||||
return dir.resolve("invalidCerts.pem").writeLines(lines.take(5) + lines.takeLast(5))
|
return dir.resolve("invalidCerts.pem").writeLines(lines.take(5) + lines.takeLast(5))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
|
* Copyright © 2024 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.
|
||||||
@@ -17,7 +17,6 @@ package org.pkl.config.java;
|
|||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.jspecify.annotations.Nullable;
|
|
||||||
import org.pkl.config.java.mapper.ValueMapper;
|
import org.pkl.config.java.mapper.ValueMapper;
|
||||||
import org.pkl.core.Composite;
|
import org.pkl.core.Composite;
|
||||||
|
|
||||||
@@ -50,37 +49,17 @@ abstract class AbstractConfig implements Config {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T as(Class<T> type) {
|
public <T> T as(Class<T> type) {
|
||||||
return trustNonNull(asNullable(type));
|
return as((Type) type);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> T as(JavaType<T> type) {
|
|
||||||
return trustNonNull(asNullable(type));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T as(Type type) {
|
public <T> T as(Type type) {
|
||||||
return trustNonNull(asNullable(type));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> @Nullable T asNullable(Class<T> type) {
|
|
||||||
return mapper.map(getRawValue(), type);
|
return mapper.map(getRawValue(), type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> @Nullable T asNullable(JavaType<T> type) {
|
public <T> T as(JavaType<T> javaType) {
|
||||||
return mapper.map(getRawValue(), type.getType());
|
return as(javaType.getType());
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T extends @Nullable Object> T asNullable(Type type) {
|
|
||||||
return mapper.map(getRawValue(), type);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked", "DataFlowIssue", "NullAway"})
|
|
||||||
private static <T> T trustNonNull(@Nullable Object value) {
|
|
||||||
return (T) value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract Object getRawChildValue(String property);
|
protected abstract Object getRawChildValue(String property);
|
||||||
|
|||||||
@@ -17,130 +17,60 @@ package org.pkl.config.java;
|
|||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import org.jspecify.annotations.NullUnmarked;
|
|
||||||
import org.jspecify.annotations.Nullable;
|
import org.jspecify.annotations.Nullable;
|
||||||
import org.pkl.config.java.mapper.ConversionException;
|
import org.pkl.config.java.mapper.ConversionException;
|
||||||
import org.pkl.config.java.mapper.ValueMapper;
|
import org.pkl.config.java.mapper.ValueMapper;
|
||||||
|
import org.pkl.core.Evaluator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A root, intermediate, or leaf node in a configuration tree.
|
* A root, intermediate, or leaf node in a configuration tree. Child nodes can be obtained by name
|
||||||
*
|
* using {@link #get(String)}. To consume the node's composite or scalar value, convert the value to
|
||||||
* <p>To navigate to a child node, use {@link #get(String)} with the child's unqualified name.
|
* the desired Java type, using one of the provided {@link #as} methods.
|
||||||
*
|
|
||||||
* <p>To retrieve this node's value, use:
|
|
||||||
*
|
|
||||||
* <ul>
|
|
||||||
* <li>{@link #as(Class)} for non-null types.
|
|
||||||
* <li>{@link #asNullable(Class)} for nullable types.
|
|
||||||
* <li>{@link #as(JavaType)} for parameterized types, such as {@code List<@Nullable String>}.
|
|
||||||
* </ul>
|
|
||||||
*
|
|
||||||
* <p>Whether a method can return null depends on the method and target type used. For example,
|
|
||||||
* {@code asNullable(String.class)} can return {@code null}, while {@code
|
|
||||||
* as(JavaType.listOfNullable(String.class))} can return a {@code List<String>} with nullable
|
|
||||||
* elements. These nullness rules are for static analysis tools such as IntelliJ IDEA and NullAway
|
|
||||||
* and are not enforced at runtime.
|
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"DeprecatedIsStillUsed"})
|
@SuppressWarnings({"DeprecatedIsStillUsed"})
|
||||||
public interface Config {
|
public interface Config {
|
||||||
/**
|
/**
|
||||||
* Returns the qualified name of this node, or the empty string if this is the root node.
|
* The dot-separated name of this node. For example, the node reached using {@code
|
||||||
*
|
* rootNode.get("foo").get("bar")} has qualified name {@code foo.bar}. Returns the empty String
|
||||||
* <p>The qualified name is formed by joining child names using {@code '.'}. For example, {@code
|
* for the root node itself.
|
||||||
* rootNode.get("foo").get("bar").getQualifiedName()} returns {@code "foo.bar"}.
|
|
||||||
*/
|
*/
|
||||||
String getQualifiedName();
|
String getQualifiedName();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the underlying value of this node.
|
* The raw value of this node, as provided by {@link Evaluator}. Typically, a node's value is not
|
||||||
*
|
* consumed directly, but converted to the desired Java type using {@link #as}.
|
||||||
* <p>This value is typically accessed indirectly via {@link #as(Class)}, {@link
|
|
||||||
* #asNullable(Class)}, or {@link #as(JavaType)}.
|
|
||||||
*/
|
*/
|
||||||
Object getRawValue();
|
Object getRawValue();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the child node with the given unqualified name.
|
* Returns the child node with the given unqualified name.
|
||||||
*
|
*
|
||||||
* <p>For example, {@code get("foo").get("bar")} returns the child named {@code "bar"} of the
|
|
||||||
* child named {@code "foo"}. Passing a qualified name to this method, as in {@code
|
|
||||||
* get("foo.bar")}, is not supported.
|
|
||||||
*
|
|
||||||
* @throws NoSuchChildException if a child with the given name does not exist
|
* @throws NoSuchChildException if a child with the given name does not exist
|
||||||
*/
|
*/
|
||||||
Config get(String childName);
|
Config get(String childName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns this node's value as a non-null value of the given {@link Class}.
|
* Converts this node's value to the given {@link Class}.
|
||||||
*
|
|
||||||
* <p>If this node's value may be {@code null}, use {@link #asNullable(Class)} instead. In a
|
|
||||||
* future version, this method will perform a non-null check.
|
|
||||||
*
|
*
|
||||||
* @throws ConversionException if the value cannot be converted to the given type
|
* @throws ConversionException if the value cannot be converted to the given type
|
||||||
*/
|
*/
|
||||||
@NullUnmarked
|
<T extends @Nullable Object> T as(Class<T> type);
|
||||||
<T> T as(Class<T> type);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns this node's value as a non-null value of the given {@link JavaType}.
|
* Converts this node's value to the given {@link Type}.
|
||||||
*
|
*
|
||||||
* <p>If this node's value may be {@code null}, use {@link #asNullable(JavaType)} instead. In a
|
* <p>Note that usages of this method are not type safe.
|
||||||
* future version, this method will perform a non-null check.
|
|
||||||
*
|
|
||||||
* <p>Use this method when converting to a parameterized type, such as {@code List<@Nullable
|
|
||||||
* String>}.
|
|
||||||
*
|
*
|
||||||
* @throws ConversionException if the value cannot be converted to the given type
|
* @throws ConversionException if the value cannot be converted to the given type
|
||||||
*/
|
*/
|
||||||
@NullUnmarked
|
<T extends @Nullable Object> T as(Type type);
|
||||||
<T> T as(JavaType<T> type);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns this node's value as a non-null value of the given {@link Type}.
|
* Converts this node's value to the given {@link JavaType}.
|
||||||
*
|
|
||||||
* <p>If this node's value may be {@code null}, use {@link #asNullable(Type)} instead. In a future
|
|
||||||
* version, this method will perform a non-null check.
|
|
||||||
*
|
|
||||||
* <p>Use this method when the target type is already available as a {@link Type}; otherwise,
|
|
||||||
* prefer {@link #as(Class)} or {@link #as(JavaType)}.
|
|
||||||
*
|
*
|
||||||
* @throws ConversionException if the value cannot be converted to the given type
|
* @throws ConversionException if the value cannot be converted to the given type
|
||||||
*/
|
*/
|
||||||
@NullUnmarked
|
<T extends @Nullable Object> T as(JavaType<T> type);
|
||||||
<T> T as(Type type);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns this node's value as a nullable value of the given {@link Class}.
|
|
||||||
*
|
|
||||||
* <p>If this node's value cannot be {@code null}, use {@link #as(Class)} instead.
|
|
||||||
*
|
|
||||||
* @throws ConversionException if the value cannot be converted to the given type
|
|
||||||
*/
|
|
||||||
<T> @Nullable T asNullable(Class<T> type);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns this node's value as a nullable value of the given {@link Class}.
|
|
||||||
*
|
|
||||||
* <p>If this node's value cannot be {@code null}, use {@link #as(JavaType)} instead.
|
|
||||||
*
|
|
||||||
* <p>Use this method when converting to a parameterized type, such as {@code List<@Nullable
|
|
||||||
* String>}.
|
|
||||||
*
|
|
||||||
* @throws ConversionException if the value cannot be converted to the given type
|
|
||||||
*/
|
|
||||||
<T> @Nullable T asNullable(JavaType<T> type);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns this node's value as a nullable value of the given {@link Type}.
|
|
||||||
*
|
|
||||||
* <p>If this node's value cannot be {@code null}, use {@link #as(Type)} instead.
|
|
||||||
*
|
|
||||||
* <p>Use this method when the target type is already available as a {@link Type}; otherwise,
|
|
||||||
* prefer {@link #asNullable(Class)} or {@link #as(JavaType)}.
|
|
||||||
*
|
|
||||||
* @throws ConversionException if the value cannot be converted to the given type
|
|
||||||
*/
|
|
||||||
<T extends @Nullable Object> T asNullable(Type type);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Decodes a config from the supplied byte array.
|
* Decodes a config from the supplied byte array.
|
||||||
|
|||||||
@@ -23,77 +23,30 @@ import org.pkl.config.java.mapper.Types;
|
|||||||
import org.pkl.core.Pair;
|
import org.pkl.core.Pair;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a Java type, including fully parameterized types.
|
* Runtime representation of a possibly parameterized Java type. Factory methods are provided to
|
||||||
|
* ease construction of commonly used Java standard library types. For example, a {@code JavaType}
|
||||||
|
* for {@code List<String>} can be constructed using {@code JavaType.listOf(String.class)}.
|
||||||
*
|
*
|
||||||
* <p>This class captures complete type information that cannot be expressed with {@link Class}, for
|
* <p>Parameterizations of other types can be constructed using the <em>super type token</em> idiom:
|
||||||
* example {@code List<String>} or {@code Result<String, @Nullable Integer>}. It is often used with
|
|
||||||
* {@link Config#as(JavaType)}.
|
|
||||||
*
|
*
|
||||||
* <p>A {@code JavaType} always represents a non-null top-level type, but its type arguments may be
|
* <p>
|
||||||
* nullable. For example, {@code listOfNullable(String.class)} represents {@code List<@Nullable
|
|
||||||
* String>}.
|
|
||||||
*
|
|
||||||
* <p>To construct a non-parameterized type, use {@link #of(Class)}.
|
|
||||||
*
|
|
||||||
* <p>To construct common parameterized types, use one of:
|
|
||||||
*
|
|
||||||
* <ul>
|
|
||||||
* <li>{@link #optionalOf(Class)}
|
|
||||||
* <li>{@link #arrayOf(Class)}
|
|
||||||
* <li>{@link #collectionOf(Class)}
|
|
||||||
* <li>{@link #iterableOf(Class)}
|
|
||||||
* <li>{@link #listOf(Class)}
|
|
||||||
* <li>{@link #setOf(Class)}
|
|
||||||
* <li>{@link #mapOf(Class, Class)}
|
|
||||||
* <li>{@link #pairOf(Class, Class)}
|
|
||||||
* </ul>
|
|
||||||
*
|
|
||||||
* <p>Apart from {@code optionalOf()}, the above methods have nullable variants:
|
|
||||||
*
|
|
||||||
* <ul>
|
|
||||||
* <li>{@link #arrayOfNullable(Class)}
|
|
||||||
* <li>{@link #collectionOfNullable(Class)}
|
|
||||||
* <li>{@link #iterableOfNullable(Class)}
|
|
||||||
* <li>{@link #listOfNullable(Class)}
|
|
||||||
* <li>{@link #setOfNullable(Class)}
|
|
||||||
* <li>{@link #mapOfNullableKeys(Class, Class)}
|
|
||||||
* <li>{@link #mapOfNullableValues(Class, Class)}
|
|
||||||
* <li>{@link #mapOfNullableKeysAndValues(Class, Class)}
|
|
||||||
* <li>{@link #pairOfNullableFirst(Class, Class)}
|
|
||||||
* <li>{@link #pairOfNullableSecond(Class, Class)}
|
|
||||||
* <li>{@link #pairOfNullableFirstAndSecond(Class, Class)}
|
|
||||||
* </ul>
|
|
||||||
*
|
|
||||||
* <p>These methods can be nested. For example, {@code optionalOf(listOfNullable(String.class))}
|
|
||||||
* represents {@code Optional<List<@Nullable String>>}.
|
|
||||||
*
|
|
||||||
* <p>To construct arbitrary parameterized types, use the <em>super-type token</em> idiom:
|
|
||||||
*
|
*
|
||||||
* <pre>{@code
|
* <pre>{@code
|
||||||
* class Result<T, U> {} // library or user-defined type
|
* class Mapping<T> {} // some user-defined type
|
||||||
*
|
|
||||||
* Config config = ...
|
* Config config = ...
|
||||||
*
|
*
|
||||||
* Result<String, @Nullable Integer> result =
|
* Mapping<String> container = config.as(
|
||||||
* config.as(new JavaType<Result<String, @Nullable Integer>>() {});
|
* // construct super type token for Mapping<String>
|
||||||
|
* new JavaType<Mapping<String>>() {}
|
||||||
|
* );
|
||||||
* }</pre>
|
* }</pre>
|
||||||
*
|
*
|
||||||
* @param <T> the non-null type represented by this {@code JavaType}
|
* @param <T> the type reified by this {@code JavaType} instance
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unused")
|
||||||
public class JavaType<T> {
|
public class JavaType<T> {
|
||||||
private final Type type;
|
private final Type type;
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a {@code JavaType} using the super-type token idiom.
|
|
||||||
*
|
|
||||||
* <p>Subclasses must be parameterized with the desired type, for example:
|
|
||||||
*
|
|
||||||
* <pre>{@code
|
|
||||||
* new JavaType<List<@Nullable String>>() {}
|
|
||||||
* }</pre>
|
|
||||||
*
|
|
||||||
* @throws IllegalStateException if this instance is not parameterized
|
|
||||||
*/
|
|
||||||
protected JavaType() {
|
protected JavaType() {
|
||||||
var superclass = getClass().getGenericSuperclass();
|
var superclass = getClass().getGenericSuperclass();
|
||||||
if (!(superclass instanceof ParameterizedType parameterizedType)) {
|
if (!(superclass instanceof ParameterizedType parameterizedType)) {
|
||||||
@@ -106,382 +59,100 @@ public class JavaType<T> {
|
|||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Creates a {@code JavaType} for the given type. */
|
/** Creates a {@code JavaType} for the given {@code Class}. */
|
||||||
public static <T> JavaType<T> of(Class<T> type) {
|
public static <T> JavaType<T> of(Class<T> type) {
|
||||||
return new JavaType<>(type);
|
return new JavaType<>(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a {@code JavaType} for the given {@link Type}.
|
* Creates a {@code JavaType} for the given {@code Type}.
|
||||||
*
|
*
|
||||||
* <p>Use this method when the target type is already available as a {@link Type}; otherwise,
|
* <p>Note: This method is not type safe, and should be used with care.
|
||||||
* prefer {@link #of(Class)}.
|
|
||||||
*/
|
*/
|
||||||
public static <T> JavaType<T> of(Type type) {
|
public static <T> JavaType<T> of(Type type) {
|
||||||
return new JavaType<>(type);
|
return new JavaType<>(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates an {@link Optional} type with the given element type. */
|
||||||
* Creates an {@link Optional} type with the given non-null element type.
|
|
||||||
*
|
|
||||||
* <p>For a parameterized element type, use {@link #optionalOf(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Optional<E>> optionalOf(Class<E> elementType) {
|
public static <E> JavaType<Optional<E>> optionalOf(Class<E> elementType) {
|
||||||
return JavaType.of(Types.optionalOf(elementType));
|
return JavaType.of(Types.optionalOf(elementType));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Creates an {@link Optional} type with the given non-null element type. */
|
/** Creates an {@link Optional} type with the given element type. */
|
||||||
public static <E> JavaType<Optional<E>> optionalOf(JavaType<E> elementType) {
|
public static <E> JavaType<Optional<E>> optionalOf(JavaType<E> elementType) {
|
||||||
return JavaType.of(Types.optionalOf(elementType.type));
|
return JavaType.of(Types.optionalOf(elementType.type));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates a {@link Pair} type with the given first and second element types. */
|
||||||
* Creates a {@link Pair} type with the given non-null first and non-null second element types.
|
|
||||||
*
|
|
||||||
* <p>For nullable first and/or second element types, use one of the {@code pairOfNullable*}
|
|
||||||
* methods.
|
|
||||||
*
|
|
||||||
* <p>For parameterized element types, use {@link #pairOf(JavaType, JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <F, S> JavaType<Pair<F, S>> pairOf(Class<F> firstType, Class<S> secondType) {
|
public static <F, S> JavaType<Pair<F, S>> pairOf(Class<F> firstType, Class<S> secondType) {
|
||||||
return JavaType.of(Types.pairOf(firstType, secondType));
|
return JavaType.of(Types.pairOf(firstType, secondType));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates a {@link Pair} type with the given first and second element types. */
|
||||||
* Creates a {@link Pair} type with the given non-null first and non-null second element types.
|
|
||||||
*
|
|
||||||
* <p>For nullable first and/or second element types, use one of the {@code pairOfNullable*}
|
|
||||||
* methods.
|
|
||||||
*/
|
|
||||||
public static <F, S> JavaType<Pair<F, S>> pairOf(JavaType<F> firstType, JavaType<S> secondType) {
|
public static <F, S> JavaType<Pair<F, S>> pairOf(JavaType<F> firstType, JavaType<S> secondType) {
|
||||||
return JavaType.of(Types.pairOf(firstType.type, secondType.type));
|
return JavaType.of(Types.pairOf(firstType.type, secondType.type));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates an array type with the given element type. */
|
||||||
* Creates a {@link Pair} type with the given nullable first and non-null second element types.
|
|
||||||
*
|
|
||||||
* <p>For parameterized element types, use {@link #pairOfNullableFirst(JavaType, JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <F, S> JavaType<Pair<@Nullable F, S>> pairOfNullableFirst(
|
|
||||||
Class<F> firstType, Class<S> secondType) {
|
|
||||||
return JavaType.of(Types.pairOf(firstType, secondType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Pair} type with the given nullable first and non-null second element types.
|
|
||||||
*/
|
|
||||||
public static <F, S> JavaType<Pair<@Nullable F, S>> pairOfNullableFirst(
|
|
||||||
JavaType<F> firstType, JavaType<S> secondType) {
|
|
||||||
return JavaType.of(Types.pairOf(firstType.type, secondType.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Pair} type with the given non-null first and nullable second element types.
|
|
||||||
*
|
|
||||||
* <p>For parameterized element types, use {@link #pairOfNullableSecond(JavaType, JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <F, S> JavaType<Pair<F, @Nullable S>> pairOfNullableSecond(
|
|
||||||
Class<F> firstType, Class<S> secondType) {
|
|
||||||
return JavaType.of(Types.pairOf(firstType, secondType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Pair} type with the given non-null first and nullable second element types.
|
|
||||||
*/
|
|
||||||
public static <F, S> JavaType<Pair<F, @Nullable S>> pairOfNullableSecond(
|
|
||||||
JavaType<F> firstType, JavaType<S> secondType) {
|
|
||||||
return JavaType.of(Types.pairOf(firstType.type, secondType.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Pair} type with the given nullable first and nullable second element types.
|
|
||||||
*
|
|
||||||
* <p>For parameterized element types, use {@link #pairOfNullableFirstAndSecond(JavaType,
|
|
||||||
* JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <F, S> JavaType<Pair<@Nullable F, @Nullable S>> pairOfNullableFirstAndSecond(
|
|
||||||
Class<F> firstType, Class<S> secondType) {
|
|
||||||
return JavaType.of(Types.pairOf(firstType, secondType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Pair} type with the given nullable first and nullable second element types.
|
|
||||||
*/
|
|
||||||
public static <F, S> JavaType<Pair<@Nullable F, @Nullable S>> pairOfNullableFirstAndSecond(
|
|
||||||
JavaType<F> firstType, JavaType<S> secondType) {
|
|
||||||
return JavaType.of(Types.pairOf(firstType.type, secondType.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an array type with the given non-null element type.
|
|
||||||
*
|
|
||||||
* <p>For a nullable element type, use {@link #arrayOfNullable(Class)}.
|
|
||||||
*
|
|
||||||
* <p>For a parameterized element type, use {@link #arrayOf(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<E[]> arrayOf(Class<E> elementType) {
|
public static <E> JavaType<E[]> arrayOf(Class<E> elementType) {
|
||||||
return JavaType.of(Types.arrayOf(elementType));
|
return JavaType.of(Types.arrayOf(elementType));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates an array type with the given element type. */
|
||||||
* Creates an array type with the given non-null element type.
|
|
||||||
*
|
|
||||||
* <p>For a nullable element type, use {@link #arrayOfNullable(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<E[]> arrayOf(JavaType<E> elementType) {
|
public static <E> JavaType<E[]> arrayOf(JavaType<E> elementType) {
|
||||||
return JavaType.of(Types.arrayOf(elementType.type));
|
return JavaType.of(Types.arrayOf(elementType.type));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates an {@link Iterable} type with the given element type. */
|
||||||
* Creates an array type whose element type is nullable.
|
|
||||||
*
|
|
||||||
* <p>For a non-null element type, use {@link #arrayOf(Class)}.
|
|
||||||
*
|
|
||||||
* <p>For a parameterized element type, use {@link #arrayOfNullable(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<@Nullable E[]> arrayOfNullable(Class<E> elementType) {
|
|
||||||
return JavaType.of(Types.arrayOf(elementType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an array type whose element type is nullable.
|
|
||||||
*
|
|
||||||
* <p>For a non-null element type, use {@link #arrayOf(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<@Nullable E[]> arrayOfNullable(JavaType<E> elementType) {
|
|
||||||
return JavaType.of(Types.arrayOf(elementType.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an {@link Iterable} type with the given non-null element type.
|
|
||||||
*
|
|
||||||
* <p>For a nullable element type, use {@link #iterableOfNullable(Class)}.
|
|
||||||
*
|
|
||||||
* <p>For a parameterized element type, use {@link #iterableOf(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Iterable<E>> iterableOf(Class<E> elementType) {
|
public static <E> JavaType<Iterable<E>> iterableOf(Class<E> elementType) {
|
||||||
return JavaType.of(Types.iterableOf(elementType));
|
return JavaType.of(Types.iterableOf(elementType));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates an {@link Iterable} type with the given element type. */
|
||||||
* Creates an {@link Iterable} type with the given non-null element type.
|
|
||||||
*
|
|
||||||
* <p>For a nullable element type, use {@link #iterableOfNullable(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Iterable<E>> iterableOf(JavaType<E> elementType) {
|
public static <E> JavaType<Iterable<E>> iterableOf(JavaType<E> elementType) {
|
||||||
return JavaType.of(Types.iterableOf(elementType.type));
|
return JavaType.of(Types.iterableOf(elementType.type));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates a {@link Collection} type with the given element type. */
|
||||||
* Creates an {@link Iterable} type whose element type is nullable.
|
|
||||||
*
|
|
||||||
* <p>For a non-null element type, use {@link #iterableOf(Class)}.
|
|
||||||
*
|
|
||||||
* <p>For a parameterized element type, use {@link #iterableOfNullable(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Iterable<@Nullable E>> iterableOfNullable(Class<E> elementType) {
|
|
||||||
return JavaType.of(Types.iterableOf(elementType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an {@link Iterable} type whose element type is nullable.
|
|
||||||
*
|
|
||||||
* <p>For a non-null element type, use {@link #iterableOf(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Iterable<@Nullable E>> iterableOfNullable(JavaType<E> elementType) {
|
|
||||||
return JavaType.of(Types.iterableOf(elementType.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Collection} type with the given non-null element type.
|
|
||||||
*
|
|
||||||
* <p>For a nullable element type, use {@link #collectionOfNullable(Class)}.
|
|
||||||
*
|
|
||||||
* <p>For a parameterized element type, use {@link #collectionOf(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Collection<E>> collectionOf(Class<E> elementType) {
|
public static <E> JavaType<Collection<E>> collectionOf(Class<E> elementType) {
|
||||||
return JavaType.of(Types.collectionOf(elementType));
|
return JavaType.of(Types.collectionOf(elementType));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates a {@link Collection} type with the given element type. */
|
||||||
* Creates a {@link Collection} type with the given non-null element type.
|
|
||||||
*
|
|
||||||
* <p>For a nullable element type, use {@link #collectionOfNullable(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Collection<E>> collectionOf(JavaType<E> elementType) {
|
public static <E> JavaType<Collection<E>> collectionOf(JavaType<E> elementType) {
|
||||||
return JavaType.of(Types.collectionOf(elementType.type));
|
return JavaType.of(Types.collectionOf(elementType.type));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates a {@link List} type with the given element type. */
|
||||||
* Creates a {@link Collection} type whose element type is nullable.
|
|
||||||
*
|
|
||||||
* <p>For a non-null element type, use {@link #collectionOf(Class)}.
|
|
||||||
*
|
|
||||||
* <p>For a parameterized element type, use {@link #collectionOfNullable(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Collection<@Nullable E>> collectionOfNullable(Class<E> elementType) {
|
|
||||||
return JavaType.of(Types.collectionOf(elementType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Collection} type whose element type is nullable.
|
|
||||||
*
|
|
||||||
* <p>For a non-null element type, use {@link #collectionOf(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Collection<@Nullable E>> collectionOfNullable(
|
|
||||||
JavaType<E> elementType) {
|
|
||||||
return JavaType.of(Types.collectionOf(elementType.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link List} type with the given non-null element type.
|
|
||||||
*
|
|
||||||
* <p>For a nullable element type, use {@link #listOfNullable(Class)}.
|
|
||||||
*
|
|
||||||
* <p>For a parameterized element type, use {@link #listOf(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<List<E>> listOf(Class<E> elementType) {
|
public static <E> JavaType<List<E>> listOf(Class<E> elementType) {
|
||||||
return JavaType.of(Types.listOf(elementType));
|
return JavaType.of(Types.listOf(elementType));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates a {@link List} type with the given element type. */
|
||||||
* Creates a {@link List} type with the given non-null element type.
|
|
||||||
*
|
|
||||||
* <p>For a nullable element type, use {@link #listOfNullable(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<List<E>> listOf(JavaType<E> elementType) {
|
public static <E> JavaType<List<E>> listOf(JavaType<E> elementType) {
|
||||||
return JavaType.of(Types.listOf(elementType.type));
|
return JavaType.of(Types.listOf(elementType.type));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates a {@link Set} type with the given element type. */
|
||||||
* Creates a {@link List} type whose element type is nullable.
|
|
||||||
*
|
|
||||||
* <p>For a non-null element type, use {@link #listOf(Class)}.
|
|
||||||
*
|
|
||||||
* <p>For a parameterized element type, use {@link #listOfNullable(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<List<@Nullable E>> listOfNullable(Class<E> elementType) {
|
|
||||||
return JavaType.of(Types.listOf(elementType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link List} type whose element type is nullable.
|
|
||||||
*
|
|
||||||
* <p>For a non-null element type, use {@link #listOf(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<List<@Nullable E>> listOfNullable(JavaType<E> elementType) {
|
|
||||||
return JavaType.of(Types.listOf(elementType.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Set} type with the given non-null element type.
|
|
||||||
*
|
|
||||||
* <p>For a nullable element type, use {@link #setOfNullable(Class)}.
|
|
||||||
*
|
|
||||||
* <p>For a parameterized element type, use {@link #setOf(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Set<E>> setOf(Class<E> elementType) {
|
public static <E> JavaType<Set<E>> setOf(Class<E> elementType) {
|
||||||
return JavaType.of(Types.setOf(elementType));
|
return JavaType.of(Types.setOf(elementType));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates a {@link Set} type with the given element type. */
|
||||||
* Creates a {@link Set} type with the given non-null element type.
|
|
||||||
*
|
|
||||||
* <p>For a nullable element type, use {@link #setOfNullable(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Set<E>> setOf(JavaType<E> elementType) {
|
public static <E> JavaType<Set<E>> setOf(JavaType<E> elementType) {
|
||||||
return JavaType.of(Types.setOf(elementType.type));
|
return JavaType.of(Types.setOf(elementType.type));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates a {@link Map} type with the given key and value types. */
|
||||||
* Creates a {@link Set} type whose element type is nullable.
|
|
||||||
*
|
|
||||||
* <p>For a non-null element type, use {@link #setOf(Class)}.
|
|
||||||
*
|
|
||||||
* <p>For a parameterized element type, use {@link #setOfNullable(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Set<@Nullable E>> setOfNullable(Class<E> elementType) {
|
|
||||||
return JavaType.of(Types.setOf(elementType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Set} type whose element type is nullable.
|
|
||||||
*
|
|
||||||
* <p>For a non-null element type, use {@link #setOf(JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <E> JavaType<Set<@Nullable E>> setOfNullable(JavaType<E> elementType) {
|
|
||||||
return JavaType.of(Types.setOf(elementType.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Map} type with the given non-null key and non-null value types.
|
|
||||||
*
|
|
||||||
* <p>For nullable keys and/or values, use one of the {@code mapOfNullable*} methods.
|
|
||||||
*
|
|
||||||
* <p>For parameterized key and value types, use {@link #mapOf(JavaType, JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <K, V> JavaType<Map<K, V>> mapOf(Class<K> keyType, Class<V> valueType) {
|
public static <K, V> JavaType<Map<K, V>> mapOf(Class<K> keyType, Class<V> valueType) {
|
||||||
return JavaType.of(Types.mapOf(keyType, valueType));
|
return JavaType.of(Types.mapOf(keyType, valueType));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Creates a {@link Map} type with the given key and value types. */
|
||||||
* Creates a {@link Map} type with the given non-null key and non-null value types.
|
|
||||||
*
|
|
||||||
* <p>For nullable keys and/or values, use one of the {@code mapOfNullable*} methods.
|
|
||||||
*/
|
|
||||||
public static <K, V> JavaType<Map<K, V>> mapOf(JavaType<K> keyType, JavaType<V> valueType) {
|
public static <K, V> JavaType<Map<K, V>> mapOf(JavaType<K> keyType, JavaType<V> valueType) {
|
||||||
return JavaType.of(Types.mapOf(keyType.type, valueType.type));
|
return JavaType.of(Types.mapOf(keyType.type, valueType.type));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Map} type with the given nullable key and non-null value types.
|
|
||||||
*
|
|
||||||
* <p>For parameterized key and value types, use {@link #mapOfNullableKeys(JavaType, JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <K, V> JavaType<Map<@Nullable K, V>> mapOfNullableKeys(
|
|
||||||
Class<K> keyType, Class<V> valueType) {
|
|
||||||
return JavaType.of(Types.mapOf(keyType, valueType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Creates a {@link Map} type with the given nullable key and non-null value types. */
|
|
||||||
public static <K, V> JavaType<Map<@Nullable K, V>> mapOfNullableKeys(
|
|
||||||
JavaType<K> keyType, JavaType<V> valueType) {
|
|
||||||
return JavaType.of(Types.mapOf(keyType.type, valueType.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Map} type with the given non-null key and nullable value types.
|
|
||||||
*
|
|
||||||
* <p>For parameterized key and value types, use {@link #mapOfNullableValues(JavaType, JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <K, V> JavaType<Map<K, @Nullable V>> mapOfNullableValues(
|
|
||||||
Class<K> keyType, Class<V> valueType) {
|
|
||||||
return JavaType.of(Types.mapOf(keyType, valueType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Creates a {@link Map} type with the given non-null key and nullable value types. */
|
|
||||||
public static <K, V> JavaType<Map<K, @Nullable V>> mapOfNullableValues(
|
|
||||||
JavaType<K> keyType, JavaType<V> valueType) {
|
|
||||||
return JavaType.of(Types.mapOf(keyType.type, valueType.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link Map} type with the given nullable key and nullable value types.
|
|
||||||
*
|
|
||||||
* <p>For parameterized key and value types, use {@link #mapOfNullableKeysAndValues(JavaType,
|
|
||||||
* JavaType)}.
|
|
||||||
*/
|
|
||||||
public static <K, V> JavaType<Map<@Nullable K, @Nullable V>> mapOfNullableKeysAndValues(
|
|
||||||
Class<K> keyType, Class<V> valueType) {
|
|
||||||
return JavaType.of(Types.mapOf(keyType, valueType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Creates a {@link Map} type with the given nullable key and nullable value types. */
|
|
||||||
public static <K, V> JavaType<Map<@Nullable K, @Nullable V>> mapOfNullableKeysAndValues(
|
|
||||||
JavaType<K> keyType, JavaType<V> valueType) {
|
|
||||||
return JavaType.of(Types.mapOf(keyType.type, valueType.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Returns the underlying {@link Type}. */
|
/** Returns the underlying {@link Type}. */
|
||||||
public Type getType() {
|
public Type getType() {
|
||||||
return type;
|
return type;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user