feat: add built-in caching via inputs (#89)

This commit is contained in:
Christian Svensson
2025-05-12 18:53:44 +02:00
committed by GitHub
parent a1496dd8d9
commit fd6b0ad149
14 changed files with 63237 additions and 19455 deletions

View File

@@ -80,6 +80,41 @@ jobs:
- name: Check binary exists - name: Check binary exists
run: deno_foo -V run: deno_foo -V
test-setup-cache:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: Setup Deno
uses: ./
with:
cache: true
cache-hash: ${{ hashFiles('**/deno.lock') }}
- name: Download dependencies for cache
run: deno install --global --no-config npm:cowsay@1.6.0
test-cache:
needs: test-setup-cache
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: Setup Deno
uses: ./
with:
cache: true
cache-hash: ${{ hashFiles('**/deno.lock') }}
- name: Run with cached dependencies
run: deno run --cached-only --no-config -RE npm:cowsay@1.6.0 "It works!"
lint: lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:

View File

@@ -141,3 +141,23 @@ number.
- run: echo "Deno version is ${{ steps.deno.outputs.deno-version }}" - run: echo "Deno version is ${{ steps.deno.outputs.deno-version }}"
``` ```
### Caching dependencies downloaded by Deno automatically
Dependencies installed by Deno can be cached automatically, which is similar to
the [`cache` option in `setup-node`](https://github.com/actions/setup-node).
To enable the cache, use `cache: true`. It's recommended to also add the
`cache-hash` property, to scope caches based on lockfile changes.
```yaml
- uses: denoland/setup-deno@v2
with:
cache: true
cache-hash: ${{ hashFiles('**/deno.lock') }}
```
> [!WARNING]
> If an environment variable `DENO_DIR` is set for steps that run/download
> dependencies, then `DENO_DIR` must also be set for the `denoland/setup-deno`
> action, for the caching to work as intended.

View File

@@ -13,7 +13,14 @@ inputs:
deno-binary-name: deno-binary-name:
description: The name to use for the binary. description: The name to use for the binary.
default: "deno" default: "deno"
cache:
description: Cache downloaded modules & packages automatically in GitHub Actions cache.
default: "false"
cache-hash:
description: A hash used as part of the cache key. Use e.g. `$\{{ hashFiles('**/deno.lock') }}` to cache based on the lockfile contents.
outputs: outputs:
cache-hit:
description: A boolean indicating whether the cache was hit.
deno-version: deno-version:
description: "The Deno version that was installed." description: "The Deno version that was installed."
release-channel: release-channel:
@@ -21,3 +28,5 @@ outputs:
runs: runs:
using: "node20" using: "node20"
main: "dist/main.mjs" main: "dist/main.mjs"
post: "dist/post.mjs"
post-if: always()

View File

@@ -14,6 +14,7 @@
"build": "deno run -A scripts/build.ts" "build": "deno run -A scripts/build.ts"
}, },
"imports": { "imports": {
"@actions/cache": "npm:@actions/cache@^4.0.3",
"@actions/core": "npm:@actions/core@^1.11.1", "@actions/core": "npm:@actions/core@^1.11.1",
"@actions/tool-cache": "npm:@actions/tool-cache@^2.0.2", "@actions/tool-cache": "npm:@actions/tool-cache@^2.0.2",
"@types/node": "npm:@types/node@^22.15.0", "@types/node": "npm:@types/node@^22.15.0",

414
deno.lock generated
View File

@@ -1,6 +1,7 @@
{ {
"version": "5", "version": "5",
"specifiers": { "specifiers": {
"npm:@actions/cache@^4.0.3": "4.0.3",
"npm:@actions/core@^1.11.1": "1.11.1", "npm:@actions/core@^1.11.1": "1.11.1",
"npm:@actions/tool-cache@^2.0.2": "2.0.2", "npm:@actions/tool-cache@^2.0.2": "2.0.2",
"npm:@types/node@*": "22.15.15", "npm:@types/node@*": "22.15.15",
@@ -11,6 +12,21 @@
"npm:undici@^7.8.0": "7.9.0" "npm:undici@^7.8.0": "7.9.0"
}, },
"npm": { "npm": {
"@actions/cache@4.0.3": {
"integrity": "sha512-SvrqFtYJ7I48A/uXNkoJrnukx5weQv1fGquhs3+4nkByZThBH109KTIqj5x/cGV7JGNvb8dLPVywUOqX1fjiXg==",
"dependencies": [
"@actions/core",
"@actions/exec",
"@actions/glob",
"@actions/http-client",
"@actions/io",
"@azure/abort-controller@1.1.0",
"@azure/ms-rest-js",
"@azure/storage-blob",
"@protobuf-ts/plugin",
"semver@6.3.1"
]
},
"@actions/core@1.11.1": { "@actions/core@1.11.1": {
"integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==",
"dependencies": [ "dependencies": [
@@ -24,6 +40,13 @@
"@actions/io" "@actions/io"
] ]
}, },
"@actions/glob@0.1.2": {
"integrity": "sha512-SclLR7Ia5sEqjkJTPs7Sd86maMDw43p769YxBOxvPvEWuPEhpAnBsQfENOpXjFYMmhCqd127bmf+YdvJqVqR4A==",
"dependencies": [
"@actions/core",
"minimatch"
]
},
"@actions/http-client@2.2.3": { "@actions/http-client@2.2.3": {
"integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==",
"dependencies": [ "dependencies": [
@@ -44,6 +67,132 @@
"semver@6.3.1" "semver@6.3.1"
] ]
}, },
"@azure/abort-controller@1.1.0": {
"integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==",
"dependencies": [
"tslib@2.8.1"
]
},
"@azure/abort-controller@2.1.2": {
"integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
"dependencies": [
"tslib@2.8.1"
]
},
"@azure/core-auth@1.9.0": {
"integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==",
"dependencies": [
"@azure/abort-controller@2.1.2",
"@azure/core-util",
"tslib@2.8.1"
]
},
"@azure/core-client@1.9.4": {
"integrity": "sha512-f7IxTD15Qdux30s2qFARH+JxgwxWLG2Rlr4oSkPGuLWm+1p5y1+C04XGLA0vmX6EtqfutmjvpNmAfgwVIS5hpw==",
"dependencies": [
"@azure/abort-controller@2.1.2",
"@azure/core-auth",
"@azure/core-rest-pipeline",
"@azure/core-tracing",
"@azure/core-util",
"@azure/logger",
"tslib@2.8.1"
]
},
"@azure/core-http-compat@2.3.0": {
"integrity": "sha512-qLQujmUypBBG0gxHd0j6/Jdmul6ttl24c8WGiLXIk7IHXdBlfoBqW27hyz3Xn6xbfdyVSarl1Ttbk0AwnZBYCw==",
"dependencies": [
"@azure/abort-controller@2.1.2",
"@azure/core-client",
"@azure/core-rest-pipeline"
]
},
"@azure/core-lro@2.7.2": {
"integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==",
"dependencies": [
"@azure/abort-controller@2.1.2",
"@azure/core-util",
"@azure/logger",
"tslib@2.8.1"
]
},
"@azure/core-paging@1.6.2": {
"integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==",
"dependencies": [
"tslib@2.8.1"
]
},
"@azure/core-rest-pipeline@1.20.0": {
"integrity": "sha512-ASoP8uqZBS3H/8N8at/XwFr6vYrRP3syTK0EUjDXQy0Y1/AUS+QeIRThKmTNJO2RggvBBxaXDPM7YoIwDGeA0g==",
"dependencies": [
"@azure/abort-controller@2.1.2",
"@azure/core-auth",
"@azure/core-tracing",
"@azure/core-util",
"@azure/logger",
"@typespec/ts-http-runtime",
"tslib@2.8.1"
]
},
"@azure/core-tracing@1.2.0": {
"integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==",
"dependencies": [
"tslib@2.8.1"
]
},
"@azure/core-util@1.12.0": {
"integrity": "sha512-13IyjTQgABPARvG90+N2dXpC+hwp466XCdQXPCRlbWHgd3SJd5Q1VvaBGv6k1BIa4MQm6hAF1UBU1m8QUxV8sQ==",
"dependencies": [
"@azure/abort-controller@2.1.2",
"@typespec/ts-http-runtime",
"tslib@2.8.1"
]
},
"@azure/core-xml@1.4.5": {
"integrity": "sha512-gT4H8mTaSXRz7eGTuQyq1aIJnJqeXzpOe9Ay7Z3FrCouer14CbV3VzjnJrNrQfbBpGBLO9oy8BmrY75A0p53cA==",
"dependencies": [
"fast-xml-parser",
"tslib@2.8.1"
]
},
"@azure/logger@1.2.0": {
"integrity": "sha512-0hKEzLhpw+ZTAfNJyRrn6s+V0nDWzXk9OjBr2TiGIu0OfMr5s2V4FpKLTAK3Ca5r5OKLbf4hkOGDPyiRjie/jA==",
"dependencies": [
"@typespec/ts-http-runtime",
"tslib@2.8.1"
]
},
"@azure/ms-rest-js@2.7.0": {
"integrity": "sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==",
"dependencies": [
"@azure/core-auth",
"abort-controller",
"form-data",
"node-fetch",
"tslib@1.14.1",
"tunnel",
"uuid",
"xml2js"
]
},
"@azure/storage-blob@12.27.0": {
"integrity": "sha512-IQjj9RIzAKatmNca3D6bT0qJ+Pkox1WZGOg2esJF2YLHb45pQKOwGPIAV+w3rfgkj7zV3RMxpn/c6iftzSOZJQ==",
"dependencies": [
"@azure/abort-controller@2.1.2",
"@azure/core-auth",
"@azure/core-client",
"@azure/core-http-compat",
"@azure/core-lro",
"@azure/core-paging",
"@azure/core-rest-pipeline",
"@azure/core-tracing",
"@azure/core-util",
"@azure/core-xml",
"@azure/logger",
"events",
"tslib@2.8.1"
]
},
"@babel/generator@7.27.1": { "@babel/generator@7.27.1": {
"integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==",
"dependencies": [ "dependencies": [
@@ -78,19 +227,19 @@
"integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==",
"dependencies": [ "dependencies": [
"@emnapi/wasi-threads", "@emnapi/wasi-threads",
"tslib" "tslib@2.8.1"
] ]
}, },
"@emnapi/runtime@1.4.3": { "@emnapi/runtime@1.4.3": {
"integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==",
"dependencies": [ "dependencies": [
"tslib" "tslib@2.8.1"
] ]
}, },
"@emnapi/wasi-threads@1.0.2": { "@emnapi/wasi-threads@1.0.2": {
"integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==",
"dependencies": [ "dependencies": [
"tslib" "tslib@2.8.1"
] ]
}, },
"@fastify/busboy@2.1.1": { "@fastify/busboy@2.1.1": {
@@ -250,6 +399,37 @@
"os": ["win32"], "os": ["win32"],
"cpu": ["x64"] "cpu": ["x64"]
}, },
"@protobuf-ts/plugin-framework@2.10.0": {
"integrity": "sha512-EuW9irbt+w7Ml1CaAxK6xyl7pSuWVbNy0rsChxJEthMrAVTN5EPdJ3whNWvsRBa+HwRImEl8KHNnRoq/vGOHbg==",
"dependencies": [
"@protobuf-ts/runtime",
"typescript"
]
},
"@protobuf-ts/plugin@2.10.0": {
"integrity": "sha512-iMX4C4TVfMNRLn2msK0cVg5jmizjtu5FYiy8EK5Lg6EgyR9TVHeK2rzmufWKYM2Pcg1jSwC0cFcXHQnCoeFxUg==",
"dependencies": [
"@protobuf-ts/plugin-framework",
"@protobuf-ts/protoc",
"@protobuf-ts/runtime",
"@protobuf-ts/runtime-rpc",
"typescript"
],
"bin": true
},
"@protobuf-ts/protoc@2.10.0": {
"integrity": "sha512-S4BtGBh22+uL5E6qLVxV0QNY6tiLVB8QL7RIkvo+KYknipZfSNwubdKy5CPkrwVXzJn4s3cx7bKx1w6BxkBIPg==",
"bin": true
},
"@protobuf-ts/runtime-rpc@2.10.0": {
"integrity": "sha512-8CS/XPv3+pMK4v8UKhtCdvbS4h9l7aqlteKdRt0/UbIKZ8n0qHj6hX8cBhz2ngvohxCOS0N08zPr9aCLBNhW3Q==",
"dependencies": [
"@protobuf-ts/runtime"
]
},
"@protobuf-ts/runtime@2.10.0": {
"integrity": "sha512-ypYwGg9Pn3W/2lZ7/HW60hONGuSdzphvOY8Dq7LeNttymDe0y3LaTUUMRpuGqOT6FfrWEMnfQbyqU8AAreo8wA=="
},
"@quansync/fs@0.1.3": { "@quansync/fs@0.1.3": {
"integrity": "sha512-G0OnZbMWEs5LhDyqy2UL17vGhSVHkQIfVojMtEWVenvj0V5S84VBgy86kJIuNsGDp2p7sTKlpSIpBUWdC35OKg==", "integrity": "sha512-G0OnZbMWEs5LhDyqy2UL17vGhSVHkQIfVojMtEWVenvj0V5S84VBgy86kJIuNsGDp2p7sTKlpSIpBUWdC35OKg==",
"dependencies": [ "dependencies": [
@@ -321,7 +501,7 @@
"@tybys/wasm-util@0.9.0": { "@tybys/wasm-util@0.9.0": {
"integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==",
"dependencies": [ "dependencies": [
"tslib" "tslib@2.8.1"
] ]
}, },
"@types/node@22.15.15": { "@types/node@22.15.15": {
@@ -339,16 +519,33 @@
"@types/semver@7.7.0": { "@types/semver@7.7.0": {
"integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==" "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA=="
}, },
"@typespec/ts-http-runtime@0.2.2": {
"integrity": "sha512-Gz/Sm64+Sq/vklJu1tt9t+4R2lvnud8NbTD/ZfpZtMiUX7YeVpCA8j6NSW8ptwcoLL+NmYANwqP8DV0q/bwl2w==",
"dependencies": [
"http-proxy-agent",
"https-proxy-agent",
"tslib@2.8.1"
]
},
"@valibot/to-json-schema@1.0.0_valibot@1.0.0": { "@valibot/to-json-schema@1.0.0_valibot@1.0.0": {
"integrity": "sha512-/9crJgPptVsGCL6X+JPDQyaJwkalSZ/52WuF8DiRUxJgcmpNdzYRfZ+gqMEP8W3CTVfuMWPqqvIgfwJ97f9Etw==", "integrity": "sha512-/9crJgPptVsGCL6X+JPDQyaJwkalSZ/52WuF8DiRUxJgcmpNdzYRfZ+gqMEP8W3CTVfuMWPqqvIgfwJ97f9Etw==",
"dependencies": [ "dependencies": [
"valibot" "valibot"
] ]
}, },
"abort-controller@3.0.0": {
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
"dependencies": [
"event-target-shim"
]
},
"acorn@8.14.1": { "acorn@8.14.1": {
"integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"bin": true "bin": true
}, },
"agent-base@7.1.3": {
"integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw=="
},
"ansis@3.17.0": { "ansis@3.17.0": {
"integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==" "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg=="
}, },
@@ -359,15 +556,44 @@
"pathe" "pathe"
] ]
}, },
"asynckit@0.4.0": {
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"balanced-match@1.0.2": {
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"brace-expansion@1.1.11": {
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": [
"balanced-match",
"concat-map"
]
},
"cac@6.7.14": { "cac@6.7.14": {
"integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==" "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="
}, },
"call-bind-apply-helpers@1.0.2": {
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"dependencies": [
"es-errors",
"function-bind"
]
},
"chokidar@4.0.3": { "chokidar@4.0.3": {
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"dependencies": [ "dependencies": [
"readdirp" "readdirp"
] ]
}, },
"combined-stream@1.0.8": {
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dependencies": [
"delayed-stream"
]
},
"concat-map@0.0.1": {
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"consola@3.4.2": { "consola@3.4.2": {
"integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==" "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="
}, },
@@ -380,6 +606,9 @@
"defu@6.1.4": { "defu@6.1.4": {
"integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="
}, },
"delayed-stream@1.0.0": {
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
},
"detect-libc@2.0.4": { "detect-libc@2.0.4": {
"integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==" "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="
}, },
@@ -393,9 +622,51 @@
"pathe" "pathe"
] ]
}, },
"dunder-proto@1.0.1": {
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"dependencies": [
"call-bind-apply-helpers",
"es-errors",
"gopd"
]
},
"empathic@1.1.0": { "empathic@1.1.0": {
"integrity": "sha512-rsPft6CK3eHtrlp9Y5ALBb+hfK+DWnA4WFebbazxjWyx8vSm3rZeoM3z9irsjcqO3PYRzlfv27XIB4tz2DV7RA==" "integrity": "sha512-rsPft6CK3eHtrlp9Y5ALBb+hfK+DWnA4WFebbazxjWyx8vSm3rZeoM3z9irsjcqO3PYRzlfv27XIB4tz2DV7RA=="
}, },
"es-define-property@1.0.1": {
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="
},
"es-errors@1.3.0": {
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="
},
"es-object-atoms@1.1.1": {
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"dependencies": [
"es-errors"
]
},
"es-set-tostringtag@2.1.0": {
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"dependencies": [
"es-errors",
"get-intrinsic",
"has-tostringtag",
"hasown"
]
},
"event-target-shim@5.0.1": {
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
},
"events@3.3.0": {
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
},
"fast-xml-parser@5.2.3": {
"integrity": "sha512-OdCYfRqfpuLUFonTNjvd30rCBZUneHpSQkCqfaeWQ9qrKcl6XlWeDBNVwGb+INAIxRshuN2jF+BE0L6gbBO2mw==",
"dependencies": [
"strnum"
],
"bin": true
},
"fdir@6.4.4_picomatch@4.0.2": { "fdir@6.4.4_picomatch@4.0.2": {
"integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
"dependencies": [ "dependencies": [
@@ -405,15 +676,82 @@
"picomatch" "picomatch"
] ]
}, },
"form-data@2.5.3": {
"integrity": "sha512-XHIrMD0NpDrNM/Ckf7XJiBbLl57KEhT3+i3yY+eWm+cqYZJQTZrKo8Y8AWKnuV5GT4scfuUGt9LzNoIx3dU1nQ==",
"dependencies": [
"asynckit",
"combined-stream",
"es-set-tostringtag",
"mime-types",
"safe-buffer"
]
},
"function-bind@1.1.2": {
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
},
"get-intrinsic@1.3.0": {
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"dependencies": [
"call-bind-apply-helpers",
"es-define-property",
"es-errors",
"es-object-atoms",
"function-bind",
"get-proto",
"gopd",
"has-symbols",
"hasown",
"math-intrinsics"
]
},
"get-proto@1.0.1": {
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"dependencies": [
"dunder-proto",
"es-object-atoms"
]
},
"get-tsconfig@4.10.0": { "get-tsconfig@4.10.0": {
"integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==",
"dependencies": [ "dependencies": [
"resolve-pkg-maps" "resolve-pkg-maps"
] ]
}, },
"gopd@1.2.0": {
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="
},
"has-symbols@1.1.0": {
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="
},
"has-tostringtag@1.0.2": {
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dependencies": [
"has-symbols"
]
},
"hasown@2.0.2": {
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dependencies": [
"function-bind"
]
},
"hookable@5.5.3": { "hookable@5.5.3": {
"integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==" "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
}, },
"http-proxy-agent@7.0.2": {
"integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dependencies": [
"agent-base",
"debug"
]
},
"https-proxy-agent@7.0.6": {
"integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"dependencies": [
"agent-base",
"debug"
]
},
"jiti@2.4.2": { "jiti@2.4.2": {
"integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
"bin": true "bin": true
@@ -496,9 +834,33 @@
"@jridgewell/sourcemap-codec" "@jridgewell/sourcemap-codec"
] ]
}, },
"math-intrinsics@1.1.0": {
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="
},
"mime-db@1.52.0": {
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
},
"mime-types@2.1.35": {
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": [
"mime-db"
]
},
"minimatch@3.1.2": {
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dependencies": [
"brace-expansion"
]
},
"ms@2.1.3": { "ms@2.1.3": {
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
}, },
"node-fetch@2.7.0": {
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"dependencies": [
"whatwg-url"
]
},
"oxc-resolver@9.0.2": { "oxc-resolver@9.0.2": {
"integrity": "sha512-w838ygc1p7rF+7+h5vR9A+Y9Fc4imy6C3xPthCMkdFUgFvUWkmABeNB8RBDQ6+afk44Q60/UMMQ+gfDUW99fBA==", "integrity": "sha512-w838ygc1p7rF+7+h5vR9A+Y9Fc4imy6C3xPthCMkdFUgFvUWkmABeNB8RBDQ6+afk44Q60/UMMQ+gfDUW99fBA==",
"optionalDependencies": [ "optionalDependencies": [
@@ -585,6 +947,12 @@
], ],
"bin": true "bin": true
}, },
"safe-buffer@5.2.1": {
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
},
"sax@1.4.1": {
"integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="
},
"semver@6.3.1": { "semver@6.3.1": {
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": true "bin": true
@@ -593,6 +961,9 @@
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"bin": true "bin": true
}, },
"strnum@2.1.0": {
"integrity": "sha512-w0S//9BqZZGw0L0Y8uLSelFGnDJgTyyNQLmSlPnVz43zPAiqu3w4t8J8sDqqANOGeZIZ/9jWuPguYcEnsoHv4A=="
},
"tinyexec@1.0.1": { "tinyexec@1.0.1": {
"integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==" "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw=="
}, },
@@ -603,6 +974,9 @@
"picomatch" "picomatch"
] ]
}, },
"tr46@0.0.3": {
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"tsdown@0.10.1_rolldown@1.0.0-beta.8-commit.852c603__valibot@1.0.0": { "tsdown@0.10.1_rolldown@1.0.0-beta.8-commit.852c603__valibot@1.0.0": {
"integrity": "sha512-NT1XSUDweBpgpiZb3Upfy3DBwAbn8W0aXo3Ecp4kHozTLewWa0UkWUP6nRTvSj2c0NcD/BLLuf0HthqMpbEdkA==", "integrity": "sha512-NT1XSUDweBpgpiZb3Upfy3DBwAbn8W0aXo3Ecp4kHozTLewWa0UkWUP6nRTvSj2c0NcD/BLLuf0HthqMpbEdkA==",
"dependencies": [ "dependencies": [
@@ -624,12 +998,19 @@
], ],
"bin": true "bin": true
}, },
"tslib@1.14.1": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
"tslib@2.8.1": { "tslib@2.8.1": {
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
}, },
"tunnel@0.0.6": { "tunnel@0.0.6": {
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
}, },
"typescript@3.9.10": {
"integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==",
"bin": true
},
"unconfig@7.3.2": { "unconfig@7.3.2": {
"integrity": "sha512-nqG5NNL2wFVGZ0NA/aCFw0oJ2pxSf1lwg4Z5ill8wd7K4KX/rQbHlwbh+bjctXL5Ly1xtzHenHGOK0b+lG6JVg==", "integrity": "sha512-nqG5NNL2wFVGZ0NA/aCFw0oJ2pxSf1lwg4Z5ill8wd7K4KX/rQbHlwbh+bjctXL5Ly1xtzHenHGOK0b+lG6JVg==",
"dependencies": [ "dependencies": [
@@ -667,15 +1048,40 @@
"webpack-virtual-modules" "webpack-virtual-modules"
] ]
}, },
"uuid@8.3.2": {
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"bin": true
},
"valibot@1.0.0": { "valibot@1.0.0": {
"integrity": "sha512-1Hc0ihzWxBar6NGeZv7fPLY0QuxFMyxwYR2sF1Blu7Wq7EnremwY2W02tit2ij2VJT8HcSkHAQqmFfl77f73Yw==" "integrity": "sha512-1Hc0ihzWxBar6NGeZv7fPLY0QuxFMyxwYR2sF1Blu7Wq7EnremwY2W02tit2ij2VJT8HcSkHAQqmFfl77f73Yw=="
}, },
"webidl-conversions@3.0.1": {
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"webpack-virtual-modules@0.6.2": { "webpack-virtual-modules@0.6.2": {
"integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==" "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="
},
"whatwg-url@5.0.0": {
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"dependencies": [
"tr46",
"webidl-conversions"
]
},
"xml2js@0.5.0": {
"integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
"dependencies": [
"sax",
"xmlbuilder"
]
},
"xmlbuilder@11.0.1": {
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
} }
}, },
"workspace": { "workspace": {
"dependencies": [ "dependencies": [
"npm:@actions/cache@^4.0.3",
"npm:@actions/core@^1.11.1", "npm:@actions/core@^1.11.1",
"npm:@actions/tool-cache@^2.0.2", "npm:@actions/tool-cache@^2.0.2",
"npm:@types/node@^22.15.0", "npm:@types/node@^22.15.0",

4
dist/cache-ByPW8-iO.mjs vendored Normal file
View File

@@ -0,0 +1,4 @@
import "./semver-DmxAwBYV.mjs";
import { restoreCache, saveCache } from "./cache-DzONlZ-I.mjs";
export { restoreCache };

43177
dist/cache-DzONlZ-I.mjs vendored Normal file

File diff suppressed because it is too large Load Diff

20931
dist/main.mjs vendored

File diff suppressed because one or more lines are too long

16
dist/post.mjs vendored Normal file
View File

@@ -0,0 +1,16 @@
import { import_core } from "./semver-DmxAwBYV.mjs";
import { saveCache } from "./cache-DzONlZ-I.mjs";
import process from "node:process";
//#region src/post.ts
async function main() {
try {
await saveCache();
} catch (err) {
import_core.setFailed(err instanceof Error ? err : String(err));
process.exit();
}
}
main();
//#endregion

17978
dist/semver-DmxAwBYV.mjs vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -9,9 +9,16 @@ await new Deno.Command(Deno.execPath(), {
stderr: "inherit", stderr: "inherit",
}).output(); }).output();
try {
Deno.removeSync(join(import.meta.dirname!, "../dist"), { recursive: true });
} catch {
// ignore
}
await build({ await build({
entry: { entry: {
main: "src/main.ts", main: "src/main.ts",
post: "src/post.ts",
}, },
target: "node20.19", target: "node20.19",
platform: "node", platform: "node",

81
src/cache.ts Normal file
View File

@@ -0,0 +1,81 @@
import process from "node:process";
import cache from "@actions/cache";
import core from "@actions/core";
const state = {
DENO_DIR: "DENO_DIR",
CACHE_HIT: "CACHE_HIT",
CACHE_SAVE: "CACHE_SAVE",
} as const;
export async function saveCache() {
if (!cache.isFeatureAvailable()) {
core.warning("Caching is not available. Caching is skipped.");
return;
}
const denoDir = core.getState(state.DENO_DIR);
const saveKey = core.getState(state.CACHE_SAVE);
if (!denoDir || !saveKey) {
core.info("Caching is not enabled. Caching is skipped.");
return;
} else if (core.getState(state.CACHE_HIT) === "true") {
core.info(
`Cache hit occurred on the primary key "${saveKey}", not saving cache.`,
);
return;
}
await cache.saveCache([denoDir], saveKey);
core.info(`Cache saved with key: "${saveKey}".`);
}
export async function restoreCache(cacheHash: string) {
try {
const denoDir = await resolveDenoDir();
core.saveState(state.DENO_DIR, denoDir);
const { GITHUB_JOB, RUNNER_OS, RUNNER_ARCH } = process.env;
const restoreKey = `deno-cache-${RUNNER_OS}-${RUNNER_ARCH}`;
// CI jobs often download different dependencies, so include Job ID in the cache key.
const primaryKey = `${restoreKey}-${GITHUB_JOB}-${cacheHash}`;
core.saveState(state.CACHE_SAVE, primaryKey);
const loadedCacheKey = await cache.restoreCache([denoDir], primaryKey, [
restoreKey,
]);
const cacheHit = primaryKey === loadedCacheKey;
core.setOutput("cache-hit", cacheHit);
core.saveState(state.CACHE_HIT, cacheHit);
const message = loadedCacheKey
? `Cache key used: "${loadedCacheKey}".`
: `No cache found for restore key: "${restoreKey}".`;
core.info(message);
} catch (err) {
core.warning(
new Error("Failed to restore cache. Continuing without cache.", {
cause: err,
}),
);
}
}
async function resolveDenoDir(): Promise<string> {
const { DENO_DIR } = process.env;
if (DENO_DIR) return DENO_DIR;
// Retrieve the DENO_DIR from `deno info --json`
const { exec } = await import("node:child_process");
const output = await new Promise<string>((res, rej) => {
exec("deno info --json", (err, stdout) => err ? rej(err) : res(stdout));
});
const info = JSON.parse(output);
if (typeof info.denoDir !== "string") {
throw new Error(
"`deno info --json` output did not contain a denoDir property. " +
"Maybe try updating this action or your Deno version if either are old.",
);
}
return info.denoDir;
}

View File

@@ -56,6 +56,11 @@ async function main() {
core.setOutput("release-channel", version.kind); core.setOutput("release-channel", version.kind);
core.info("Installation complete."); core.info("Installation complete.");
if (core.getInput("cache") === "true") {
const { restoreCache } = await import("./cache.ts");
await restoreCache(core.getInput("cache-hash"));
}
} catch (err) { } catch (err) {
core.setFailed((err instanceof Error) ? err : String(err)); core.setFailed((err instanceof Error) ? err : String(err));
process.exit(); process.exit();

14
src/post.ts Normal file
View File

@@ -0,0 +1,14 @@
import process from "node:process";
import core from "@actions/core";
import { saveCache } from "./cache.ts";
async function main() {
try {
await saveCache();
} catch (err) {
core.setFailed((err instanceof Error) ? err : String(err));
process.exit();
}
}
main();