From 43a181df387b71d5bb72df611c8c65d26510a257 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Tue, 2 Apr 2024 15:33:38 -0700 Subject: [PATCH 1/6] feat: support arbitrary mount options for each cache Signed-off-by: Amin Yahyaabadi --- README.md | 15 +++++++++++++++ action.yml | 2 +- dist/index.js | 41 ++++++++++++++++++++++++++++++++--------- dist/index.js.map | 2 +- src/extract-cache.ts | 15 +++++++++------ src/inject-cache.ts | 15 +++++++++------ src/opts.ts | 43 ++++++++++++++++++++++++++++++++++++++++--- 7 files changed, 107 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 49d01f5..f0e4ecf 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,21 @@ Real-world examples: - - +## CacheMap Options + +Optionally, instead of a single string for the `target`, you can provide an object with additional options that should be passed to `--mount=type=cache` in the values `cache-map` JSON. The `target` path must be present in the object as a property. + +```json +{ + "var-cache-apt": { + "target": "/var/cache/apt", + "sharing": "locked", + "id": "1" + }, + "var-lib-apt": "/var/lib/apt" +} +``` + ## CLI Usage In other CI systems, you can run the script directly via `node`: diff --git a/action.yml b/action.yml index ef43eb8..5f5f409 100644 --- a/action.yml +++ b/action.yml @@ -3,7 +3,7 @@ description: "Injects the cached data into the docker build(x|kit) process" inputs: cache-map: required: true - description: "The map of actions source to container destination paths for the cache paths" + description: "The map of actions source paths to container destination paths or mount arguments" cache-source: deprecationMessage: "Use `cache-map` instead" description: "Where the cache is stored in the calling workspace. Default: `cache`" diff --git a/dist/index.js b/dist/index.js index df031dc..4c8874a 100644 --- a/dist/index.js +++ b/dist/index.js @@ -720,7 +720,7 @@ Save 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms Options: --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step) - --cache-map The map of actions source to container destination paths for the cache paths + --cache-map The map of actions source paths to container destination paths or mount arguments --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch' --skip-extraction Skip the extraction of the cache from the docker container --help Show this help @@ -733,6 +733,25 @@ function $76d06fcdc9bff1f5$export$8550a4d7282a21d0(opts) { throw new Error(`Failed to parse cache map. Expected JSON, got:\n${opts["cache-map"]}\n${e}`); } } +function $76d06fcdc9bff1f5$export$febacabd0d01c81(cacheOptions) { + if (typeof cacheOptions === "string") // only the target path is provided + return cacheOptions; + else // object is provided + try { + return cacheOptions.target; + } catch (e) { + throw new Error(`Expected the 'target' key in the cache options, got:\n${cacheOptions}\n${e}`); + } +} +function $76d06fcdc9bff1f5$export$238315f403b84074(cacheOptions) { + if (typeof cacheOptions === "string") // only the target path is provided + return `type=cache,target=${cacheOptions}`; + else { + // other options are provided + const otherOptions = Object.entries(cacheOptions).map(([key, value])=>`${key}=${value}`).join(","); + return `type=cache,${otherOptions}`; + } +} var $03c48d50d9d7039f$exports = {}; @@ -1223,7 +1242,7 @@ function $4c028fad90f63861$var$assertSuccess(cp) { -async function $bd1d73aff0732146$var$injectCache(cacheSource, cacheTarget, scratchDir) { +async function $bd1d73aff0732146$var$injectCache(cacheSource, cacheOptions, scratchDir) { // Clean Scratch Directory await (0, $evV72$fspromises).rm(scratchDir, { recursive: true, @@ -1239,13 +1258,15 @@ async function $bd1d73aff0732146$var$injectCache(cacheSource, cacheTarget, scrat // Prepare Timestamp for Layer Cache Busting const date = new Date().toISOString(); await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(cacheSource, "buildstamp"), date); + const targetPath = (0, $76d06fcdc9bff1f5$export$febacabd0d01c81)(cacheOptions); + const mountArgs = (0, $76d06fcdc9bff1f5$export$238315f403b84074)(cacheOptions); // Prepare Dancefile to Access Caches const dancefileContent = ` FROM busybox:1 COPY buildstamp buildstamp -RUN --mount=type=cache,target=${cacheTarget} \ +RUN --mount=${mountArgs} \ --mount=type=bind,source=.,target=/var/dance-cache \ - cp -p -R /var/dance-cache/. ${cacheTarget} || true + cp -p -R /var/dance-cache/. ${targetPath} || true `; await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(scratchDir, "Dancefile.inject"), dancefileContent); console.log(dancefileContent); @@ -1274,7 +1295,7 @@ async function $bd1d73aff0732146$export$38c65e9f06d3d433(opts) { const cacheMap = (0, $76d06fcdc9bff1f5$export$8550a4d7282a21d0)(opts); const scratchDir = opts["scratch-dir"]; // Inject Caches for each source-target pair - for (const [cacheSource, cacheTarget] of Object.entries(cacheMap))await $bd1d73aff0732146$var$injectCache(cacheSource, cacheTarget, scratchDir); + for (const [cacheSource, cacheOptions] of Object.entries(cacheMap))await $bd1d73aff0732146$var$injectCache(cacheSource, cacheOptions, scratchDir); } @@ -1282,17 +1303,19 @@ async function $bd1d73aff0732146$export$38c65e9f06d3d433(opts) { -async function $8d40300f3635b768$var$extractCache(cacheSource, cacheTarget, scratchDir) { +async function $8d40300f3635b768$var$extractCache(cacheSource, cacheOptions, scratchDir) { // Prepare Timestamp for Layer Cache Busting const date = new Date().toISOString(); await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(scratchDir, "buildstamp"), date); // Prepare Dancefile to Access Caches + const targetPath = (0, $76d06fcdc9bff1f5$export$febacabd0d01c81)(cacheOptions); + const mountArgs = (0, $76d06fcdc9bff1f5$export$238315f403b84074)(cacheOptions); const dancefileContent = ` FROM busybox:1 COPY buildstamp buildstamp -RUN --mount=type=cache,target=${cacheTarget} \ +RUN --mount=${mountArgs} \ mkdir -p /var/dance-cache/ \ - && cp -p -R ${cacheTarget}/. /var/dance-cache/ || true + && cp -p -R ${targetPath}/. /var/dance-cache/ || true `; await (0, $evV72$fspromises).writeFile((0, $evV72$path).join(scratchDir, "Dancefile.extract"), dancefileContent); console.log(dancefileContent); @@ -1358,7 +1381,7 @@ async function $8d40300f3635b768$export$bd3cfa0c41fc7012(opts) { const cacheMap = (0, $76d06fcdc9bff1f5$export$8550a4d7282a21d0)(opts); const scratchDir = opts["scratch-dir"]; // Extract Caches for each source-target pair - for (const [cacheSource, cacheTarget] of Object.entries(cacheMap))await $8d40300f3635b768$var$extractCache(cacheSource, cacheTarget, scratchDir); + for (const [cacheSource, cacheOptions] of Object.entries(cacheMap))await $8d40300f3635b768$var$extractCache(cacheSource, cacheOptions, scratchDir); } diff --git a/dist/index.js.map b/dist/index.js.map index 244b51d..ccaa64c 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"mappings":"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;QACd,MAAM,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE;QACzB,MAAO,IAAI,MAAM,GAAG,EACnB,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;IAE3B;IAGD,OAAO;AACR;;;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,I,kC,A,6B,0B,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;A,O,c,C,2B,c;I,O;A;A,0B,Q,G,0B,S,G,0B,K,G,0B,Q,G,0B,U,G,0B,I,G,0B,M,G,0B,O,G,0B,K,G,0B,K,G,0B,O,G,0B,S,G,0B,c,G,0B,S,G,0B,e,G,0B,iB,G,0B,Q,G,0B,O,G,0B,S,G,0B,c,G,0B,Q,G,K;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,K,G,0B,Y,G,K;;AItHA,MAAA,2BAAA,mCAAA;;A;AEAA,mCAAmC;AACnC,qDAAA,G,O,c,C,2B,c;I,O;A;A,0B,mB,G,0B,c,G,K;AAKA;;;CAGG,GACH,SAAgB,qCAAe,KAAU;IACvC,IAAI,UAAU,QAAQ,UAAU,WAC9B,OAAO;SACF,IAAI,OAAO,UAAU,YAAY,iBAAiB,QACvD,OAAO;IAET,OAAO,KAAK,SAAS,CAAC;AACxB;AAPA,0BAAA,cAAA,GAAA;AASA;;;;;CAKG,GACH,SAAgB,0CACd,oBAA0C;IAE1C,IAAI,CAAC,OAAO,IAAI,CAAC,sBAAsB,MAAM,EAC3C,OAAO,CAAA;IAGT,OAAO;QACL,OAAO,qBAAqB,KAAK;QACjC,MAAM,qBAAqB,SAAS;QACpC,SAAS,qBAAqB,OAAO;QACrC,KAAK,qBAAqB,WAAW;QACrC,WAAW,qBAAqB,SAAS;IAC1C;AACH;AAdA,0BAAA,mBAAA,GAAA;;;AFbA;;;;;;;;;CASG,GACH,SAAgB,mCACd,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,MAAM,IAAI,8BAAQ,SAAS,YAAY;IAC7C,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,KAAK,yBAAG,GAAG;AAC9C;AAPA,0BAAA,YAAA,GAAA;AASA,SAAgB,4BAAM,IAAY,EAAE,UAAU,EAAE;IAC9C,mCAAa,MAAM,CAAA,GAAI;AACzB;AAFA,0BAAA,KAAA,GAAA;AAIA,MAAM,mCAAa;AAEnB,MAAM;IAKJ,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe,CAA3E;QACE,IAAI,CAAC,SACH,UAAU;QAGZ,IAAI,CAAC,OAAO,GAAG;QACf,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,OAAO,GAAG;IACjB;IAEA,WAAA;QACE,IAAI,SAAS,mCAAa,IAAI,CAAC,OAAO;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG;YAC9D,UAAU;YACV,IAAI,QAAQ;YACZ,IAAK,MAAM,OAAO,IAAI,CAAC,UAAU,CAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM;gBACvC,MAAM,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI;gBAChC,IAAI,KAAK;oBACP,IAAI,OACF,QAAQ;yBAER,UAAU;oBAGZ,UAAU,CAAA,EAAG,IAAG,CAAA,EAAI,qCAAe,KAAI,CAAE;gBAC1C;YACF;QAEJ;QAED,UAAU,CAAA,EAAG,iCAAU,EAAG,iCAAW,IAAI,CAAC,OAAO,EAAC,CAAE;QACpD,OAAO;IACT;AACD;AAED,SAAS,iCAAW,CAAM;IACxB,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO;AACpB;AAEA,SAAS,qCAAe,CAAM;IAC5B,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,MAAM;AACnB;;;;A;AI7FA,uCAAuC;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,Y,G,K;;AAEvC,mCAAmC;AACnC,qDAAA,GAEA,MAAA,2BAAA,mCAAA;;AACA,MAAA,2BAAA,mCAAA;;AAGA,SAAgB,mCAAa,OAAe,EAAE,OAAY;IACxD,MAAM,WAAW,QAAQ,GAAG,CAAC,CAAA,OAAA,EAAU,QAAO,CAAE,CAAC;IACjD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,CAAA,qDAAA,EAAwD,QAAO,CAAE;IAGrE,IAAI,CAAC,yBAAG,UAAU,CAAC,WACjB,MAAM,IAAI,MAAM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","sources":["node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","src/index.ts","src/inject-cache.ts","src/opts.ts","node_modules/.pnpm/mri@1.2.0/node_modules/mri/lib/index.mjs","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/core.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/core.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/command.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/utils.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/utils.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/file-command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/file-command.ts","src/run.ts","node_modules/.pnpm/spawn-please@3.0.0/node_modules/spawn-please/src/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js","node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js","node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js","src/extract-cache.ts"],"sourcesContent":["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","import fs from \"fs/promises\";\nimport os from \"os\";\nimport { injectCaches } from \"./inject-cache.js\";\nimport { extractCaches } from \"./extract-cache.js\";\nimport { help, parseOpts } from \"./opts.js\";\n\nasync function main(args: string[]) {\n const opts = parseOpts(args);\n\n if (opts.help) {\n return help();\n }\n\n if (opts.extract) {\n // Run the post step\n await extractCaches(opts);\n } else {\n // Otherwise, this is the main step\n if (process.env.GITHUB_STATE !== undefined) {\n await fs.appendFile(process.env.GITHUB_STATE, `POST=true${os.EOL}`);\n }\n await injectCaches(opts);\n }\n}\n\ntry {\n await main(process.argv);\n} catch (err) {\n console.error(err);\n if (err instanceof Error) {\n console.error(err.stack);\n }\n process.exit(1);\n}\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { Opts, getCacheMap } from './opts.js';\nimport { run } from './run.js';\nimport { notice } from '@actions/core';\n\nasync function injectCache(cacheSource: string, cacheTarget: string, scratchDir: string) {\n // Clean Scratch Directory\n await fs.rm(scratchDir, { recursive: true, force: true });\n await fs.mkdir(scratchDir, { recursive: true });\n\n // Prepare Cache Source Directory\n await fs.mkdir(cacheSource, { recursive: true });\n\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(cacheSource, 'buildstamp'), date);\n\n // Prepare Dancefile to Access Caches\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=type=cache,target=${cacheTarget} \\\n --mount=type=bind,source=.,target=/var/dance-cache \\\n cp -p -R /var/dance-cache/. ${cacheTarget} || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.inject'), dancefileContent);\n console.log(dancefileContent);\n\n // Inject Data into Docker Cache\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.inject'), '--tag', 'dance:inject', cacheSource]);\n\n // Clean Directories\n try {\n await fs.rm(cacheSource, { recursive: true, force: true });\n } catch (err) {\n // Ignore Cleaning Errors\n notice(`Error while cleaning cache source directory: ${err}. Ignoring...`);\n }\n}\n\n\nexport async function injectCaches(opts: Opts) {\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Inject Caches for each source-target pair\n for (const [cacheSource, cacheTarget] of Object.entries(cacheMap)) {\n await injectCache(cacheSource, cacheTarget, scratchDir);\n }\n}\n","import mri from 'mri';\nimport { getInput, warning } from '@actions/core';\n\nexport type Opts = {\n \"extract\": boolean\n \"cache-map\": string\n \"scratch-dir\": string\n \"skip-extraction\": boolean\n help: boolean\n /** @deprecated Use `cache-map` instead */\n \"cache-source\"?: string\n /** @deprecated Use `cache-map` instead */\n \"cache-target\"?: string\n}\n\nexport function parseOpts(args: string[]): mri.Argv {\n const opts = mri(args, {\n default: {\n \"cache-map\": getInput(\"cache-map\"),\n \"scratch-dir\": getInput(\"scratch-dir\"),\n \"skip-extraction\": getInput(\"skip-extraction\") === \"true\",\n \"extract\": process.env[`STATE_POST`] !== undefined,\n },\n string: [\"cache-map\", \"scratch-dir\", \"cache-source\", \"cache-target\"],\n boolean: [\"skip-extraction\", \"help\", \"extract\"],\n alias: {\n \"help\": [\"h\"],\n },\n })\n\n if (opts[\"cache-source\"] && opts[\"cache-target\"]) {\n warning(\"The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead.\")\n\n opts[\"cache-map\"] = JSON.stringify({\n [opts[\"cache-source\"]]: opts[\"cache-target\"],\n });\n }\n\n return opts;\n}\n\nexport function help() {\n console.log(`build-cache-dance [options]\nSave 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms\n\nOptions:\n --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step)\n --cache-map The map of actions source to container destination paths for the cache paths\n --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch'\n --skip-extraction Skip the extraction of the cache from the docker container\n --help Show this help\n`);\n}\n\nexport function getCacheMap(opts: Opts): Record {\n try {\n return JSON.parse(opts[\"cache-map\"]) as Record;\n } catch (e) {\n throw new Error(`Failed to parse cache map. Expected JSON, got:\\n${opts[\"cache-map\"]}\\n${e}`);\n }\n}\n","function toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nexport default function (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n",null,null,null,null,null,null,null,null,"import spawnPlease from 'spawn-please'\nimport cp, { type SpawnOptions, type ChildProcess } from 'child_process';\n\nexport async function run(command: string, args: string[]) {\n try {\n return await spawnPlease(command, args);\n } catch (error) {\n console.error(`Error running command: ${command} ${args.join(' ')}`);\n throw error;\n }\n}\n\nexport async function runPiped([commannd1, args1]: [string, string[]], [command2, args2]: [string, string[]]) {\n const cp1 = cp.spawn(commannd1, args1, { stdio: ['inherit', 'pipe', 'inherit'] });\n const cp2 = cp.spawn(command2, args2, { stdio: ['pipe', 'inherit', 'inherit'] });\n\n cp1.stdout.pipe(cp2.stdin);\n\n await Promise.all([assertSuccess(cp1), assertSuccess(cp2)]);\n}\n\nfunction assertSuccess(cp: ChildProcess) {\n return new Promise((resolve, reject) => {\n cp.on('error', (error) => {\n reject(error);\n });\n cp.on('close', (code) => {\n if (code !== 0) {\n reject(new Error(`process exited with code ${code}`));\n }\n resolve();\n });\n });\n}\n","const spawn = require('cross-spawn')\n\n/** Spawns a child process, as long as you ask nicely.\n * \n * @param {string} command - The shell command to execute.\n * @param {string[]} [args] - An array of arguments that are given after the command.\n * @param {{ rejectOnError?: boolean, stdin?: string, stderr?: (data: string) => void, stdout?: (data: string) => void }} [options] - Options.\n * @param {any} [spawnOptions] - Options that are passed directly to child_process.spawn. Also supports stdin: string.\n * @returns {Promise<{ stdout: string, stderr: string }>}\n */\nconst spawnPlease = (command, args, options={}, spawnOptions={}) => {\n // defaults\n if (options.rejectOnError === undefined) {\n options.rejectOnError = true\n }\n\n let stdout = ''\n let stderr = ''\n const child = spawn(command, args, spawnOptions)\n\n return new Promise((resolve, reject) => {\n if (options.stdin !== undefined && options.stdin != null) {\n child.stdin.write(options.stdin)\n }\n child.stdin.end()\n\n child.stdout.on('data', data => {\n stdout += data\n if (options.stdout) options.stdout(data)\n })\n\n child.stderr.on('data', data => {\n stderr += data\n if (options.stderr) options.stderr(data)\n })\n\n if (options.rejectOnError) {\n child.addListener('error', reject)\n }\n\n child.on('close', code => {\n if (code !== 0 && options.rejectOnError) {\n reject(stderr)\n } else {\n resolve({ stdout, stderr })\n }\n })\n })\n}\n\nmodule.exports = spawnPlease\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { Opts, getCacheMap } from './opts.js';\nimport { run, runPiped } from './run.js';\nimport { spawn } from 'child_process';\n\nasync function extractCache(cacheSource: string, cacheTarget: string, scratchDir: string) {\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(scratchDir, 'buildstamp'), date);\n\n // Prepare Dancefile to Access Caches\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=type=cache,target=${cacheTarget} \\\n mkdir -p /var/dance-cache/ \\\n && cp -p -R ${cacheTarget}/. /var/dance-cache/ || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.extract'), dancefileContent);\n console.log(dancefileContent);\n\n // Extract Data into Docker Image\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.extract'), '--tag', 'dance:extract', '--load', scratchDir]);\n\n // Create Extraction Image\n try {\n await run('docker', ['rm', '-f', 'cache-container']);\n } catch (error) {\n // Ignore error if container does not exist\n }\n await run('docker', ['create', '-ti', '--name', 'cache-container', 'dance:extract']);\n\n // Unpack Docker Image into Scratch\n await runPiped(\n ['docker', ['cp', '-L', 'cache-container:/var/dance-cache', '-']],\n ['tar', ['-H', 'posix', '-x', '-C', scratchDir]]\n );\n\n // Move Cache into Its Place\n await fs.rm(cacheSource, { recursive: true, force: true });\n await fs.rename(path.join(scratchDir, 'dance-cache'), cacheSource);\n}\n\nexport async function extractCaches(opts: Opts) {\n if (opts[\"skip-extraction\"]) {\n console.log(\"skip-extraction is set. Skipping extraction step...\");\n return;\n }\n\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Extract Caches for each source-target pair\n for (const [cacheSource, cacheTarget] of Object.entries(cacheMap)) {\n await extractCache(cacheSource, cacheTarget, scratchDir);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file +{"mappings":"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;QACd,MAAM,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE;QACzB,MAAO,IAAI,MAAM,GAAG,EACnB,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;IAE3B;IAGD,OAAO;AACR;;;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,I,kC,A,6B,0B,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;A,O,c,C,2B,c;I,O;A;A,0B,Q,G,0B,S,G,0B,K,G,0B,Q,G,0B,U,G,0B,I,G,0B,M,G,0B,O,G,0B,K,G,0B,K,G,0B,O,G,0B,S,G,0B,c,G,0B,S,G,0B,e,G,0B,iB,G,0B,Q,G,0B,O,G,0B,S,G,0B,c,G,0B,Q,G,K;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,K,G,0B,Y,G,K;;AItHA,MAAA,2BAAA,mCAAA;;A;AEAA,mCAAmC;AACnC,qDAAA,G,O,c,C,2B,c;I,O;A;A,0B,mB,G,0B,c,G,K;AAKA;;;CAGG,GACH,SAAgB,qCAAe,KAAU;IACvC,IAAI,UAAU,QAAQ,UAAU,WAC9B,OAAO;SACF,IAAI,OAAO,UAAU,YAAY,iBAAiB,QACvD,OAAO;IAET,OAAO,KAAK,SAAS,CAAC;AACxB;AAPA,0BAAA,cAAA,GAAA;AASA;;;;;CAKG,GACH,SAAgB,0CACd,oBAA0C;IAE1C,IAAI,CAAC,OAAO,IAAI,CAAC,sBAAsB,MAAM,EAC3C,OAAO,CAAA;IAGT,OAAO;QACL,OAAO,qBAAqB,KAAK;QACjC,MAAM,qBAAqB,SAAS;QACpC,SAAS,qBAAqB,OAAO;QACrC,KAAK,qBAAqB,WAAW;QACrC,WAAW,qBAAqB,SAAS;IAC1C;AACH;AAdA,0BAAA,mBAAA,GAAA;;;AFbA;;;;;;;;;CASG,GACH,SAAgB,mCACd,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,MAAM,IAAI,8BAAQ,SAAS,YAAY;IAC7C,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,KAAK,yBAAG,GAAG;AAC9C;AAPA,0BAAA,YAAA,GAAA;AASA,SAAgB,4BAAM,IAAY,EAAE,UAAU,EAAE;IAC9C,mCAAa,MAAM,CAAA,GAAI;AACzB;AAFA,0BAAA,KAAA,GAAA;AAIA,MAAM,mCAAa;AAEnB,MAAM;IAKJ,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe,CAA3E;QACE,IAAI,CAAC,SACH,UAAU;QAGZ,IAAI,CAAC,OAAO,GAAG;QACf,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,OAAO,GAAG;IACjB;IAEA,WAAA;QACE,IAAI,SAAS,mCAAa,IAAI,CAAC,OAAO;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG;YAC9D,UAAU;YACV,IAAI,QAAQ;YACZ,IAAK,MAAM,OAAO,IAAI,CAAC,UAAU,CAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM;gBACvC,MAAM,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI;gBAChC,IAAI,KAAK;oBACP,IAAI,OACF,QAAQ;yBAER,UAAU;oBAGZ,UAAU,CAAA,EAAG,IAAG,CAAA,EAAI,qCAAe,KAAI,CAAE;gBAC1C;YACF;QAEJ;QAED,UAAU,CAAA,EAAG,iCAAU,EAAG,iCAAW,IAAI,CAAC,OAAO,EAAC,CAAE;QACpD,OAAO;IACT;AACD;AAED,SAAS,iCAAW,CAAM;IACxB,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO;AACpB;AAEA,SAAS,qCAAe,CAAM;IAC5B,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,MAAM;AACnB;;;;A;AI7FA,uCAAuC;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,Y,G,K;;AAEvC,mCAAmC;AACnC,qDAAA,GAEA,MAAA,2BAAA,mCAAA;;AACA,MAAA,2BAAA,mCAAA;;AAGA,SAAgB,mCAAa,OAAe,EAAE,OAAY;IACxD,MAAM,WAAW,QAAQ,GAAG,CAAC,CAAA,OAAA,EAAU,QAAO,CAAE,CAAC;IACjD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,CAAA,qDAAA,EAAwD,QAAO,CAAE;IAGrE,IAAI,CAAC,yBAAG,UAAU,CAAC,WACjB,MAAM,IAAI,MAAM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","sources":["node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","src/index.ts","src/inject-cache.ts","src/opts.ts","node_modules/.pnpm/mri@1.2.0/node_modules/mri/lib/index.mjs","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/core.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/core.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/command.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/utils.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/utils.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/file-command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/file-command.ts","src/run.ts","node_modules/.pnpm/spawn-please@3.0.0/node_modules/spawn-please/src/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js","node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js","node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js","src/extract-cache.ts"],"sourcesContent":["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","import fs from \"fs/promises\";\nimport os from \"os\";\nimport { injectCaches } from \"./inject-cache.js\";\nimport { extractCaches } from \"./extract-cache.js\";\nimport { help, parseOpts } from \"./opts.js\";\n\nasync function main(args: string[]) {\n const opts = parseOpts(args);\n\n if (opts.help) {\n return help();\n }\n\n if (opts.extract) {\n // Run the post step\n await extractCaches(opts);\n } else {\n // Otherwise, this is the main step\n if (process.env.GITHUB_STATE !== undefined) {\n await fs.appendFile(process.env.GITHUB_STATE, `POST=true${os.EOL}`);\n }\n await injectCaches(opts);\n }\n}\n\ntry {\n await main(process.argv);\n} catch (err) {\n console.error(err);\n if (err instanceof Error) {\n console.error(err.stack);\n }\n process.exit(1);\n}\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js';\nimport { run } from './run.js';\nimport { notice } from '@actions/core';\n\nasync function injectCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) {\n // Clean Scratch Directory\n await fs.rm(scratchDir, { recursive: true, force: true });\n await fs.mkdir(scratchDir, { recursive: true });\n\n // Prepare Cache Source Directory\n await fs.mkdir(cacheSource, { recursive: true });\n\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(cacheSource, 'buildstamp'), date);\n\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n // Prepare Dancefile to Access Caches\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n --mount=type=bind,source=.,target=/var/dance-cache \\\n cp -p -R /var/dance-cache/. ${targetPath} || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.inject'), dancefileContent);\n console.log(dancefileContent);\n\n // Inject Data into Docker Cache\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.inject'), '--tag', 'dance:inject', cacheSource]);\n\n // Clean Directories\n try {\n await fs.rm(cacheSource, { recursive: true, force: true });\n } catch (err) {\n // Ignore Cleaning Errors\n notice(`Error while cleaning cache source directory: ${err}. Ignoring...`);\n }\n}\n\n\nexport async function injectCaches(opts: Opts) {\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Inject Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await injectCache(cacheSource, cacheOptions, scratchDir);\n }\n}\n","import mri from 'mri';\nimport { getInput, warning } from '@actions/core';\n\nexport type Opts = {\n \"extract\": boolean\n \"cache-map\": string\n \"scratch-dir\": string\n \"skip-extraction\": boolean\n help: boolean\n /** @deprecated Use `cache-map` instead */\n \"cache-source\"?: string\n /** @deprecated Use `cache-map` instead */\n \"cache-target\"?: string\n}\n\nexport function parseOpts(args: string[]): mri.Argv {\n const opts = mri(args, {\n default: {\n \"cache-map\": getInput(\"cache-map\"),\n \"scratch-dir\": getInput(\"scratch-dir\"),\n \"skip-extraction\": getInput(\"skip-extraction\") === \"true\",\n \"extract\": process.env[`STATE_POST`] !== undefined,\n },\n string: [\"cache-map\", \"scratch-dir\", \"cache-source\", \"cache-target\"],\n boolean: [\"skip-extraction\", \"help\", \"extract\"],\n alias: {\n \"help\": [\"h\"],\n },\n })\n\n if (opts[\"cache-source\"] && opts[\"cache-target\"]) {\n warning(\"The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead.\")\n\n opts[\"cache-map\"] = JSON.stringify({\n [opts[\"cache-source\"]]: opts[\"cache-target\"],\n });\n }\n\n return opts;\n}\n\nexport function help() {\n console.log(`build-cache-dance [options]\nSave 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms\n\nOptions:\n --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step)\n --cache-map The map of actions source paths to container destination paths or mount arguments\n --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch'\n --skip-extraction Skip the extraction of the cache from the docker container\n --help Show this help\n`);\n}\n\nexport type SourcePath = string\nexport type TargetPath = string\nexport type ToStringable = {\n toString(): string;\n}\nexport type CacheOptions = TargetPath | { target: TargetPath } & Record\nexport type CacheMap = Record\n\nexport function getCacheMap(opts: Opts): CacheMap {\n try {\n return JSON.parse(opts[\"cache-map\"]) as CacheMap;\n } catch (e) {\n throw new Error(`Failed to parse cache map. Expected JSON, got:\\n${opts[\"cache-map\"]}\\n${e}`);\n }\n}\n\nexport function getTargetPath(cacheOptions: CacheOptions): TargetPath {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return cacheOptions;\n } else {\n // object is provided\n try {\n return cacheOptions.target;\n } catch (e) {\n throw new Error(`Expected the 'target' key in the cache options, got:\\n${cacheOptions}\\n${e}`);\n }\n }\n}\n\n/**\n * Convert a cache options to a string that is passed to --mount=\n * @param CacheOptions The cache options to convert to a string\n */\nexport function getMountArgsString(cacheOptions: CacheOptions): string {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return `type=cache,target=${cacheOptions}`;\n } else {\n // other options are provided\n const otherOptions = Object.entries(cacheOptions).map(([key, value]) => `${key}=${value}`).join(\",\");\n return `type=cache,${otherOptions}`;\n }\n}\n","function toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nexport default function (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n",null,null,null,null,null,null,null,null,"import spawnPlease from 'spawn-please'\nimport cp, { type SpawnOptions, type ChildProcess } from 'child_process';\n\nexport async function run(command: string, args: string[]) {\n try {\n return await spawnPlease(command, args);\n } catch (error) {\n console.error(`Error running command: ${command} ${args.join(' ')}`);\n throw error;\n }\n}\n\nexport async function runPiped([commannd1, args1]: [string, string[]], [command2, args2]: [string, string[]]) {\n const cp1 = cp.spawn(commannd1, args1, { stdio: ['inherit', 'pipe', 'inherit'] });\n const cp2 = cp.spawn(command2, args2, { stdio: ['pipe', 'inherit', 'inherit'] });\n\n cp1.stdout.pipe(cp2.stdin);\n\n await Promise.all([assertSuccess(cp1), assertSuccess(cp2)]);\n}\n\nfunction assertSuccess(cp: ChildProcess) {\n return new Promise((resolve, reject) => {\n cp.on('error', (error) => {\n reject(error);\n });\n cp.on('close', (code) => {\n if (code !== 0) {\n reject(new Error(`process exited with code ${code}`));\n }\n resolve();\n });\n });\n}\n","const spawn = require('cross-spawn')\n\n/** Spawns a child process, as long as you ask nicely.\n * \n * @param {string} command - The shell command to execute.\n * @param {string[]} [args] - An array of arguments that are given after the command.\n * @param {{ rejectOnError?: boolean, stdin?: string, stderr?: (data: string) => void, stdout?: (data: string) => void }} [options] - Options.\n * @param {any} [spawnOptions] - Options that are passed directly to child_process.spawn. Also supports stdin: string.\n * @returns {Promise<{ stdout: string, stderr: string }>}\n */\nconst spawnPlease = (command, args, options={}, spawnOptions={}) => {\n // defaults\n if (options.rejectOnError === undefined) {\n options.rejectOnError = true\n }\n\n let stdout = ''\n let stderr = ''\n const child = spawn(command, args, spawnOptions)\n\n return new Promise((resolve, reject) => {\n if (options.stdin !== undefined && options.stdin != null) {\n child.stdin.write(options.stdin)\n }\n child.stdin.end()\n\n child.stdout.on('data', data => {\n stdout += data\n if (options.stdout) options.stdout(data)\n })\n\n child.stderr.on('data', data => {\n stderr += data\n if (options.stderr) options.stderr(data)\n })\n\n if (options.rejectOnError) {\n child.addListener('error', reject)\n }\n\n child.on('close', code => {\n if (code !== 0 && options.rejectOnError) {\n reject(stderr)\n } else {\n resolve({ stdout, stderr })\n }\n })\n })\n}\n\nmodule.exports = spawnPlease\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js';\nimport { run, runPiped } from './run.js';\nimport { spawn } from 'child_process';\n\nasync function extractCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) {\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(scratchDir, 'buildstamp'), date);\n\n // Prepare Dancefile to Access Caches\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n mkdir -p /var/dance-cache/ \\\n && cp -p -R ${targetPath}/. /var/dance-cache/ || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.extract'), dancefileContent);\n console.log(dancefileContent);\n\n // Extract Data into Docker Image\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.extract'), '--tag', 'dance:extract', '--load', scratchDir]);\n\n // Create Extraction Image\n try {\n await run('docker', ['rm', '-f', 'cache-container']);\n } catch (error) {\n // Ignore error if container does not exist\n }\n await run('docker', ['create', '-ti', '--name', 'cache-container', 'dance:extract']);\n\n // Unpack Docker Image into Scratch\n await runPiped(\n ['docker', ['cp', '-L', 'cache-container:/var/dance-cache', '-']],\n ['tar', ['-H', 'posix', '-x', '-C', scratchDir]]\n );\n\n // Move Cache into Its Place\n await fs.rm(cacheSource, { recursive: true, force: true });\n await fs.rename(path.join(scratchDir, 'dance-cache'), cacheSource);\n}\n\nexport async function extractCaches(opts: Opts) {\n if (opts[\"skip-extraction\"]) {\n console.log(\"skip-extraction is set. Skipping extraction step...\");\n return;\n }\n\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Extract Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await extractCache(cacheSource, cacheOptions, scratchDir);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file diff --git a/src/extract-cache.ts b/src/extract-cache.ts index 561a45c..ffc89f8 100644 --- a/src/extract-cache.ts +++ b/src/extract-cache.ts @@ -1,21 +1,24 @@ import fs from 'fs/promises'; import path from 'path'; -import { Opts, getCacheMap } from './opts.js'; +import { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js'; import { run, runPiped } from './run.js'; import { spawn } from 'child_process'; -async function extractCache(cacheSource: string, cacheTarget: string, scratchDir: string) { +async function extractCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) { // Prepare Timestamp for Layer Cache Busting const date = new Date().toISOString(); await fs.writeFile(path.join(scratchDir, 'buildstamp'), date); // Prepare Dancefile to Access Caches + const targetPath = getTargetPath(cacheOptions); + const mountArgs = getMountArgsString(cacheOptions); + const dancefileContent = ` FROM busybox:1 COPY buildstamp buildstamp -RUN --mount=type=cache,target=${cacheTarget} \ +RUN --mount=${mountArgs} \ mkdir -p /var/dance-cache/ \ - && cp -p -R ${cacheTarget}/. /var/dance-cache/ || true + && cp -p -R ${targetPath}/. /var/dance-cache/ || true `; await fs.writeFile(path.join(scratchDir, 'Dancefile.extract'), dancefileContent); console.log(dancefileContent); @@ -52,7 +55,7 @@ export async function extractCaches(opts: Opts) { const scratchDir = opts['scratch-dir']; // Extract Caches for each source-target pair - for (const [cacheSource, cacheTarget] of Object.entries(cacheMap)) { - await extractCache(cacheSource, cacheTarget, scratchDir); + for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) { + await extractCache(cacheSource, cacheOptions, scratchDir); } } diff --git a/src/inject-cache.ts b/src/inject-cache.ts index 7c6b6f9..db80935 100644 --- a/src/inject-cache.ts +++ b/src/inject-cache.ts @@ -1,10 +1,10 @@ import fs from 'fs/promises'; import path from 'path'; -import { Opts, getCacheMap } from './opts.js'; +import { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js'; import { run } from './run.js'; import { notice } from '@actions/core'; -async function injectCache(cacheSource: string, cacheTarget: string, scratchDir: string) { +async function injectCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) { // Clean Scratch Directory await fs.rm(scratchDir, { recursive: true, force: true }); await fs.mkdir(scratchDir, { recursive: true }); @@ -16,13 +16,16 @@ async function injectCache(cacheSource: string, cacheTarget: string, scratchDir: const date = new Date().toISOString(); await fs.writeFile(path.join(cacheSource, 'buildstamp'), date); + const targetPath = getTargetPath(cacheOptions); + const mountArgs = getMountArgsString(cacheOptions); + // Prepare Dancefile to Access Caches const dancefileContent = ` FROM busybox:1 COPY buildstamp buildstamp -RUN --mount=type=cache,target=${cacheTarget} \ +RUN --mount=${mountArgs} \ --mount=type=bind,source=.,target=/var/dance-cache \ - cp -p -R /var/dance-cache/. ${cacheTarget} || true + cp -p -R /var/dance-cache/. ${targetPath} || true `; await fs.writeFile(path.join(scratchDir, 'Dancefile.inject'), dancefileContent); console.log(dancefileContent); @@ -45,7 +48,7 @@ export async function injectCaches(opts: Opts) { const scratchDir = opts['scratch-dir']; // Inject Caches for each source-target pair - for (const [cacheSource, cacheTarget] of Object.entries(cacheMap)) { - await injectCache(cacheSource, cacheTarget, scratchDir); + for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) { + await injectCache(cacheSource, cacheOptions, scratchDir); } } diff --git a/src/opts.ts b/src/opts.ts index 8f96f1d..6a3c681 100644 --- a/src/opts.ts +++ b/src/opts.ts @@ -45,17 +45,54 @@ Save 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms Options: --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step) - --cache-map The map of actions source to container destination paths for the cache paths + --cache-map The map of actions source paths to container destination paths or mount arguments --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch' --skip-extraction Skip the extraction of the cache from the docker container --help Show this help `); } -export function getCacheMap(opts: Opts): Record { +export type SourcePath = string +export type TargetPath = string +export type ToStringable = { + toString(): string; +} +export type CacheOptions = TargetPath | { target: TargetPath } & Record +export type CacheMap = Record + +export function getCacheMap(opts: Opts): CacheMap { try { - return JSON.parse(opts["cache-map"]) as Record; + return JSON.parse(opts["cache-map"]) as CacheMap; } catch (e) { throw new Error(`Failed to parse cache map. Expected JSON, got:\n${opts["cache-map"]}\n${e}`); } } + +export function getTargetPath(cacheOptions: CacheOptions): TargetPath { + if (typeof cacheOptions === "string") { + // only the target path is provided + return cacheOptions; + } else { + // object is provided + try { + return cacheOptions.target; + } catch (e) { + throw new Error(`Expected the 'target' key in the cache options, got:\n${cacheOptions}\n${e}`); + } + } +} + +/** + * Convert a cache options to a string that is passed to --mount= + * @param CacheOptions The cache options to convert to a string + */ +export function getMountArgsString(cacheOptions: CacheOptions): string { + if (typeof cacheOptions === "string") { + // only the target path is provided + return `type=cache,target=${cacheOptions}`; + } else { + // other options are provided + const otherOptions = Object.entries(cacheOptions).map(([key, value]) => `${key}=${value}`).join(","); + return `type=cache,${otherOptions}`; + } +} From 2df8be0a1904cf66155b3eb2f6fe6723ce7b8905 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Tue, 2 Apr 2024 15:36:39 -0700 Subject: [PATCH 2/6] test: test the id option for var/cache/apt Signed-off-by: Amin Yahyaabadi --- .github/workflows/test.yml | 5 ++++- README.md | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e46be37..a5ad934 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,7 +30,10 @@ jobs: skip-extraction: false cache-map: | { - "var-cache-apt": "/var/cache/apt", + "var-cache-apt": { + "target": "/var/cache/apt", + "id": "1" + }, "var-lib-apt": "/var/lib/apt" } diff --git a/README.md b/README.md index f0e4ecf..ada6b87 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,6 @@ Optionally, instead of a single string for the `target`, you can provide an obje { "var-cache-apt": { "target": "/var/cache/apt", - "sharing": "locked", "id": "1" }, "var-lib-apt": "/var/lib/apt" From cfc6f5e65bff1f25e77cf83a0fbfa218aa7550f9 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Tue, 2 Apr 2024 15:40:23 -0700 Subject: [PATCH 3/6] docs: update the version to v3.1.0 Signed-off-by: Amin Yahyaabadi --- README.md | 31 ++++++++++++++++++------------- package.json | 4 ++-- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index ada6b87..75100f3 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ jobs: key: cache-${{ hashFiles('.github/workflows/test/Dockerfile') }} - name: inject cache into docker - uses: reproducible-containers/buildkit-cache-dance@v3.0.0 + uses: reproducible-containers/buildkit-cache-dance@v3.1.0 with: cache-map: | { @@ -89,14 +89,19 @@ Real-world examples: Optionally, instead of a single string for the `target`, you can provide an object with additional options that should be passed to `--mount=type=cache` in the values `cache-map` JSON. The `target` path must be present in the object as a property. -```json -{ - "var-cache-apt": { - "target": "/var/cache/apt", - "id": "1" - }, - "var-lib-apt": "/var/lib/apt" -} +```yaml + - name: inject cache into docker + uses: reproducible-containers/buildkit-cache-dance@v3.1.0 + with: + cache-map: | + { + "var-cache-apt": { + "target": "/var/cache/apt", + "id": "1" + }, + "var-lib-apt": "/var/lib/apt" + } + skip-extraction: ${{ steps.cache.outputs.cache-hit }} ``` ## CLI Usage @@ -104,19 +109,19 @@ Optionally, instead of a single string for the `target`, you can provide an obje In other CI systems, you can run the script directly via `node`: ```shell -curl -LJO https://github.com/reproducible-containers/buildkit-cache-dance/archive/refs/tags/v3.0.0.tar.gz -tar xvf buildkit-cache-dance-3.0.0.tar.gz +curl -LJO https://github.com/reproducible-containers/buildkit-cache-dance/archive/refs/tags/v3.1.0.tar.gz +tar xvf buildkit-cache-dance-3.1.0.tar.gz ``` During injection: ```shell -node ./buildkit-cache-dance-3.0.0/dist/index.js --cache-map '{"var-cache-apt": "/var/cache/apt", "var-lib-apt": "/var/lib/apt"}' +node ./buildkit-cache-dance-3.1.0/dist/index.js --cache-map '{"var-cache-apt": "/var/cache/apt", "var-lib-apt": "/var/lib/apt"}' ``` After build during extraction: ```shell -node ./buildkit-cache-dance-3.0.0/dist/index.js --extract --cache-map '{"var-cache-apt": "/var/cache/apt", "var-lib-apt": "/var/lib/apt"}' +node ./buildkit-cache-dance-3.1.0/dist/index.js --extract --cache-map '{"var-cache-apt": "/var/cache/apt", "var-lib-apt": "/var/lib/apt"}' ``` Here are the available options: diff --git a/package.json b/package.json index f6ac45f..370fc66 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "buildkit-cache-dance", - "version": "3.0.0", - "description": "", + "version": "3.1.0", + "description": "Save `RUN --mount=type=cache` caches on GitHub Actions or other CI platforms", "main": "dist/index.js", "source": "src/index.ts", "type": "module", From 969118a114835a7170e667c9b3837e0e79b1648e Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Wed, 3 Apr 2024 11:37:04 -0700 Subject: [PATCH 4/6] fix: add defaults for the missing actions options Signed-off-by: Amin Yahyaabadi --- dist/index.js | 18 +++++++++--------- dist/index.js.map | 2 +- src/opts.ts | 13 +++++++------ 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/dist/index.js b/dist/index.js index 4c8874a..c81662e 100644 --- a/dist/index.js +++ b/dist/index.js @@ -684,10 +684,11 @@ $bbb9dac42384d004$exports.getState = $bbb9dac42384d004$var$getState; function $76d06fcdc9bff1f5$export$77714ac6976d0316(args) { const opts = (0, $ec42a3295e12ea98$export$2e2bcd8739ae039)(args, { default: { - "cache-map": (0, $bbb9dac42384d004$exports.getInput)("cache-map"), - "scratch-dir": (0, $bbb9dac42384d004$exports.getInput)("scratch-dir"), - "skip-extraction": (0, $bbb9dac42384d004$exports.getInput)("skip-extraction") === "true", - "extract": process.env[`STATE_POST`] !== undefined + "cache-map": (0, $bbb9dac42384d004$exports.getInput)("cache-map") || "{}", + "scratch-dir": (0, $bbb9dac42384d004$exports.getInput)("scratch-dir") || "scratch", + "skip-extraction": ((0, $bbb9dac42384d004$exports.getInput)("skip-extraction") || "false") === "true", + "extract": process.env[`STATE_POST`] !== undefined, + "help": false }, string: [ "cache-map", @@ -736,11 +737,10 @@ function $76d06fcdc9bff1f5$export$8550a4d7282a21d0(opts) { function $76d06fcdc9bff1f5$export$febacabd0d01c81(cacheOptions) { if (typeof cacheOptions === "string") // only the target path is provided return cacheOptions; - else // object is provided - try { - return cacheOptions.target; - } catch (e) { - throw new Error(`Expected the 'target' key in the cache options, got:\n${cacheOptions}\n${e}`); + else { + // object is provided + if ("target" in cacheOptions) return cacheOptions.target; + else throw new Error(`Expected the 'target' key in the cache options, got:\n${cacheOptions}`); } } function $76d06fcdc9bff1f5$export$238315f403b84074(cacheOptions) { diff --git a/dist/index.js.map b/dist/index.js.map index ccaa64c..e3da4b8 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iBAAiB;AACjB,4BAAM,IAAI,GAAG;;AAIb,SAAS,mCAAc,IAAI,EAAE,OAAO;IAClC,IAAI,UAAU,QAAQ,OAAO,KAAK,YAChC,QAAQ,OAAO,GAAG,QAAQ,GAAG,CAAC,OAAO;IAEvC,IAAI,CAAC,SACH,OAAO;IAGT,UAAU,QAAQ,KAAK,CAAC;IACxB,IAAI,QAAQ,OAAO,CAAC,QAAQ,IAC1B,OAAO;IAET,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,MAAM,EAAE,IAAK;QACvC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC,WAAW;QAC9B,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,OAAO,GAChD,OAAO;IAEX;IACA,OAAO;AACT;AAEA,SAAS,gCAAW,IAAI,EAAE,IAAI,EAAE,OAAO;IACrC,IAAI,CAAC,KAAK,cAAc,MAAM,CAAC,KAAK,MAAM,IACxC,OAAO;IAET,OAAO,mCAAa,MAAM;AAC5B;AAEA,SAAS,4BAAO,IAAI,EAAE,OAAO,EAAE,EAAE;IAC/B,YAAQ,MAAM,SAAU,EAAE,EAAE,IAAI;QAC9B,GAAG,IAAI,KAAK,QAAQ,gCAAU,MAAM,MAAM;IAC5C;AACF;AAEA,SAAS,2BAAM,IAAI,EAAE,OAAO;IAC1B,OAAO,gCAAU,gBAAY,OAAO,MAAM;AAC5C;;;;;ACzCA,iBAAiB;AACjB,4BAAM,IAAI,GAAG;;AAIb,SAAS,4BAAO,IAAI,EAAE,OAAO,EAAE,EAAE;IAC/B,YAAQ,MAAM,SAAU,EAAE,EAAE,IAAI;QAC9B,GAAG,IAAI,KAAK,QAAQ,gCAAU,MAAM;IACtC;AACF;AAEA,SAAS,2BAAM,IAAI,EAAE,OAAO;IAC1B,OAAO,gCAAU,gBAAY,OAAO;AACtC;AAEA,SAAS,gCAAW,IAAI,EAAE,OAAO;IAC/B,OAAO,KAAK,MAAM,MAAM,gCAAU,MAAM;AAC1C;AAEA,SAAS,gCAAW,IAAI,EAAE,OAAO;IAC/B,IAAI,MAAM,KAAK,IAAI;IACnB,IAAI,MAAM,KAAK,GAAG;IAClB,IAAI,MAAM,KAAK,GAAG;IAElB,IAAI,QAAQ,QAAQ,GAAG,KAAK,YAC1B,QAAQ,GAAG,GAAG,QAAQ,MAAM,IAAI,QAAQ,MAAM;IAChD,IAAI,QAAQ,QAAQ,GAAG,KAAK,YAC1B,QAAQ,GAAG,GAAG,QAAQ,MAAM,IAAI,QAAQ,MAAM;IAEhD,IAAI,IAAI,SAAS,OAAO;IACxB,IAAI,IAAI,SAAS,OAAO;IACxB,IAAI,IAAI,SAAS,OAAO;IACxB,IAAI,KAAK,IAAI;IAEb,IAAI,MAAM,AAAC,MAAM,KACf,AAAC,MAAM,KAAM,QAAQ,SACrB,AAAC,MAAM,KAAM,QAAQ,SACrB,AAAC,MAAM,MAAO,UAAU;IAE1B,OAAO;AACT;;;;;;;;AIxCA,SAAS,4BAAM,GAAG;IACjB,OAAO,OAAO,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,MAAM;QAAC;KAAI;AAC3D;AAEA,SAAS,4BAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI;IACjC,IAAI,GAAG,MAAI,GAAG,CAAC,IAAI,EAAE,MACpB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,OAAQ,OAAO,QAAQ,QAAQ,OAAO,KAAK,OAAO,OACvE,OAAO,QAAQ,YAAY,MAC3B,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,OAAQ,QAAQ,UAAU,QAAQ,QAAQ,UAAW,CAAA,IAAI,CAAC,CAAC,IAAI,CAAC,AAAC,CAAA,IAAI,CAAC,KAAI,IAAI,MAAM,CAAA,IAAK,IAAI,MAAK,CAAC,CAAC,GAAE,IAC9H,AAAC,CAAA,IAAI,CAAC,KAAI,IAAI,MAAM,CAAA,IAAK,IAAI;IAEhC,GAAG,CAAC,IAAI,GAAG,OAAO,OAAO,MAAO,MAAM,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO;QAAC;QAAK;KAAI;AAClF;AAEe,kDAAU,IAAI,EAAE,IAAI;IAClC,OAAO,QAAQ,EAAE;IACjB,OAAO,QAAQ,CAAC;IAEhB,IAAI,GAAG,KAAK,KAAK,MAAM,KAAK,MAAI;QAAE,GAAE,EAAE;IAAC;IACvC,IAAI,IAAE,GAAG,IAAE,GAAG,MAAI,GAAG,MAAI,KAAK,MAAM;IAEpC,MAAM,QAAQ,KAAK,KAAK,KAAK,KAAK;IAClC,MAAM,SAAS,KAAK,OAAO,KAAK,KAAK;IACrC,MAAM,WAAW,KAAK,OAAO,KAAK,KAAK;IAEvC,KAAK,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC;IAC5B,KAAK,MAAM,GAAG,4BAAM,KAAK,MAAM;IAC/B,KAAK,OAAO,GAAG,4BAAM,KAAK,OAAO;IAEjC,IAAI,OACH,IAAK,KAAK,KAAK,KAAK,CAAE;QACrB,MAAM,KAAK,KAAK,CAAC,EAAE,GAAG,4BAAM,KAAK,KAAK,CAAC,EAAE;QACzC,IAAK,IAAE,GAAG,IAAI,IAAI,MAAM,EAAE,IACzB,AAAC,CAAA,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC,EAAC,EAAG,MAAM,CAAC,GAAG;IAEjD;IAGD,IAAK,IAAE,KAAK,OAAO,CAAC,MAAM,EAAE,MAAM,GAAI;QACrC,MAAM,KAAK,KAAK,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QACvC,IAAK,IAAE,IAAI,MAAM,EAAE,MAAM,GAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACtD;IAEA,IAAK,IAAE,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAI;QACpC,MAAM,KAAK,KAAK,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACtC,IAAK,IAAE,IAAI,MAAM,EAAE,MAAM,GAAI,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACrD;IAEA,IAAI,UACH,IAAK,KAAK,KAAK,OAAO,CAAE;QACvB,OAAO,OAAO,KAAK,OAAO,CAAC,EAAE;QAC7B,MAAM,KAAK,KAAK,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE;QACzC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAChB,IAAK,IAAE,GAAG,IAAI,IAAI,MAAM,EAAE,IACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAExB;IACD;IAGD,MAAM,OAAO,SAAS,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;IAElD,IAAK,IAAE,GAAG,IAAI,KAAK,IAAK;QACvB,MAAM,IAAI,CAAC,EAAE;QAEb,IAAI,QAAQ,MAAM;YACjB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE;YAClC;QACD;QAEA,IAAK,IAAE,GAAG,IAAI,IAAI,MAAM,EAAE,IAAK;YAC9B,IAAI,IAAI,UAAU,CAAC,OAAO,IAAI,OAAO,MAAM;QAC5C;QAEA,IAAI,MAAM,GACT,IAAI,CAAC,CAAC,IAAI,CAAC;aACL,IAAI,IAAI,SAAS,CAAC,GAAG,IAAI,OAAO,OAAO;YAC7C,OAAO,IAAI,SAAS,CAAC,IAAI;YACzB,IAAI,UAAU,CAAC,CAAC,KAAK,OAAO,CAAC,OAC5B,OAAO,KAAK,OAAO,CAAC;YAErB,GAAG,CAAC,KAAK,GAAG;QACb,OAAO;YACN,IAAK,MAAI,IAAE,GAAG,MAAM,IAAI,MAAM,EAAE,MAAO;gBACtC,IAAI,IAAI,UAAU,CAAC,SAAS,IAAI,OAAO,MAAM;YAC9C;YAEA,OAAO,IAAI,SAAS,CAAC,GAAG;YACxB,MAAM,IAAI,SAAS,CAAC,EAAE,QAAS,IAAE,MAAM,OAAO,AAAC,CAAA,KAAG,IAAI,CAAC,IAAE,EAAE,AAAD,EAAG,UAAU,CAAC,OAAO,MAAM,IAAI,CAAC,EAAE,EAAE;YAC9F,MAAO,MAAM,IAAI;gBAAC;aAAK,GAAG;YAE1B,IAAK,MAAI,GAAG,MAAM,IAAI,MAAM,EAAE,MAAO;gBACpC,OAAO,GAAG,CAAC,IAAI;gBACf,IAAI,UAAU,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,OAAO,KAAK,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK;gBACxE,4BAAM,KAAK,MAAM,AAAC,MAAM,IAAI,IAAI,MAAM,IAAK,KAAK;YACjD;QACD;IACD;IAEA,IAAI,UAAU;QACb,IAAK,KAAK,KAAK,OAAO,CACrB,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK,GACnB,GAAG,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,EAAE;IAG3B;IAEA,IAAI,OACH,IAAK,KAAK,IAAK;QACd,MAAM,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE;QACzB,MAAO,IAAI,MAAM,GAAG,EACnB,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;IAE3B;IAGD,OAAO;AACR;;;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,I,kC,A,6B,0B,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;A,O,c,C,2B,c;I,O;A;A,0B,Q,G,0B,S,G,0B,K,G,0B,Q,G,0B,U,G,0B,I,G,0B,M,G,0B,O,G,0B,K,G,0B,K,G,0B,O,G,0B,S,G,0B,c,G,0B,S,G,0B,e,G,0B,iB,G,0B,Q,G,0B,O,G,0B,S,G,0B,c,G,0B,Q,G,K;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,K,G,0B,Y,G,K;;AItHA,MAAA,2BAAA,mCAAA;;A;AEAA,mCAAmC;AACnC,qDAAA,G,O,c,C,2B,c;I,O;A;A,0B,mB,G,0B,c,G,K;AAKA;;;CAGG,GACH,SAAgB,qCAAe,KAAU;IACvC,IAAI,UAAU,QAAQ,UAAU,WAC9B,OAAO;SACF,IAAI,OAAO,UAAU,YAAY,iBAAiB,QACvD,OAAO;IAET,OAAO,KAAK,SAAS,CAAC;AACxB;AAPA,0BAAA,cAAA,GAAA;AASA;;;;;CAKG,GACH,SAAgB,0CACd,oBAA0C;IAE1C,IAAI,CAAC,OAAO,IAAI,CAAC,sBAAsB,MAAM,EAC3C,OAAO,CAAA;IAGT,OAAO;QACL,OAAO,qBAAqB,KAAK;QACjC,MAAM,qBAAqB,SAAS;QACpC,SAAS,qBAAqB,OAAO;QACrC,KAAK,qBAAqB,WAAW;QACrC,WAAW,qBAAqB,SAAS;IAC1C;AACH;AAdA,0BAAA,mBAAA,GAAA;;;AFbA;;;;;;;;;CASG,GACH,SAAgB,mCACd,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,MAAM,IAAI,8BAAQ,SAAS,YAAY;IAC7C,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,KAAK,yBAAG,GAAG;AAC9C;AAPA,0BAAA,YAAA,GAAA;AASA,SAAgB,4BAAM,IAAY,EAAE,UAAU,EAAE;IAC9C,mCAAa,MAAM,CAAA,GAAI;AACzB;AAFA,0BAAA,KAAA,GAAA;AAIA,MAAM,mCAAa;AAEnB,MAAM;IAKJ,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe,CAA3E;QACE,IAAI,CAAC,SACH,UAAU;QAGZ,IAAI,CAAC,OAAO,GAAG;QACf,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,OAAO,GAAG;IACjB;IAEA,WAAA;QACE,IAAI,SAAS,mCAAa,IAAI,CAAC,OAAO;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG;YAC9D,UAAU;YACV,IAAI,QAAQ;YACZ,IAAK,MAAM,OAAO,IAAI,CAAC,UAAU,CAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM;gBACvC,MAAM,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI;gBAChC,IAAI,KAAK;oBACP,IAAI,OACF,QAAQ;yBAER,UAAU;oBAGZ,UAAU,CAAA,EAAG,IAAG,CAAA,EAAI,qCAAe,KAAI,CAAE;gBAC1C;YACF;QAEJ;QAED,UAAU,CAAA,EAAG,iCAAU,EAAG,iCAAW,IAAI,CAAC,OAAO,EAAC,CAAE;QACpD,OAAO;IACT;AACD;AAED,SAAS,iCAAW,CAAM;IACxB,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO;AACpB;AAEA,SAAS,qCAAe,CAAM;IAC5B,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,MAAM;AACnB;;;;A;AI7FA,uCAAuC;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,Y,G,K;;AAEvC,mCAAmC;AACnC,qDAAA,GAEA,MAAA,2BAAA,mCAAA;;AACA,MAAA,2BAAA,mCAAA;;AAGA,SAAgB,mCAAa,OAAe,EAAE,OAAY;IACxD,MAAM,WAAW,QAAQ,GAAG,CAAC,CAAA,OAAA,EAAU,QAAO,CAAE,CAAC;IACjD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,CAAA,qDAAA,EAAwD,QAAO,CAAE;IAGrE,IAAI,CAAC,yBAAG,UAAU,CAAC,WACjB,MAAM,IAAI,MAAM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","sources":["node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","src/index.ts","src/inject-cache.ts","src/opts.ts","node_modules/.pnpm/mri@1.2.0/node_modules/mri/lib/index.mjs","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/core.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/core.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/command.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/utils.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/utils.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/file-command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/file-command.ts","src/run.ts","node_modules/.pnpm/spawn-please@3.0.0/node_modules/spawn-please/src/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js","node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js","node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js","src/extract-cache.ts"],"sourcesContent":["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","import fs from \"fs/promises\";\nimport os from \"os\";\nimport { injectCaches } from \"./inject-cache.js\";\nimport { extractCaches } from \"./extract-cache.js\";\nimport { help, parseOpts } from \"./opts.js\";\n\nasync function main(args: string[]) {\n const opts = parseOpts(args);\n\n if (opts.help) {\n return help();\n }\n\n if (opts.extract) {\n // Run the post step\n await extractCaches(opts);\n } else {\n // Otherwise, this is the main step\n if (process.env.GITHUB_STATE !== undefined) {\n await fs.appendFile(process.env.GITHUB_STATE, `POST=true${os.EOL}`);\n }\n await injectCaches(opts);\n }\n}\n\ntry {\n await main(process.argv);\n} catch (err) {\n console.error(err);\n if (err instanceof Error) {\n console.error(err.stack);\n }\n process.exit(1);\n}\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js';\nimport { run } from './run.js';\nimport { notice } from '@actions/core';\n\nasync function injectCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) {\n // Clean Scratch Directory\n await fs.rm(scratchDir, { recursive: true, force: true });\n await fs.mkdir(scratchDir, { recursive: true });\n\n // Prepare Cache Source Directory\n await fs.mkdir(cacheSource, { recursive: true });\n\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(cacheSource, 'buildstamp'), date);\n\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n // Prepare Dancefile to Access Caches\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n --mount=type=bind,source=.,target=/var/dance-cache \\\n cp -p -R /var/dance-cache/. ${targetPath} || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.inject'), dancefileContent);\n console.log(dancefileContent);\n\n // Inject Data into Docker Cache\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.inject'), '--tag', 'dance:inject', cacheSource]);\n\n // Clean Directories\n try {\n await fs.rm(cacheSource, { recursive: true, force: true });\n } catch (err) {\n // Ignore Cleaning Errors\n notice(`Error while cleaning cache source directory: ${err}. Ignoring...`);\n }\n}\n\n\nexport async function injectCaches(opts: Opts) {\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Inject Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await injectCache(cacheSource, cacheOptions, scratchDir);\n }\n}\n","import mri from 'mri';\nimport { getInput, warning } from '@actions/core';\n\nexport type Opts = {\n \"extract\": boolean\n \"cache-map\": string\n \"scratch-dir\": string\n \"skip-extraction\": boolean\n help: boolean\n /** @deprecated Use `cache-map` instead */\n \"cache-source\"?: string\n /** @deprecated Use `cache-map` instead */\n \"cache-target\"?: string\n}\n\nexport function parseOpts(args: string[]): mri.Argv {\n const opts = mri(args, {\n default: {\n \"cache-map\": getInput(\"cache-map\"),\n \"scratch-dir\": getInput(\"scratch-dir\"),\n \"skip-extraction\": getInput(\"skip-extraction\") === \"true\",\n \"extract\": process.env[`STATE_POST`] !== undefined,\n },\n string: [\"cache-map\", \"scratch-dir\", \"cache-source\", \"cache-target\"],\n boolean: [\"skip-extraction\", \"help\", \"extract\"],\n alias: {\n \"help\": [\"h\"],\n },\n })\n\n if (opts[\"cache-source\"] && opts[\"cache-target\"]) {\n warning(\"The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead.\")\n\n opts[\"cache-map\"] = JSON.stringify({\n [opts[\"cache-source\"]]: opts[\"cache-target\"],\n });\n }\n\n return opts;\n}\n\nexport function help() {\n console.log(`build-cache-dance [options]\nSave 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms\n\nOptions:\n --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step)\n --cache-map The map of actions source paths to container destination paths or mount arguments\n --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch'\n --skip-extraction Skip the extraction of the cache from the docker container\n --help Show this help\n`);\n}\n\nexport type SourcePath = string\nexport type TargetPath = string\nexport type ToStringable = {\n toString(): string;\n}\nexport type CacheOptions = TargetPath | { target: TargetPath } & Record\nexport type CacheMap = Record\n\nexport function getCacheMap(opts: Opts): CacheMap {\n try {\n return JSON.parse(opts[\"cache-map\"]) as CacheMap;\n } catch (e) {\n throw new Error(`Failed to parse cache map. Expected JSON, got:\\n${opts[\"cache-map\"]}\\n${e}`);\n }\n}\n\nexport function getTargetPath(cacheOptions: CacheOptions): TargetPath {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return cacheOptions;\n } else {\n // object is provided\n try {\n return cacheOptions.target;\n } catch (e) {\n throw new Error(`Expected the 'target' key in the cache options, got:\\n${cacheOptions}\\n${e}`);\n }\n }\n}\n\n/**\n * Convert a cache options to a string that is passed to --mount=\n * @param CacheOptions The cache options to convert to a string\n */\nexport function getMountArgsString(cacheOptions: CacheOptions): string {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return `type=cache,target=${cacheOptions}`;\n } else {\n // other options are provided\n const otherOptions = Object.entries(cacheOptions).map(([key, value]) => `${key}=${value}`).join(\",\");\n return `type=cache,${otherOptions}`;\n }\n}\n","function toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nexport default function (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n",null,null,null,null,null,null,null,null,"import spawnPlease from 'spawn-please'\nimport cp, { type SpawnOptions, type ChildProcess } from 'child_process';\n\nexport async function run(command: string, args: string[]) {\n try {\n return await spawnPlease(command, args);\n } catch (error) {\n console.error(`Error running command: ${command} ${args.join(' ')}`);\n throw error;\n }\n}\n\nexport async function runPiped([commannd1, args1]: [string, string[]], [command2, args2]: [string, string[]]) {\n const cp1 = cp.spawn(commannd1, args1, { stdio: ['inherit', 'pipe', 'inherit'] });\n const cp2 = cp.spawn(command2, args2, { stdio: ['pipe', 'inherit', 'inherit'] });\n\n cp1.stdout.pipe(cp2.stdin);\n\n await Promise.all([assertSuccess(cp1), assertSuccess(cp2)]);\n}\n\nfunction assertSuccess(cp: ChildProcess) {\n return new Promise((resolve, reject) => {\n cp.on('error', (error) => {\n reject(error);\n });\n cp.on('close', (code) => {\n if (code !== 0) {\n reject(new Error(`process exited with code ${code}`));\n }\n resolve();\n });\n });\n}\n","const spawn = require('cross-spawn')\n\n/** Spawns a child process, as long as you ask nicely.\n * \n * @param {string} command - The shell command to execute.\n * @param {string[]} [args] - An array of arguments that are given after the command.\n * @param {{ rejectOnError?: boolean, stdin?: string, stderr?: (data: string) => void, stdout?: (data: string) => void }} [options] - Options.\n * @param {any} [spawnOptions] - Options that are passed directly to child_process.spawn. Also supports stdin: string.\n * @returns {Promise<{ stdout: string, stderr: string }>}\n */\nconst spawnPlease = (command, args, options={}, spawnOptions={}) => {\n // defaults\n if (options.rejectOnError === undefined) {\n options.rejectOnError = true\n }\n\n let stdout = ''\n let stderr = ''\n const child = spawn(command, args, spawnOptions)\n\n return new Promise((resolve, reject) => {\n if (options.stdin !== undefined && options.stdin != null) {\n child.stdin.write(options.stdin)\n }\n child.stdin.end()\n\n child.stdout.on('data', data => {\n stdout += data\n if (options.stdout) options.stdout(data)\n })\n\n child.stderr.on('data', data => {\n stderr += data\n if (options.stderr) options.stderr(data)\n })\n\n if (options.rejectOnError) {\n child.addListener('error', reject)\n }\n\n child.on('close', code => {\n if (code !== 0 && options.rejectOnError) {\n reject(stderr)\n } else {\n resolve({ stdout, stderr })\n }\n })\n })\n}\n\nmodule.exports = spawnPlease\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js';\nimport { run, runPiped } from './run.js';\nimport { spawn } from 'child_process';\n\nasync function extractCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) {\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(scratchDir, 'buildstamp'), date);\n\n // Prepare Dancefile to Access Caches\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n mkdir -p /var/dance-cache/ \\\n && cp -p -R ${targetPath}/. /var/dance-cache/ || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.extract'), dancefileContent);\n console.log(dancefileContent);\n\n // Extract Data into Docker Image\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.extract'), '--tag', 'dance:extract', '--load', scratchDir]);\n\n // Create Extraction Image\n try {\n await run('docker', ['rm', '-f', 'cache-container']);\n } catch (error) {\n // Ignore error if container does not exist\n }\n await run('docker', ['create', '-ti', '--name', 'cache-container', 'dance:extract']);\n\n // Unpack Docker Image into Scratch\n await runPiped(\n ['docker', ['cp', '-L', 'cache-container:/var/dance-cache', '-']],\n ['tar', ['-H', 'posix', '-x', '-C', scratchDir]]\n );\n\n // Move Cache into Its Place\n await fs.rm(cacheSource, { recursive: true, force: true });\n await fs.rename(path.join(scratchDir, 'dance-cache'), cacheSource);\n}\n\nexport async function extractCaches(opts: Opts) {\n if (opts[\"skip-extraction\"]) {\n console.log(\"skip-extraction is set. Skipping extraction step...\");\n return;\n }\n\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Extract Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await extractCache(cacheSource, cacheOptions, scratchDir);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file +{"mappings":"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;QACd,MAAM,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE;QACzB,MAAO,IAAI,MAAM,GAAG,EACnB,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;IAE3B;IAGD,OAAO;AACR;;;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,I,kC,A,6B,0B,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;A,O,c,C,2B,c;I,O;A;A,0B,Q,G,0B,S,G,0B,K,G,0B,Q,G,0B,U,G,0B,I,G,0B,M,G,0B,O,G,0B,K,G,0B,K,G,0B,O,G,0B,S,G,0B,c,G,0B,S,G,0B,e,G,0B,iB,G,0B,Q,G,0B,O,G,0B,S,G,0B,c,G,0B,Q,G,K;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,K,G,0B,Y,G,K;;AItHA,MAAA,2BAAA,mCAAA;;A;AEAA,mCAAmC;AACnC,qDAAA,G,O,c,C,2B,c;I,O;A;A,0B,mB,G,0B,c,G,K;AAKA;;;CAGG,GACH,SAAgB,qCAAe,KAAU;IACvC,IAAI,UAAU,QAAQ,UAAU,WAC9B,OAAO;SACF,IAAI,OAAO,UAAU,YAAY,iBAAiB,QACvD,OAAO;IAET,OAAO,KAAK,SAAS,CAAC;AACxB;AAPA,0BAAA,cAAA,GAAA;AASA;;;;;CAKG,GACH,SAAgB,0CACd,oBAA0C;IAE1C,IAAI,CAAC,OAAO,IAAI,CAAC,sBAAsB,MAAM,EAC3C,OAAO,CAAA;IAGT,OAAO;QACL,OAAO,qBAAqB,KAAK;QACjC,MAAM,qBAAqB,SAAS;QACpC,SAAS,qBAAqB,OAAO;QACrC,KAAK,qBAAqB,WAAW;QACrC,WAAW,qBAAqB,SAAS;IAC1C;AACH;AAdA,0BAAA,mBAAA,GAAA;;;AFbA;;;;;;;;;CASG,GACH,SAAgB,mCACd,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,MAAM,IAAI,8BAAQ,SAAS,YAAY;IAC7C,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,KAAK,yBAAG,GAAG;AAC9C;AAPA,0BAAA,YAAA,GAAA;AASA,SAAgB,4BAAM,IAAY,EAAE,UAAU,EAAE;IAC9C,mCAAa,MAAM,CAAA,GAAI;AACzB;AAFA,0BAAA,KAAA,GAAA;AAIA,MAAM,mCAAa;AAEnB,MAAM;IAKJ,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe,CAA3E;QACE,IAAI,CAAC,SACH,UAAU;QAGZ,IAAI,CAAC,OAAO,GAAG;QACf,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,OAAO,GAAG;IACjB;IAEA,WAAA;QACE,IAAI,SAAS,mCAAa,IAAI,CAAC,OAAO;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG;YAC9D,UAAU;YACV,IAAI,QAAQ;YACZ,IAAK,MAAM,OAAO,IAAI,CAAC,UAAU,CAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM;gBACvC,MAAM,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI;gBAChC,IAAI,KAAK;oBACP,IAAI,OACF,QAAQ;yBAER,UAAU;oBAGZ,UAAU,CAAA,EAAG,IAAG,CAAA,EAAI,qCAAe,KAAI,CAAE;gBAC1C;YACF;QAEJ;QAED,UAAU,CAAA,EAAG,iCAAU,EAAG,iCAAW,IAAI,CAAC,OAAO,EAAC,CAAE;QACpD,OAAO;IACT;AACD;AAED,SAAS,iCAAW,CAAM;IACxB,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO;AACpB;AAEA,SAAS,qCAAe,CAAM;IAC5B,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,MAAM;AACnB;;;;A;AI7FA,uCAAuC;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,Y,G,K;;AAEvC,mCAAmC;AACnC,qDAAA,GAEA,MAAA,2BAAA,mCAAA;;AACA,MAAA,2BAAA,mCAAA;;AAGA,SAAgB,mCAAa,OAAe,EAAE,OAAY;IACxD,MAAM,WAAW,QAAQ,GAAG,CAAC,CAAA,OAAA,EAAU,QAAO,CAAE,CAAC;IACjD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,CAAA,qDAAA,EAAwD,QAAO,CAAE;IAGrE,IAAI,CAAC,yBAAG,UAAU,CAAC,WACjB,MAAM,IAAI,MAAM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","sources":["node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","src/index.ts","src/inject-cache.ts","src/opts.ts","node_modules/.pnpm/mri@1.2.0/node_modules/mri/lib/index.mjs","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/core.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/core.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/command.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/utils.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/utils.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/file-command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/file-command.ts","src/run.ts","node_modules/.pnpm/spawn-please@3.0.0/node_modules/spawn-please/src/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js","node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js","node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js","src/extract-cache.ts"],"sourcesContent":["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","import fs from \"fs/promises\";\nimport os from \"os\";\nimport { injectCaches } from \"./inject-cache.js\";\nimport { extractCaches } from \"./extract-cache.js\";\nimport { help, parseOpts } from \"./opts.js\";\n\nasync function main(args: string[]) {\n const opts = parseOpts(args);\n\n if (opts.help) {\n return help();\n }\n\n if (opts.extract) {\n // Run the post step\n await extractCaches(opts);\n } else {\n // Otherwise, this is the main step\n if (process.env.GITHUB_STATE !== undefined) {\n await fs.appendFile(process.env.GITHUB_STATE, `POST=true${os.EOL}`);\n }\n await injectCaches(opts);\n }\n}\n\ntry {\n await main(process.argv);\n} catch (err) {\n console.error(err);\n if (err instanceof Error) {\n console.error(err.stack);\n }\n process.exit(1);\n}\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js';\nimport { run } from './run.js';\nimport { notice } from '@actions/core';\n\nasync function injectCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) {\n // Clean Scratch Directory\n await fs.rm(scratchDir, { recursive: true, force: true });\n await fs.mkdir(scratchDir, { recursive: true });\n\n // Prepare Cache Source Directory\n await fs.mkdir(cacheSource, { recursive: true });\n\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(cacheSource, 'buildstamp'), date);\n\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n // Prepare Dancefile to Access Caches\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n --mount=type=bind,source=.,target=/var/dance-cache \\\n cp -p -R /var/dance-cache/. ${targetPath} || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.inject'), dancefileContent);\n console.log(dancefileContent);\n\n // Inject Data into Docker Cache\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.inject'), '--tag', 'dance:inject', cacheSource]);\n\n // Clean Directories\n try {\n await fs.rm(cacheSource, { recursive: true, force: true });\n } catch (err) {\n // Ignore Cleaning Errors\n notice(`Error while cleaning cache source directory: ${err}. Ignoring...`);\n }\n}\n\n\nexport async function injectCaches(opts: Opts) {\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Inject Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await injectCache(cacheSource, cacheOptions, scratchDir);\n }\n}\n","import mri from 'mri';\nimport { getInput, warning } from '@actions/core';\n\nexport type Opts = {\n \"extract\": boolean\n \"cache-map\": string\n \"scratch-dir\": string\n \"skip-extraction\": boolean\n help: boolean\n /** @deprecated Use `cache-map` instead */\n \"cache-source\"?: string\n /** @deprecated Use `cache-map` instead */\n \"cache-target\"?: string\n}\n\nexport function parseOpts(args: string[]): mri.Argv {\n const opts = mri(args, {\n default: {\n \"cache-map\": getInput(\"cache-map\") || \"{}\",\n \"scratch-dir\": getInput(\"scratch-dir\") || \"scratch\",\n \"skip-extraction\": (getInput(\"skip-extraction\") || \"false\") === \"true\",\n \"extract\": process.env[`STATE_POST`] !== undefined,\n \"help\": false,\n },\n string: [\"cache-map\", \"scratch-dir\", \"cache-source\", \"cache-target\"],\n boolean: [\"skip-extraction\", \"help\", \"extract\"],\n alias: {\n \"help\": [\"h\"],\n },\n })\n\n if (opts[\"cache-source\"] && opts[\"cache-target\"]) {\n warning(\"The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead.\")\n\n opts[\"cache-map\"] = JSON.stringify({\n [opts[\"cache-source\"]]: opts[\"cache-target\"],\n });\n }\n\n return opts;\n}\n\nexport function help() {\n console.log(`build-cache-dance [options]\nSave 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms\n\nOptions:\n --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step)\n --cache-map The map of actions source paths to container destination paths or mount arguments\n --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch'\n --skip-extraction Skip the extraction of the cache from the docker container\n --help Show this help\n`);\n}\n\nexport type SourcePath = string\nexport type TargetPath = string\nexport type ToStringable = {\n toString(): string;\n}\nexport type CacheOptions = TargetPath | { target: TargetPath } & Record\nexport type CacheMap = Record\n\nexport function getCacheMap(opts: Opts): CacheMap {\n try {\n return JSON.parse(opts[\"cache-map\"]) as CacheMap;\n } catch (e) {\n throw new Error(`Failed to parse cache map. Expected JSON, got:\\n${opts[\"cache-map\"]}\\n${e}`);\n }\n}\n\nexport function getTargetPath(cacheOptions: CacheOptions): TargetPath {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return cacheOptions;\n } else {\n // object is provided\n if (\"target\" in cacheOptions) {\n return cacheOptions.target;\n } else {\n throw new Error(`Expected the 'target' key in the cache options, got:\\n${cacheOptions}`);\n }\n }\n}\n\n/**\n * Convert a cache options to a string that is passed to --mount=\n * @param CacheOptions The cache options to convert to a string\n */\nexport function getMountArgsString(cacheOptions: CacheOptions): string {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return `type=cache,target=${cacheOptions}`;\n } else {\n // other options are provided\n const otherOptions = Object.entries(cacheOptions).map(([key, value]) => `${key}=${value}`).join(\",\");\n return `type=cache,${otherOptions}`;\n }\n}\n","function toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nexport default function (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n",null,null,null,null,null,null,null,null,"import spawnPlease from 'spawn-please'\nimport cp, { type SpawnOptions, type ChildProcess } from 'child_process';\n\nexport async function run(command: string, args: string[]) {\n try {\n return await spawnPlease(command, args);\n } catch (error) {\n console.error(`Error running command: ${command} ${args.join(' ')}`);\n throw error;\n }\n}\n\nexport async function runPiped([commannd1, args1]: [string, string[]], [command2, args2]: [string, string[]]) {\n const cp1 = cp.spawn(commannd1, args1, { stdio: ['inherit', 'pipe', 'inherit'] });\n const cp2 = cp.spawn(command2, args2, { stdio: ['pipe', 'inherit', 'inherit'] });\n\n cp1.stdout.pipe(cp2.stdin);\n\n await Promise.all([assertSuccess(cp1), assertSuccess(cp2)]);\n}\n\nfunction assertSuccess(cp: ChildProcess) {\n return new Promise((resolve, reject) => {\n cp.on('error', (error) => {\n reject(error);\n });\n cp.on('close', (code) => {\n if (code !== 0) {\n reject(new Error(`process exited with code ${code}`));\n }\n resolve();\n });\n });\n}\n","const spawn = require('cross-spawn')\n\n/** Spawns a child process, as long as you ask nicely.\n * \n * @param {string} command - The shell command to execute.\n * @param {string[]} [args] - An array of arguments that are given after the command.\n * @param {{ rejectOnError?: boolean, stdin?: string, stderr?: (data: string) => void, stdout?: (data: string) => void }} [options] - Options.\n * @param {any} [spawnOptions] - Options that are passed directly to child_process.spawn. Also supports stdin: string.\n * @returns {Promise<{ stdout: string, stderr: string }>}\n */\nconst spawnPlease = (command, args, options={}, spawnOptions={}) => {\n // defaults\n if (options.rejectOnError === undefined) {\n options.rejectOnError = true\n }\n\n let stdout = ''\n let stderr = ''\n const child = spawn(command, args, spawnOptions)\n\n return new Promise((resolve, reject) => {\n if (options.stdin !== undefined && options.stdin != null) {\n child.stdin.write(options.stdin)\n }\n child.stdin.end()\n\n child.stdout.on('data', data => {\n stdout += data\n if (options.stdout) options.stdout(data)\n })\n\n child.stderr.on('data', data => {\n stderr += data\n if (options.stderr) options.stderr(data)\n })\n\n if (options.rejectOnError) {\n child.addListener('error', reject)\n }\n\n child.on('close', code => {\n if (code !== 0 && options.rejectOnError) {\n reject(stderr)\n } else {\n resolve({ stdout, stderr })\n }\n })\n })\n}\n\nmodule.exports = spawnPlease\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js';\nimport { run, runPiped } from './run.js';\nimport { spawn } from 'child_process';\n\nasync function extractCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) {\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(scratchDir, 'buildstamp'), date);\n\n // Prepare Dancefile to Access Caches\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n mkdir -p /var/dance-cache/ \\\n && cp -p -R ${targetPath}/. /var/dance-cache/ || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.extract'), dancefileContent);\n console.log(dancefileContent);\n\n // Extract Data into Docker Image\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.extract'), '--tag', 'dance:extract', '--load', scratchDir]);\n\n // Create Extraction Image\n try {\n await run('docker', ['rm', '-f', 'cache-container']);\n } catch (error) {\n // Ignore error if container does not exist\n }\n await run('docker', ['create', '-ti', '--name', 'cache-container', 'dance:extract']);\n\n // Unpack Docker Image into Scratch\n await runPiped(\n ['docker', ['cp', '-L', 'cache-container:/var/dance-cache', '-']],\n ['tar', ['-H', 'posix', '-x', '-C', scratchDir]]\n );\n\n // Move Cache into Its Place\n await fs.rm(cacheSource, { recursive: true, force: true });\n await fs.rename(path.join(scratchDir, 'dance-cache'), cacheSource);\n}\n\nexport async function extractCaches(opts: Opts) {\n if (opts[\"skip-extraction\"]) {\n console.log(\"skip-extraction is set. Skipping extraction step...\");\n return;\n }\n\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Extract Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await extractCache(cacheSource, cacheOptions, scratchDir);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file diff --git a/src/opts.ts b/src/opts.ts index 6a3c681..a035d80 100644 --- a/src/opts.ts +++ b/src/opts.ts @@ -16,10 +16,11 @@ export type Opts = { export function parseOpts(args: string[]): mri.Argv { const opts = mri(args, { default: { - "cache-map": getInput("cache-map"), - "scratch-dir": getInput("scratch-dir"), - "skip-extraction": getInput("skip-extraction") === "true", + "cache-map": getInput("cache-map") || "{}", + "scratch-dir": getInput("scratch-dir") || "scratch", + "skip-extraction": (getInput("skip-extraction") || "false") === "true", "extract": process.env[`STATE_POST`] !== undefined, + "help": false, }, string: ["cache-map", "scratch-dir", "cache-source", "cache-target"], boolean: ["skip-extraction", "help", "extract"], @@ -74,10 +75,10 @@ export function getTargetPath(cacheOptions: CacheOptions): TargetPath { return cacheOptions; } else { // object is provided - try { + if ("target" in cacheOptions) { return cacheOptions.target; - } catch (e) { - throw new Error(`Expected the 'target' key in the cache options, got:\n${cacheOptions}\n${e}`); + } else { + throw new Error(`Expected the 'target' key in the cache options, got:\n${cacheOptions}`); } } } From d2e9ac74638c470b0ca1ba99c9d21628d7aeb058 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Wed, 3 Apr 2024 11:41:40 -0700 Subject: [PATCH 5/6] test: add unit tests for the opts functions Signed-off-by: Amin Yahyaabadi --- .../workflows/{test.yml => actions-test.yml} | 4 +- .../{check-dist.yml => unit-tests.yml} | 8 +- package.json | 6 +- pnpm-lock.yaml | 870 +++++++++++++++++- tests/opts.test.ts | 96 ++ 5 files changed, 971 insertions(+), 13 deletions(-) rename .github/workflows/{test.yml => actions-test.yml} (97%) rename .github/workflows/{check-dist.yml => unit-tests.yml} (92%) create mode 100644 tests/opts.test.ts diff --git a/.github/workflows/test.yml b/.github/workflows/actions-test.yml similarity index 97% rename from .github/workflows/test.yml rename to .github/workflows/actions-test.yml index a5ad934..c3cf31d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/actions-test.yml @@ -1,10 +1,10 @@ --- -name: Test +name: Actions Test on: push: pull_request: jobs: - test: + actions_test: runs-on: ubuntu-22.04 timeout-minutes: 10 steps: diff --git a/.github/workflows/check-dist.yml b/.github/workflows/unit-tests.yml similarity index 92% rename from .github/workflows/check-dist.yml rename to .github/workflows/unit-tests.yml index 5b6037d..bd34117 100644 --- a/.github/workflows/check-dist.yml +++ b/.github/workflows/unit-tests.yml @@ -1,4 +1,4 @@ -name: Check Dist +name: Tests on: pull_request: @@ -8,8 +8,7 @@ permissions: contents: read jobs: - check-dist: - name: Check dist/ + tests: runs-on: ubuntu-latest steps: @@ -44,3 +43,6 @@ jobs: name: dist path: dist/ retention-days: 10 + + - name: Run Tests + run: pnpm run test diff --git a/package.json b/package.json index 370fc66..cc0441d 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "type": "module", "scripts": { "build": "parcel build", - "prepare": "npm run build" + "prepare": "npm run build", + "test": "vitest" }, "keywords": [ "buildkit", @@ -25,7 +26,8 @@ "devDependencies": { "@types/node": "^20.11.30", "parcel": "^2.12.0", - "typescript": "^5.4.3" + "typescript": "^5.4.3", + "vitest": "^1.4.0" }, "dependencies": { "@actions/core": "~1.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c01fdac..160bad0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,6 +25,9 @@ devDependencies: typescript: specifier: ^5.4.3 version: 5.4.3 + vitest: + specifier: ^1.4.0 + version: 1.4.0(@types/node@20.11.30) packages: @@ -55,6 +58,224 @@ packages: picocolors: 1.0.0 dev: true + /@esbuild/aix-ppc64@0.20.2: + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.20.2: + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.20.2: + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.20.2: + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.20.2: + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.20.2: + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.20.2: + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.20.2: + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.20.2: + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.20.2: + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.20.2: + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + /@lezer/common@1.2.1: resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==} dev: true @@ -1031,6 +1252,130 @@ packages: nullthrows: 1.1.1 dev: true + /@rollup/rollup-android-arm-eabi@4.14.0: + resolution: {integrity: sha512-jwXtxYbRt1V+CdQSy6Z+uZti7JF5irRKF8hlKfEnF/xJpcNGuuiZMBvuoYM+x9sr9iWGnzrlM0+9hvQ1kgkf1w==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.14.0: + resolution: {integrity: sha512-fI9nduZhCccjzlsA/OuAwtFGWocxA4gqXGTLvOyiF8d+8o0fZUeSztixkYjcGq1fGZY3Tkq4yRvHPFxU+jdZ9Q==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.14.0: + resolution: {integrity: sha512-BcnSPRM76/cD2gQC+rQNGBN6GStBs2pl/FpweW8JYuz5J/IEa0Fr4AtrPv766DB/6b2MZ/AfSIOSGw3nEIP8SA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.14.0: + resolution: {integrity: sha512-LDyFB9GRolGN7XI6955aFeI3wCdCUszFWumWU0deHA8VpR3nWRrjG6GtGjBrQxQKFevnUTHKCfPR4IvrW3kCgQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.14.0: + resolution: {integrity: sha512-ygrGVhQP47mRh0AAD0zl6QqCbNsf0eTo+vgwkY6LunBcg0f2Jv365GXlDUECIyoXp1kKwL5WW6rsO429DBY/bA==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.14.0: + resolution: {integrity: sha512-x+uJ6MAYRlHGe9wi4HQjxpaKHPM3d3JjqqCkeC5gpnnI6OWovLdXTpfa8trjxPLnWKyBsSi5kne+146GAxFt4A==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.14.0: + resolution: {integrity: sha512-nrRw8ZTQKg6+Lttwqo6a2VxR9tOroa2m91XbdQ2sUUzHoedXlsyvY1fN4xWdqz8PKmf4orDwejxXHjh7YBGUCA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.14.0: + resolution: {integrity: sha512-xV0d5jDb4aFu84XKr+lcUJ9y3qpIWhttO3Qev97z8DKLXR62LC3cXT/bMZXrjLF9X+P5oSmJTzAhqwUbY96PnA==} + cpu: [ppc64le] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.14.0: + resolution: {integrity: sha512-SDDhBQwZX6LPRoPYjAZWyL27LbcBo7WdBFWJi5PI9RPCzU8ijzkQn7tt8NXiXRiFMJCVpkuMkBf4OxSxVMizAw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.14.0: + resolution: {integrity: sha512-RxB/qez8zIDshNJDufYlTT0ZTVut5eCpAZ3bdXDU9yTxBzui3KhbGjROK2OYTTor7alM7XBhssgoO3CZ0XD3qA==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.14.0: + resolution: {integrity: sha512-C6y6z2eCNCfhZxT9u+jAM2Fup89ZjiG5pIzZIDycs1IwESviLxwkQcFRGLjnDrP+PT+v5i4YFvlcfAs+LnreXg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.14.0: + resolution: {integrity: sha512-i0QwbHYfnOMYsBEyjxcwGu5SMIi9sImDVjDg087hpzXqhBSosxkE7gyIYFHgfFl4mr7RrXksIBZ4DoLoP4FhJg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.14.0: + resolution: {integrity: sha512-Fq52EYb0riNHLBTAcL0cun+rRwyZ10S9vKzhGKKgeD+XbwunszSY0rVMco5KbOsTlwovP2rTOkiII/fQ4ih/zQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.14.0: + resolution: {integrity: sha512-e/PBHxPdJ00O9p5Ui43+vixSgVf4NlLsmV6QneGERJ3lnjIua/kim6PRFe3iDueT1rQcgSkYP8ZBBXa/h4iPvw==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.14.0: + resolution: {integrity: sha512-aGg7iToJjdklmxlUlJh/PaPNa4PmqHfyRMLunbL3eaMO0gp656+q1zOKkpJ/CVe9CryJv6tAN1HDoR8cNGzkag==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + /@swc/core-darwin-arm64@1.4.11: resolution: {integrity: sha512-C1j1Qp/IHSelVWdEnT7f0iONWxQz6FAqzjCF2iaL+0vFg4V5f2nlgrueY8vj5pNNzSGhrAlxsMxEIp4dj1MXkg==} engines: {node: '>=10'} @@ -1167,16 +1512,70 @@ packages: engines: {node: '>=10.13.0'} dev: true + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + /@types/node@20.11.30: resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} dependencies: undici-types: 5.26.5 dev: true + /@vitest/expect@1.4.0: + resolution: {integrity: sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==} + dependencies: + '@vitest/spy': 1.4.0 + '@vitest/utils': 1.4.0 + chai: 4.4.1 + dev: true + + /@vitest/runner@1.4.0: + resolution: {integrity: sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==} + dependencies: + '@vitest/utils': 1.4.0 + p-limit: 5.0.0 + pathe: 1.1.2 + dev: true + + /@vitest/snapshot@1.4.0: + resolution: {integrity: sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==} + dependencies: + magic-string: 0.30.8 + pathe: 1.1.2 + pretty-format: 29.7.0 + dev: true + + /@vitest/spy@1.4.0: + resolution: {integrity: sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==} + dependencies: + tinyspy: 2.2.1 + dev: true + + /@vitest/utils@1.4.0: + resolution: {integrity: sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + /abortcontroller-polyfill@1.7.5: resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} dev: true + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -1191,10 +1590,19 @@ packages: color-convert: 2.0.1 dev: true + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + /base-x@3.0.9: resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} dependencies: @@ -1223,6 +1631,11 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: true + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1232,6 +1645,19 @@ packages: resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==} dev: true + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -1249,6 +1675,12 @@ packages: supports-color: 7.2.0 dev: true + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -1308,7 +1740,6 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: false /css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} @@ -1340,6 +1771,25 @@ packages: css-tree: 1.1.3 dev: true + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + /detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -1351,6 +1801,11 @@ packages: engines: {node: '>=8'} dev: true + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: @@ -1406,6 +1861,37 @@ packages: is-arrayish: 0.2.1 dev: true + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + dev: true + /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -1416,6 +1902,27 @@ packages: engines: {node: '>=0.8.0'} dev: true + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: true + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -1423,11 +1930,28 @@ packages: to-regex-range: 5.0.1 dev: true + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + /get-port@4.2.0: resolution: {integrity: sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==} engines: {node: '>=6'} dev: true + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + /globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -1491,6 +2015,11 @@ packages: entities: 3.0.1 dev: true + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -1524,14 +2053,22 @@ packages: engines: {node: '>=0.12.0'} dev: true + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: false /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true + /js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + dev: true + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -1549,6 +2086,10 @@ packages: hasBin: true dev: true + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + /lightningcss-darwin-arm64@1.24.1: resolution: {integrity: sha512-1jQ12jBy+AE/73uGQWGSafK5GoWgmSiIQOGhSEXiFJSZxzV+OXIx+a9h2EYHxdJfX864M+2TAxWPWb0Vv+8y4w==} engines: {node: '>= 12.0.0'} @@ -1670,6 +2211,20 @@ packages: '@lmdb/lmdb-win32-x64': 2.8.5 dev: true + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.6.1 + pkg-types: 1.0.3 + dev: true + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -1677,10 +2232,21 @@ packages: yallist: 4.0.0 dev: true + /magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: true + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -1689,11 +2255,29 @@ packages: picomatch: 2.3.1 dev: true + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /mlly@1.6.1: + resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.5.3 + dev: true + /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} dev: false + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + /msgpackr-extract@3.0.2: resolution: {integrity: sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==} hasBin: true @@ -1716,6 +2300,12 @@ packages: msgpackr-extract: 3.0.2 dev: true + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + /node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} dev: true @@ -1743,6 +2333,13 @@ packages: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: true + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -1753,10 +2350,24 @@ packages: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} dev: true + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + /ordered-binary@1.5.1: resolution: {integrity: sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==} dev: true + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.0.0 + dev: true + /parcel@2.12.0(typescript@5.4.3): resolution: {integrity: sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg==} engines: {node: '>= 12.0.0'} @@ -1808,13 +2419,25 @@ packages: /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: false + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -1824,10 +2447,27 @@ packages: engines: {node: '>=8.6'} dev: true + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.1 + mlly: 1.6.1 + pathe: 1.1.2 + dev: true + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + dev: true + /posthtml-parser@0.10.2: resolution: {integrity: sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==} engines: {node: '>=12'} @@ -1857,10 +2497,23 @@ packages: posthtml-render: 3.0.0 dev: true + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + /react-error-overlay@6.0.9: resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} dev: true + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + /react-refresh@0.9.0: resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} engines: {node: '>=0.10.0'} @@ -1875,6 +2528,31 @@ packages: engines: {node: '>=4'} dev: true + /rollup@4.14.0: + resolution: {integrity: sha512-Qe7w62TyawbDzB4yt32R0+AbIo6m1/sqO7UPzFS8Z/ksL5mrfhA0v4CavfdmFav3D+ub4QeAgsGEe84DoWe/nQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.14.0 + '@rollup/rollup-android-arm64': 4.14.0 + '@rollup/rollup-darwin-arm64': 4.14.0 + '@rollup/rollup-darwin-x64': 4.14.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.14.0 + '@rollup/rollup-linux-arm64-gnu': 4.14.0 + '@rollup/rollup-linux-arm64-musl': 4.14.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.14.0 + '@rollup/rollup-linux-riscv64-gnu': 4.14.0 + '@rollup/rollup-linux-s390x-gnu': 4.14.0 + '@rollup/rollup-linux-x64-gnu': 4.14.0 + '@rollup/rollup-linux-x64-musl': 4.14.0 + '@rollup/rollup-win32-arm64-msvc': 4.14.0 + '@rollup/rollup-win32-ia32-msvc': 4.14.0 + '@rollup/rollup-win32-x64-msvc': 4.14.0 + fsevents: 2.3.3 + dev: true + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true @@ -1892,12 +2570,24 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - dev: false /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: false + + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + dev: true /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} @@ -1921,6 +2611,25 @@ packages: deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' dev: true + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + dependencies: + js-tokens: 9.0.0 + dev: true + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -1958,6 +2667,20 @@ packages: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} dev: true + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + dev: true + + /tinypool@0.8.3: + resolution: {integrity: sha512-Ud7uepAklqRH1bvwy22ynrliC7Dljz7Tm8M/0RBUW+YRa4YHhZ6e4PpgE+fu1zr/WqB1kbeuVrdfeuyIBpy4tw==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + dev: true + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -1969,6 +2692,11 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -1980,6 +2708,10 @@ packages: hasBin: true dev: true + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + dev: true + /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true @@ -2000,6 +2732,119 @@ packages: engines: {node: '>= 4'} dev: true + /vite-node@1.4.0(@types/node@20.11.30): + resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.2.8(@types/node@20.11.30) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite@5.2.8(@types/node@20.11.30): + resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.11.30 + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.14.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitest@1.4.0(@types/node@20.11.30): + resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.4.0 + '@vitest/ui': 1.4.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/node': 20.11.30 + '@vitest/expect': 1.4.0 + '@vitest/runner': 1.4.0 + '@vitest/snapshot': 1.4.0 + '@vitest/spy': 1.4.0 + '@vitest/utils': 1.4.0 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.8 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.1.0 + tinybench: 2.6.0 + tinypool: 0.8.3 + vite: 5.2.8(@types/node@20.11.30) + vite-node: 1.4.0(@types/node@20.11.30) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /weak-lru-cache@1.2.2: resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} dev: true @@ -2010,8 +2855,21 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: false + + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true diff --git a/tests/opts.test.ts b/tests/opts.test.ts new file mode 100644 index 0000000..562c304 --- /dev/null +++ b/tests/opts.test.ts @@ -0,0 +1,96 @@ +import { expect, test } from 'vitest' +import { getCacheMap, getTargetPath, getMountArgsString, parseOpts } from '../src/opts.js' + +test('parseOpts with no arguments', () => { + const opts = parseOpts([]) + expect(opts).toEqual({ + "_": [], + "cache-map": "{}", + "scratch-dir": "scratch", + "skip-extraction": false, + "extract": false, + "h": false, + "help": false + }) +}) + +test('parseOpts with cache-map argument', () => { + const opts = parseOpts(['--cache-map', '{"key": "value"}']) + expect(opts).toEqual({ + "_": [], + "cache-map": '{"key": "value"}', + "scratch-dir": "scratch", + "skip-extraction": false, + "extract": false, + "h": false, + "help": false + }) +}) + +test('parseOpts with deprecated cache-source and cache-target arguments', () => { + const opts = parseOpts(['--cache-source', 'source', '--cache-target', 'target']) + expect(opts).toEqual({ + "_": [], + "cache-map": '{"source":"target"}', + "scratch-dir": "scratch", + "skip-extraction": false, + "extract": false, + "h": false, + "help": false, + "cache-source": 'source', + "cache-target": 'target' + }) +}) + +test('parseOpts with help argument', () => { + const opts = parseOpts(['-h']) + expect(opts).toEqual({ + "_": [], + "cache-map": "{}", + "scratch-dir": "scratch", + "skip-extraction": false, + "extract": false, + "h": true, + "help": true, + }) +}) + +test('getCacheMap', () => { + const opts = parseOpts(['--cache-map', '{"key": "value"}']) + const cacheMap = getCacheMap(opts) + expect(cacheMap).toEqual({ key: 'value' }) +}) + +test('getCacheMap with invalid JSON', () => { + const opts = parseOpts(['--cache-map', 'invalid']) + expect(() => getCacheMap(opts)).toThrowError() +}) + +test('getTargetPath with string', () => { + const cacheOptions = 'targetPath' + const targetPath = getTargetPath(cacheOptions) + expect(targetPath).toBe('targetPath') +}) + +test('getTargetPath with object', () => { + const cacheOptions = { target: 'targetPath' } + const targetPath = getTargetPath(cacheOptions) + expect(targetPath).toBe('targetPath') +}) + +test('getTargetPath with invalid object', () => { + const cacheOptions = {} as any + expect(() => getTargetPath(cacheOptions)).toThrowError() +}) + +test('getMountArgsString with string', () => { + const cacheOptions = 'targetPath' + const mountString = getMountArgsString(cacheOptions) + expect(mountString).toBe('type=cache,target=targetPath') +}) + +test('getMountArgsString with object', () => { + const cacheOptions = { target: 'targetPath', shared: true, id: 1 } + const mountString = getMountArgsString(cacheOptions) + expect(mountString).toBe('type=cache,target=targetPath,shared=true,id=1') +}) From 2a1e987b4e97a16c25bfe05cc9261c55244e4107 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Wed, 3 Apr 2024 13:58:21 -0700 Subject: [PATCH 6/6] test: add tests for run functions Signed-off-by: Amin Yahyaabadi --- dist/index.js | 4 ++-- dist/index.js.map | 2 +- src/extract-cache.ts | 1 - src/run.ts | 6 +++--- tests/run.test.ts | 22 ++++++++++++++++++++++ 5 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 tests/run.test.ts diff --git a/dist/index.js b/dist/index.js index c81662e..26c5bee 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1207,8 +1207,8 @@ async function $4c028fad90f63861$export$889ea624f2cb2c57(command, args) { throw error; } } -async function $4c028fad90f63861$export$214213e2e11c62ae([commannd1, args1], [command2, args2]) { - const cp1 = (0, $evV72$child_process).spawn(commannd1, args1, { +async function $4c028fad90f63861$export$214213e2e11c62ae([command1, args1], [command2, args2]) { + const cp1 = (0, $evV72$child_process).spawn(command1, args1, { stdio: [ "inherit", "pipe", diff --git a/dist/index.js.map b/dist/index.js.map index e3da4b8..dfa951c 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"mappings":"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;QACd,MAAM,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE;QACzB,MAAO,IAAI,MAAM,GAAG,EACnB,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;IAE3B;IAGD,OAAO;AACR;;;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,I,kC,A,6B,0B,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;A,O,c,C,2B,c;I,O;A;A,0B,Q,G,0B,S,G,0B,K,G,0B,Q,G,0B,U,G,0B,I,G,0B,M,G,0B,O,G,0B,K,G,0B,K,G,0B,O,G,0B,S,G,0B,c,G,0B,S,G,0B,e,G,0B,iB,G,0B,Q,G,0B,O,G,0B,S,G,0B,c,G,0B,Q,G,K;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,K,G,0B,Y,G,K;;AItHA,MAAA,2BAAA,mCAAA;;A;AEAA,mCAAmC;AACnC,qDAAA,G,O,c,C,2B,c;I,O;A;A,0B,mB,G,0B,c,G,K;AAKA;;;CAGG,GACH,SAAgB,qCAAe,KAAU;IACvC,IAAI,UAAU,QAAQ,UAAU,WAC9B,OAAO;SACF,IAAI,OAAO,UAAU,YAAY,iBAAiB,QACvD,OAAO;IAET,OAAO,KAAK,SAAS,CAAC;AACxB;AAPA,0BAAA,cAAA,GAAA;AASA;;;;;CAKG,GACH,SAAgB,0CACd,oBAA0C;IAE1C,IAAI,CAAC,OAAO,IAAI,CAAC,sBAAsB,MAAM,EAC3C,OAAO,CAAA;IAGT,OAAO;QACL,OAAO,qBAAqB,KAAK;QACjC,MAAM,qBAAqB,SAAS;QACpC,SAAS,qBAAqB,OAAO;QACrC,KAAK,qBAAqB,WAAW;QACrC,WAAW,qBAAqB,SAAS;IAC1C;AACH;AAdA,0BAAA,mBAAA,GAAA;;;AFbA;;;;;;;;;CASG,GACH,SAAgB,mCACd,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,MAAM,IAAI,8BAAQ,SAAS,YAAY;IAC7C,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,KAAK,yBAAG,GAAG;AAC9C;AAPA,0BAAA,YAAA,GAAA;AASA,SAAgB,4BAAM,IAAY,EAAE,UAAU,EAAE;IAC9C,mCAAa,MAAM,CAAA,GAAI;AACzB;AAFA,0BAAA,KAAA,GAAA;AAIA,MAAM,mCAAa;AAEnB,MAAM;IAKJ,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe,CAA3E;QACE,IAAI,CAAC,SACH,UAAU;QAGZ,IAAI,CAAC,OAAO,GAAG;QACf,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,OAAO,GAAG;IACjB;IAEA,WAAA;QACE,IAAI,SAAS,mCAAa,IAAI,CAAC,OAAO;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG;YAC9D,UAAU;YACV,IAAI,QAAQ;YACZ,IAAK,MAAM,OAAO,IAAI,CAAC,UAAU,CAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM;gBACvC,MAAM,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI;gBAChC,IAAI,KAAK;oBACP,IAAI,OACF,QAAQ;yBAER,UAAU;oBAGZ,UAAU,CAAA,EAAG,IAAG,CAAA,EAAI,qCAAe,KAAI,CAAE;gBAC1C;YACF;QAEJ;QAED,UAAU,CAAA,EAAG,iCAAU,EAAG,iCAAW,IAAI,CAAC,OAAO,EAAC,CAAE;QACpD,OAAO;IACT;AACD;AAED,SAAS,iCAAW,CAAM;IACxB,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO;AACpB;AAEA,SAAS,qCAAe,CAAM;IAC5B,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,MAAM;AACnB;;;;A;AI7FA,uCAAuC;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,Y,G,K;;AAEvC,mCAAmC;AACnC,qDAAA,GAEA,MAAA,2BAAA,mCAAA;;AACA,MAAA,2BAAA,mCAAA;;AAGA,SAAgB,mCAAa,OAAe,EAAE,OAAY;IACxD,MAAM,WAAW,QAAQ,GAAG,CAAC,CAAA,OAAA,EAAU,QAAO,CAAE,CAAC;IACjD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,CAAA,qDAAA,EAAwD,QAAO,CAAE;IAGrE,IAAI,CAAC,yBAAG,UAAU,CAAC,WACjB,MAAM,IAAI,MAAM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","sources":["node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","src/index.ts","src/inject-cache.ts","src/opts.ts","node_modules/.pnpm/mri@1.2.0/node_modules/mri/lib/index.mjs","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/core.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/core.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/command.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/utils.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/utils.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/file-command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/file-command.ts","src/run.ts","node_modules/.pnpm/spawn-please@3.0.0/node_modules/spawn-please/src/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js","node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js","node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js","src/extract-cache.ts"],"sourcesContent":["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","import fs from \"fs/promises\";\nimport os from \"os\";\nimport { injectCaches } from \"./inject-cache.js\";\nimport { extractCaches } from \"./extract-cache.js\";\nimport { help, parseOpts } from \"./opts.js\";\n\nasync function main(args: string[]) {\n const opts = parseOpts(args);\n\n if (opts.help) {\n return help();\n }\n\n if (opts.extract) {\n // Run the post step\n await extractCaches(opts);\n } else {\n // Otherwise, this is the main step\n if (process.env.GITHUB_STATE !== undefined) {\n await fs.appendFile(process.env.GITHUB_STATE, `POST=true${os.EOL}`);\n }\n await injectCaches(opts);\n }\n}\n\ntry {\n await main(process.argv);\n} catch (err) {\n console.error(err);\n if (err instanceof Error) {\n console.error(err.stack);\n }\n process.exit(1);\n}\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js';\nimport { run } from './run.js';\nimport { notice } from '@actions/core';\n\nasync function injectCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) {\n // Clean Scratch Directory\n await fs.rm(scratchDir, { recursive: true, force: true });\n await fs.mkdir(scratchDir, { recursive: true });\n\n // Prepare Cache Source Directory\n await fs.mkdir(cacheSource, { recursive: true });\n\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(cacheSource, 'buildstamp'), date);\n\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n // Prepare Dancefile to Access Caches\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n --mount=type=bind,source=.,target=/var/dance-cache \\\n cp -p -R /var/dance-cache/. ${targetPath} || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.inject'), dancefileContent);\n console.log(dancefileContent);\n\n // Inject Data into Docker Cache\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.inject'), '--tag', 'dance:inject', cacheSource]);\n\n // Clean Directories\n try {\n await fs.rm(cacheSource, { recursive: true, force: true });\n } catch (err) {\n // Ignore Cleaning Errors\n notice(`Error while cleaning cache source directory: ${err}. Ignoring...`);\n }\n}\n\n\nexport async function injectCaches(opts: Opts) {\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Inject Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await injectCache(cacheSource, cacheOptions, scratchDir);\n }\n}\n","import mri from 'mri';\nimport { getInput, warning } from '@actions/core';\n\nexport type Opts = {\n \"extract\": boolean\n \"cache-map\": string\n \"scratch-dir\": string\n \"skip-extraction\": boolean\n help: boolean\n /** @deprecated Use `cache-map` instead */\n \"cache-source\"?: string\n /** @deprecated Use `cache-map` instead */\n \"cache-target\"?: string\n}\n\nexport function parseOpts(args: string[]): mri.Argv {\n const opts = mri(args, {\n default: {\n \"cache-map\": getInput(\"cache-map\") || \"{}\",\n \"scratch-dir\": getInput(\"scratch-dir\") || \"scratch\",\n \"skip-extraction\": (getInput(\"skip-extraction\") || \"false\") === \"true\",\n \"extract\": process.env[`STATE_POST`] !== undefined,\n \"help\": false,\n },\n string: [\"cache-map\", \"scratch-dir\", \"cache-source\", \"cache-target\"],\n boolean: [\"skip-extraction\", \"help\", \"extract\"],\n alias: {\n \"help\": [\"h\"],\n },\n })\n\n if (opts[\"cache-source\"] && opts[\"cache-target\"]) {\n warning(\"The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead.\")\n\n opts[\"cache-map\"] = JSON.stringify({\n [opts[\"cache-source\"]]: opts[\"cache-target\"],\n });\n }\n\n return opts;\n}\n\nexport function help() {\n console.log(`build-cache-dance [options]\nSave 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms\n\nOptions:\n --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step)\n --cache-map The map of actions source paths to container destination paths or mount arguments\n --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch'\n --skip-extraction Skip the extraction of the cache from the docker container\n --help Show this help\n`);\n}\n\nexport type SourcePath = string\nexport type TargetPath = string\nexport type ToStringable = {\n toString(): string;\n}\nexport type CacheOptions = TargetPath | { target: TargetPath } & Record\nexport type CacheMap = Record\n\nexport function getCacheMap(opts: Opts): CacheMap {\n try {\n return JSON.parse(opts[\"cache-map\"]) as CacheMap;\n } catch (e) {\n throw new Error(`Failed to parse cache map. Expected JSON, got:\\n${opts[\"cache-map\"]}\\n${e}`);\n }\n}\n\nexport function getTargetPath(cacheOptions: CacheOptions): TargetPath {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return cacheOptions;\n } else {\n // object is provided\n if (\"target\" in cacheOptions) {\n return cacheOptions.target;\n } else {\n throw new Error(`Expected the 'target' key in the cache options, got:\\n${cacheOptions}`);\n }\n }\n}\n\n/**\n * Convert a cache options to a string that is passed to --mount=\n * @param CacheOptions The cache options to convert to a string\n */\nexport function getMountArgsString(cacheOptions: CacheOptions): string {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return `type=cache,target=${cacheOptions}`;\n } else {\n // other options are provided\n const otherOptions = Object.entries(cacheOptions).map(([key, value]) => `${key}=${value}`).join(\",\");\n return `type=cache,${otherOptions}`;\n }\n}\n","function toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nexport default function (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n",null,null,null,null,null,null,null,null,"import spawnPlease from 'spawn-please'\nimport cp, { type SpawnOptions, type ChildProcess } from 'child_process';\n\nexport async function run(command: string, args: string[]) {\n try {\n return await spawnPlease(command, args);\n } catch (error) {\n console.error(`Error running command: ${command} ${args.join(' ')}`);\n throw error;\n }\n}\n\nexport async function runPiped([commannd1, args1]: [string, string[]], [command2, args2]: [string, string[]]) {\n const cp1 = cp.spawn(commannd1, args1, { stdio: ['inherit', 'pipe', 'inherit'] });\n const cp2 = cp.spawn(command2, args2, { stdio: ['pipe', 'inherit', 'inherit'] });\n\n cp1.stdout.pipe(cp2.stdin);\n\n await Promise.all([assertSuccess(cp1), assertSuccess(cp2)]);\n}\n\nfunction assertSuccess(cp: ChildProcess) {\n return new Promise((resolve, reject) => {\n cp.on('error', (error) => {\n reject(error);\n });\n cp.on('close', (code) => {\n if (code !== 0) {\n reject(new Error(`process exited with code ${code}`));\n }\n resolve();\n });\n });\n}\n","const spawn = require('cross-spawn')\n\n/** Spawns a child process, as long as you ask nicely.\n * \n * @param {string} command - The shell command to execute.\n * @param {string[]} [args] - An array of arguments that are given after the command.\n * @param {{ rejectOnError?: boolean, stdin?: string, stderr?: (data: string) => void, stdout?: (data: string) => void }} [options] - Options.\n * @param {any} [spawnOptions] - Options that are passed directly to child_process.spawn. Also supports stdin: string.\n * @returns {Promise<{ stdout: string, stderr: string }>}\n */\nconst spawnPlease = (command, args, options={}, spawnOptions={}) => {\n // defaults\n if (options.rejectOnError === undefined) {\n options.rejectOnError = true\n }\n\n let stdout = ''\n let stderr = ''\n const child = spawn(command, args, spawnOptions)\n\n return new Promise((resolve, reject) => {\n if (options.stdin !== undefined && options.stdin != null) {\n child.stdin.write(options.stdin)\n }\n child.stdin.end()\n\n child.stdout.on('data', data => {\n stdout += data\n if (options.stdout) options.stdout(data)\n })\n\n child.stderr.on('data', data => {\n stderr += data\n if (options.stderr) options.stderr(data)\n })\n\n if (options.rejectOnError) {\n child.addListener('error', reject)\n }\n\n child.on('close', code => {\n if (code !== 0 && options.rejectOnError) {\n reject(stderr)\n } else {\n resolve({ stdout, stderr })\n }\n })\n })\n}\n\nmodule.exports = spawnPlease\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js';\nimport { run, runPiped } from './run.js';\nimport { spawn } from 'child_process';\n\nasync function extractCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) {\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(scratchDir, 'buildstamp'), date);\n\n // Prepare Dancefile to Access Caches\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n mkdir -p /var/dance-cache/ \\\n && cp -p -R ${targetPath}/. /var/dance-cache/ || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.extract'), dancefileContent);\n console.log(dancefileContent);\n\n // Extract Data into Docker Image\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.extract'), '--tag', 'dance:extract', '--load', scratchDir]);\n\n // Create Extraction Image\n try {\n await run('docker', ['rm', '-f', 'cache-container']);\n } catch (error) {\n // Ignore error if container does not exist\n }\n await run('docker', ['create', '-ti', '--name', 'cache-container', 'dance:extract']);\n\n // Unpack Docker Image into Scratch\n await runPiped(\n ['docker', ['cp', '-L', 'cache-container:/var/dance-cache', '-']],\n ['tar', ['-H', 'posix', '-x', '-C', scratchDir]]\n );\n\n // Move Cache into Its Place\n await fs.rm(cacheSource, { recursive: true, force: true });\n await fs.rename(path.join(scratchDir, 'dance-cache'), cacheSource);\n}\n\nexport async function extractCaches(opts: Opts) {\n if (opts[\"skip-extraction\"]) {\n console.log(\"skip-extraction is set. Skipping extraction step...\");\n return;\n }\n\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Extract Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await extractCache(cacheSource, cacheOptions, scratchDir);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file +{"mappings":"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;QACd,MAAM,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE;QACzB,MAAO,IAAI,MAAM,GAAG,EACnB,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;IAE3B;IAGD,OAAO;AACR;;;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,I,kC,A,6B,0B,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;A,O,c,C,2B,c;I,O;A;A,0B,Q,G,0B,S,G,0B,K,G,0B,Q,G,0B,U,G,0B,I,G,0B,M,G,0B,O,G,0B,K,G,0B,K,G,0B,O,G,0B,S,G,0B,c,G,0B,S,G,0B,e,G,0B,iB,G,0B,Q,G,0B,O,G,0B,S,G,0B,c,G,0B,Q,G,K;;A;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,K,G,0B,Y,G,K;;AItHA,MAAA,2BAAA,mCAAA;;A;AEAA,mCAAmC;AACnC,qDAAA,G,O,c,C,2B,c;I,O;A;A,0B,mB,G,0B,c,G,K;AAKA;;;CAGG,GACH,SAAgB,qCAAe,KAAU;IACvC,IAAI,UAAU,QAAQ,UAAU,WAC9B,OAAO;SACF,IAAI,OAAO,UAAU,YAAY,iBAAiB,QACvD,OAAO;IAET,OAAO,KAAK,SAAS,CAAC;AACxB;AAPA,0BAAA,cAAA,GAAA;AASA;;;;;CAKG,GACH,SAAgB,0CACd,oBAA0C;IAE1C,IAAI,CAAC,OAAO,IAAI,CAAC,sBAAsB,MAAM,EAC3C,OAAO,CAAA;IAGT,OAAO;QACL,OAAO,qBAAqB,KAAK;QACjC,MAAM,qBAAqB,SAAS;QACpC,SAAS,qBAAqB,OAAO;QACrC,KAAK,qBAAqB,WAAW;QACrC,WAAW,qBAAqB,SAAS;IAC1C;AACH;AAdA,0BAAA,mBAAA,GAAA;;;AFbA;;;;;;;;;CASG,GACH,SAAgB,mCACd,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,MAAM,IAAI,8BAAQ,SAAS,YAAY;IAC7C,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,KAAK,yBAAG,GAAG;AAC9C;AAPA,0BAAA,YAAA,GAAA;AASA,SAAgB,4BAAM,IAAY,EAAE,UAAU,EAAE;IAC9C,mCAAa,MAAM,CAAA,GAAI;AACzB;AAFA,0BAAA,KAAA,GAAA;AAIA,MAAM,mCAAa;AAEnB,MAAM;IAKJ,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe,CAA3E;QACE,IAAI,CAAC,SACH,UAAU;QAGZ,IAAI,CAAC,OAAO,GAAG;QACf,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,OAAO,GAAG;IACjB;IAEA,WAAA;QACE,IAAI,SAAS,mCAAa,IAAI,CAAC,OAAO;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG;YAC9D,UAAU;YACV,IAAI,QAAQ;YACZ,IAAK,MAAM,OAAO,IAAI,CAAC,UAAU,CAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM;gBACvC,MAAM,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI;gBAChC,IAAI,KAAK;oBACP,IAAI,OACF,QAAQ;yBAER,UAAU;oBAGZ,UAAU,CAAA,EAAG,IAAG,CAAA,EAAI,qCAAe,KAAI,CAAE;gBAC1C;YACF;QAEJ;QAED,UAAU,CAAA,EAAG,iCAAU,EAAG,iCAAW,IAAI,CAAC,OAAO,EAAC,CAAE;QACpD,OAAO;IACT;AACD;AAED,SAAS,iCAAW,CAAM;IACxB,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO;AACpB;AAEA,SAAS,qCAAe,CAAM;IAC5B,OAAO,yCAAe,GACnB,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,OAAO,OACf,OAAO,CAAC,MAAM,OACd,OAAO,CAAC,MAAM;AACnB;;;;A;AI7FA,uCAAuC;A,I,wC,A,6B,0B,e,I,C,O,M,G,S,C,E,C,E,C,E,E;I,I,O,W,K;I,O,c,C,G,I;Q,Y;Q,K;Y,O,C,C,E;Q;I;A,I,S,C,E,C,E,C,E,E;I,I,O,W,K;I,C,C,G,G,C,C,E;A,C;A,I,2C,A,6B,0B,kB,I,C,O,M,G,S,C,E,C;I,O,c,C,G,W;Q,Y;Q,O;I;A,I,S,C,E,C;I,C,C,U,G;A,C;A,I,qC,A,6B,0B,Y,I,S,G;I,I,O,I,U,E,O;I,I,S,C;I,I,O,M;Q,I,I,K,I,I,M,a,O,c,C,I,C,K,I,sC,Q,K;I;I,yC,Q;I,O;A;A,O,c,C,2B,c;I,O;A;A,0B,Y,G,K;;AAEvC,mCAAmC;AACnC,qDAAA,GAEA,MAAA,2BAAA,mCAAA;;AACA,MAAA,2BAAA,mCAAA;;AAGA,SAAgB,mCAAa,OAAe,EAAE,OAAY;IACxD,MAAM,WAAW,QAAQ,GAAG,CAAC,CAAA,OAAA,EAAU,QAAO,CAAE,CAAC;IACjD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,CAAA,qDAAA,EAAwD,QAAO,CAAE;IAGrE,IAAI,CAAC,yBAAG,UAAU,CAAC,WACjB,MAAM,IAAI,MAAM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","sources":["node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","src/index.ts","src/inject-cache.ts","src/opts.ts","node_modules/.pnpm/mri@1.2.0/node_modules/mri/lib/index.mjs","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/core.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/core.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/command.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/utils.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/utils.ts","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/lib/file-command.js","node_modules/.pnpm/@actions+core@1.5.0/node_modules/@actions/core/src/file-command.ts","src/run.ts","node_modules/.pnpm/spawn-please@3.0.0/node_modules/spawn-please/src/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js","node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js","node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js","src/extract-cache.ts"],"sourcesContent":["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","import fs from \"fs/promises\";\nimport os from \"os\";\nimport { injectCaches } from \"./inject-cache.js\";\nimport { extractCaches } from \"./extract-cache.js\";\nimport { help, parseOpts } from \"./opts.js\";\n\nasync function main(args: string[]) {\n const opts = parseOpts(args);\n\n if (opts.help) {\n return help();\n }\n\n if (opts.extract) {\n // Run the post step\n await extractCaches(opts);\n } else {\n // Otherwise, this is the main step\n if (process.env.GITHUB_STATE !== undefined) {\n await fs.appendFile(process.env.GITHUB_STATE, `POST=true${os.EOL}`);\n }\n await injectCaches(opts);\n }\n}\n\ntry {\n await main(process.argv);\n} catch (err) {\n console.error(err);\n if (err instanceof Error) {\n console.error(err.stack);\n }\n process.exit(1);\n}\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js';\nimport { run } from './run.js';\nimport { notice } from '@actions/core';\n\nasync function injectCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) {\n // Clean Scratch Directory\n await fs.rm(scratchDir, { recursive: true, force: true });\n await fs.mkdir(scratchDir, { recursive: true });\n\n // Prepare Cache Source Directory\n await fs.mkdir(cacheSource, { recursive: true });\n\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(cacheSource, 'buildstamp'), date);\n\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n // Prepare Dancefile to Access Caches\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n --mount=type=bind,source=.,target=/var/dance-cache \\\n cp -p -R /var/dance-cache/. ${targetPath} || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.inject'), dancefileContent);\n console.log(dancefileContent);\n\n // Inject Data into Docker Cache\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.inject'), '--tag', 'dance:inject', cacheSource]);\n\n // Clean Directories\n try {\n await fs.rm(cacheSource, { recursive: true, force: true });\n } catch (err) {\n // Ignore Cleaning Errors\n notice(`Error while cleaning cache source directory: ${err}. Ignoring...`);\n }\n}\n\n\nexport async function injectCaches(opts: Opts) {\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Inject Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await injectCache(cacheSource, cacheOptions, scratchDir);\n }\n}\n","import mri from 'mri';\nimport { getInput, warning } from '@actions/core';\n\nexport type Opts = {\n \"extract\": boolean\n \"cache-map\": string\n \"scratch-dir\": string\n \"skip-extraction\": boolean\n help: boolean\n /** @deprecated Use `cache-map` instead */\n \"cache-source\"?: string\n /** @deprecated Use `cache-map` instead */\n \"cache-target\"?: string\n}\n\nexport function parseOpts(args: string[]): mri.Argv {\n const opts = mri(args, {\n default: {\n \"cache-map\": getInput(\"cache-map\") || \"{}\",\n \"scratch-dir\": getInput(\"scratch-dir\") || \"scratch\",\n \"skip-extraction\": (getInput(\"skip-extraction\") || \"false\") === \"true\",\n \"extract\": process.env[`STATE_POST`] !== undefined,\n \"help\": false,\n },\n string: [\"cache-map\", \"scratch-dir\", \"cache-source\", \"cache-target\"],\n boolean: [\"skip-extraction\", \"help\", \"extract\"],\n alias: {\n \"help\": [\"h\"],\n },\n })\n\n if (opts[\"cache-source\"] && opts[\"cache-target\"]) {\n warning(\"The `cache-source` and `cache-target` options are deprecated. Use `cache-map` instead.\")\n\n opts[\"cache-map\"] = JSON.stringify({\n [opts[\"cache-source\"]]: opts[\"cache-target\"],\n });\n }\n\n return opts;\n}\n\nexport function help() {\n console.log(`build-cache-dance [options]\nSave 'RUN --mount=type=cache' caches on GitHub Actions or other CI platforms\n\nOptions:\n --extract Extract the cache from the docker container (extract step). Otherwise, inject the cache (main step)\n --cache-map The map of actions source paths to container destination paths or mount arguments\n --scratch-dir Where the action is stores some temporary files for its processing. Default: 'scratch'\n --skip-extraction Skip the extraction of the cache from the docker container\n --help Show this help\n`);\n}\n\nexport type SourcePath = string\nexport type TargetPath = string\nexport type ToStringable = {\n toString(): string;\n}\nexport type CacheOptions = TargetPath | { target: TargetPath } & Record\nexport type CacheMap = Record\n\nexport function getCacheMap(opts: Opts): CacheMap {\n try {\n return JSON.parse(opts[\"cache-map\"]) as CacheMap;\n } catch (e) {\n throw new Error(`Failed to parse cache map. Expected JSON, got:\\n${opts[\"cache-map\"]}\\n${e}`);\n }\n}\n\nexport function getTargetPath(cacheOptions: CacheOptions): TargetPath {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return cacheOptions;\n } else {\n // object is provided\n if (\"target\" in cacheOptions) {\n return cacheOptions.target;\n } else {\n throw new Error(`Expected the 'target' key in the cache options, got:\\n${cacheOptions}`);\n }\n }\n}\n\n/**\n * Convert a cache options to a string that is passed to --mount=\n * @param CacheOptions The cache options to convert to a string\n */\nexport function getMountArgsString(cacheOptions: CacheOptions): string {\n if (typeof cacheOptions === \"string\") {\n // only the target path is provided\n return `type=cache,target=${cacheOptions}`;\n } else {\n // other options are provided\n const otherOptions = Object.entries(cacheOptions).map(([key, value]) => `${key}=${value}`).join(\",\");\n return `type=cache,${otherOptions}`;\n }\n}\n","function toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nexport default function (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n",null,null,null,null,null,null,null,null,"import spawnPlease from 'spawn-please'\nimport cp, { type ChildProcess } from 'child_process';\n\nexport async function run(command: string, args: string[]) {\n try {\n return await spawnPlease(command, args);\n } catch (error) {\n console.error(`Error running command: ${command} ${args.join(' ')}`);\n throw error;\n }\n}\n\nexport async function runPiped([command1, args1]: [string, string[]], [command2, args2]: [string, string[]]) {\n const cp1 = cp.spawn(command1, args1, { stdio: ['inherit', 'pipe', 'inherit'] });\n const cp2 = cp.spawn(command2, args2, { stdio: ['pipe', 'inherit', 'inherit'] });\n\n cp1.stdout.pipe(cp2.stdin);\n\n await Promise.all([assertSuccess(cp1), assertSuccess(cp2)]);\n}\n\nfunction assertSuccess(cp: ChildProcess) {\n return new Promise((resolve, reject) => {\n cp.on('error', (error) => {\n reject(error);\n });\n cp.on('close', (code) => {\n if (code !== 0) {\n reject(new Error(`process exited with code ${code}`));\n }\n resolve();\n });\n });\n}\n","const spawn = require('cross-spawn')\n\n/** Spawns a child process, as long as you ask nicely.\n * \n * @param {string} command - The shell command to execute.\n * @param {string[]} [args] - An array of arguments that are given after the command.\n * @param {{ rejectOnError?: boolean, stdin?: string, stderr?: (data: string) => void, stdout?: (data: string) => void }} [options] - Options.\n * @param {any} [spawnOptions] - Options that are passed directly to child_process.spawn. Also supports stdin: string.\n * @returns {Promise<{ stdout: string, stderr: string }>}\n */\nconst spawnPlease = (command, args, options={}, spawnOptions={}) => {\n // defaults\n if (options.rejectOnError === undefined) {\n options.rejectOnError = true\n }\n\n let stdout = ''\n let stderr = ''\n const child = spawn(command, args, spawnOptions)\n\n return new Promise((resolve, reject) => {\n if (options.stdin !== undefined && options.stdin != null) {\n child.stdin.write(options.stdin)\n }\n child.stdin.end()\n\n child.stdout.on('data', data => {\n stdout += data\n if (options.stdout) options.stdout(data)\n })\n\n child.stderr.on('data', data => {\n stderr += data\n if (options.stderr) options.stderr(data)\n })\n\n if (options.rejectOnError) {\n child.addListener('error', reject)\n }\n\n child.on('close', code => {\n if (code !== 0 && options.rejectOnError) {\n reject(stderr)\n } else {\n resolve({ stdout, stderr })\n }\n })\n })\n}\n\nmodule.exports = spawnPlease\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","import fs from 'fs/promises';\nimport path from 'path';\nimport { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js';\nimport { run, runPiped } from './run.js';\n\nasync function extractCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) {\n // Prepare Timestamp for Layer Cache Busting\n const date = new Date().toISOString();\n await fs.writeFile(path.join(scratchDir, 'buildstamp'), date);\n\n // Prepare Dancefile to Access Caches\n const targetPath = getTargetPath(cacheOptions);\n const mountArgs = getMountArgsString(cacheOptions);\n\n const dancefileContent = `\nFROM busybox:1\nCOPY buildstamp buildstamp\nRUN --mount=${mountArgs} \\\n mkdir -p /var/dance-cache/ \\\n && cp -p -R ${targetPath}/. /var/dance-cache/ || true\n`;\n await fs.writeFile(path.join(scratchDir, 'Dancefile.extract'), dancefileContent);\n console.log(dancefileContent);\n\n // Extract Data into Docker Image\n await run('docker', ['buildx', 'build', '-f', path.join(scratchDir, 'Dancefile.extract'), '--tag', 'dance:extract', '--load', scratchDir]);\n\n // Create Extraction Image\n try {\n await run('docker', ['rm', '-f', 'cache-container']);\n } catch (error) {\n // Ignore error if container does not exist\n }\n await run('docker', ['create', '-ti', '--name', 'cache-container', 'dance:extract']);\n\n // Unpack Docker Image into Scratch\n await runPiped(\n ['docker', ['cp', '-L', 'cache-container:/var/dance-cache', '-']],\n ['tar', ['-H', 'posix', '-x', '-C', scratchDir]]\n );\n\n // Move Cache into Its Place\n await fs.rm(cacheSource, { recursive: true, force: true });\n await fs.rename(path.join(scratchDir, 'dance-cache'), cacheSource);\n}\n\nexport async function extractCaches(opts: Opts) {\n if (opts[\"skip-extraction\"]) {\n console.log(\"skip-extraction is set. Skipping extraction step...\");\n return;\n }\n\n const cacheMap = getCacheMap(opts);\n const scratchDir = opts['scratch-dir'];\n\n // Extract Caches for each source-target pair\n for (const [cacheSource, cacheOptions] of Object.entries(cacheMap)) {\n await extractCache(cacheSource, cacheOptions, scratchDir);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file diff --git a/src/extract-cache.ts b/src/extract-cache.ts index ffc89f8..1b1f254 100644 --- a/src/extract-cache.ts +++ b/src/extract-cache.ts @@ -2,7 +2,6 @@ import fs from 'fs/promises'; import path from 'path'; import { CacheOptions, Opts, getCacheMap, getMountArgsString, getTargetPath } from './opts.js'; import { run, runPiped } from './run.js'; -import { spawn } from 'child_process'; async function extractCache(cacheSource: string, cacheOptions: CacheOptions, scratchDir: string) { // Prepare Timestamp for Layer Cache Busting diff --git a/src/run.ts b/src/run.ts index 13ff647..a7fd5b2 100644 --- a/src/run.ts +++ b/src/run.ts @@ -1,5 +1,5 @@ import spawnPlease from 'spawn-please' -import cp, { type SpawnOptions, type ChildProcess } from 'child_process'; +import cp, { type ChildProcess } from 'child_process'; export async function run(command: string, args: string[]) { try { @@ -10,8 +10,8 @@ export async function run(command: string, args: string[]) { } } -export async function runPiped([commannd1, args1]: [string, string[]], [command2, args2]: [string, string[]]) { - const cp1 = cp.spawn(commannd1, args1, { stdio: ['inherit', 'pipe', 'inherit'] }); +export async function runPiped([command1, args1]: [string, string[]], [command2, args2]: [string, string[]]) { + const cp1 = cp.spawn(command1, args1, { stdio: ['inherit', 'pipe', 'inherit'] }); const cp2 = cp.spawn(command2, args2, { stdio: ['pipe', 'inherit', 'inherit'] }); cp1.stdout.pipe(cp2.stdin); diff --git a/tests/run.test.ts b/tests/run.test.ts new file mode 100644 index 0000000..34aca1f --- /dev/null +++ b/tests/run.test.ts @@ -0,0 +1,22 @@ +import { expect, test } from 'vitest' +import { run, runPiped } from '../src/run.js' + +test('run with valid command', async () => { + expect(await run('echo', ['hello'])).toStrictEqual({ stdout: 'hello\n', stderr: '' }) +}) + +test('run with invalid command', async () => { + await expect(run('invalid', [])).rejects.toThrow() +}) + +test('runPiped with valid commands', async () => { + await expect(runPiped(['echo', ['hello']], ['cat', []])).resolves.not.toThrow() +}) + +test('runPiped with invalid first command', async () => { + await expect(runPiped(['invalid', []], ['cat', []])).rejects.toThrow() +}) + +test('runPiped with invalid second command', async () => { + await expect(runPiped(['echo', ['hello']], ['invalid', []])).rejects.toThrow() +})