Fix tool-cache usage (#45)

* cache log

* log

* log

* use resolved ver for cache

* build

* log cache

* log

* use version as key

* deps

* loggggggg

* method name

* improve log

* ci: tweak versions

* include version for commit deps

* trailing

* mistake
This commit is contained in:
Renée 2023-05-18 13:30:28 +01:00 committed by GitHub
parent ddee6faec6
commit d77db2eb23
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 205 additions and 157 deletions

View File

@ -9,7 +9,7 @@ jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- run: npm install - run: npm install
- uses: EndBug/add-and-commit@v4 - uses: EndBug/add-and-commit@v4
with: with:

View File

@ -6,7 +6,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Install dependencies - name: Install dependencies
run: npm install run: npm install
- name: Run tests - name: Run tests
@ -18,7 +18,7 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-latest, macos-latest, windows-latest] os: [ubuntu-latest, macos-latest, windows-latest]
zig-version: [0.7.0, 0.8.0, 0.9.0, master] zig-version: [0.7.0, 0.8.0, 0.9.0, 0.10.0]
include: include:
- os: ubuntu-latest - os: ubuntu-latest
zig-version: 0.5.0 zig-version: 0.5.0

302
dist/index.js vendored
View File

@ -1,3 +1,4 @@
"use strict";
var __create = Object.create; var __create = Object.create;
var __defProp = Object.defineProperty; var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@ -40,11 +41,23 @@ var require_constants = __commonJS({
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
9007199254740991; 9007199254740991;
var MAX_SAFE_COMPONENT_LENGTH = 16; var MAX_SAFE_COMPONENT_LENGTH = 16;
var RELEASE_TYPES = [
"major",
"premajor",
"minor",
"preminor",
"patch",
"prepatch",
"prerelease"
];
module2.exports = { module2.exports = {
SEMVER_SPEC_VERSION,
MAX_LENGTH, MAX_LENGTH,
MAX_SAFE_COMPONENT_LENGTH,
MAX_SAFE_INTEGER, MAX_SAFE_INTEGER,
MAX_SAFE_COMPONENT_LENGTH RELEASE_TYPES,
SEMVER_SPEC_VERSION,
FLAG_INCLUDE_PRERELEASE: 1,
FLAG_LOOSE: 2
}; };
} }
}); });
@ -124,11 +137,17 @@ var require_re = __commonJS({
// node_modules/semver/internal/parse-options.js // node_modules/semver/internal/parse-options.js
var require_parse_options = __commonJS({ var require_parse_options = __commonJS({
"node_modules/semver/internal/parse-options.js"(exports, module2) { "node_modules/semver/internal/parse-options.js"(exports, module2) {
var opts = ["includePrerelease", "loose", "rtl"]; var looseOption = Object.freeze({ loose: true });
var parseOptions = (options) => !options ? {} : typeof options !== "object" ? { loose: true } : opts.filter((k) => options[k]).reduce((o, k) => { var emptyOpts = Object.freeze({});
o[k] = true; var parseOptions = (options) => {
return o; if (!options) {
}, {}); return emptyOpts;
}
if (typeof options !== "object") {
return looseOption;
}
return options;
};
module2.exports = parseOptions; module2.exports = parseOptions;
} }
}); });
@ -172,7 +191,7 @@ var require_semver = __commonJS({
version2 = version2.version; version2 = version2.version;
} }
} else if (typeof version2 !== "string") { } else if (typeof version2 !== "string") {
throw new TypeError(`Invalid Version: ${version2}`); throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version2}".`);
} }
if (version2.length > MAX_LENGTH) { if (version2.length > MAX_LENGTH) {
throw new TypeError( throw new TypeError(
@ -298,31 +317,31 @@ var require_semver = __commonJS({
} }
// preminor will bump the version up to the next minor release, and immediately // preminor will bump the version up to the next minor release, and immediately
// down to pre-release. premajor and prepatch work the same way. // down to pre-release. premajor and prepatch work the same way.
inc(release, identifier) { inc(release, identifier, identifierBase) {
switch (release) { switch (release) {
case "premajor": case "premajor":
this.prerelease.length = 0; this.prerelease.length = 0;
this.patch = 0; this.patch = 0;
this.minor = 0; this.minor = 0;
this.major++; this.major++;
this.inc("pre", identifier); this.inc("pre", identifier, identifierBase);
break; break;
case "preminor": case "preminor":
this.prerelease.length = 0; this.prerelease.length = 0;
this.patch = 0; this.patch = 0;
this.minor++; this.minor++;
this.inc("pre", identifier); this.inc("pre", identifier, identifierBase);
break; break;
case "prepatch": case "prepatch":
this.prerelease.length = 0; this.prerelease.length = 0;
this.inc("patch", identifier); this.inc("patch", identifier, identifierBase);
this.inc("pre", identifier); this.inc("pre", identifier, identifierBase);
break; break;
case "prerelease": case "prerelease":
if (this.prerelease.length === 0) { if (this.prerelease.length === 0) {
this.inc("patch", identifier); this.inc("patch", identifier, identifierBase);
} }
this.inc("pre", identifier); this.inc("pre", identifier, identifierBase);
break; break;
case "major": case "major":
if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
@ -345,9 +364,13 @@ var require_semver = __commonJS({
} }
this.prerelease = []; this.prerelease = [];
break; break;
case "pre": case "pre": {
const base = Number(identifierBase) ? 1 : 0;
if (!identifier && identifierBase === false) {
throw new Error("invalid increment argument: identifier is empty");
}
if (this.prerelease.length === 0) { if (this.prerelease.length === 0) {
this.prerelease = [0]; this.prerelease = [base];
} else { } else {
let i = this.prerelease.length; let i = this.prerelease.length;
while (--i >= 0) { while (--i >= 0) {
@ -357,19 +380,27 @@ var require_semver = __commonJS({
} }
} }
if (i === -1) { if (i === -1) {
this.prerelease.push(0); if (identifier === this.prerelease.join(".") && identifierBase === false) {
throw new Error("invalid increment argument: identifier already exists");
}
this.prerelease.push(base);
} }
} }
if (identifier) { if (identifier) {
let prerelease = [identifier, base];
if (identifierBase === false) {
prerelease = [identifier];
}
if (compareIdentifiers(this.prerelease[0], identifier) === 0) { if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
if (isNaN(this.prerelease[1])) { if (isNaN(this.prerelease[1])) {
this.prerelease = [identifier, 0]; this.prerelease = prerelease;
} }
} else { } else {
this.prerelease = [identifier, 0]; this.prerelease = prerelease;
} }
} }
break; break;
}
default: default:
throw new Error(`invalid increment argument: ${release}`); throw new Error(`invalid increment argument: ${release}`);
} }
@ -385,30 +416,19 @@ var require_semver = __commonJS({
// node_modules/semver/functions/parse.js // node_modules/semver/functions/parse.js
var require_parse = __commonJS({ var require_parse = __commonJS({
"node_modules/semver/functions/parse.js"(exports, module2) { "node_modules/semver/functions/parse.js"(exports, module2) {
var { MAX_LENGTH } = require_constants();
var { re, t } = require_re();
var SemVer = require_semver(); var SemVer = require_semver();
var parseOptions = require_parse_options(); var parse2 = (version2, options, throwErrors = false) => {
var parse2 = (version2, options) => {
options = parseOptions(options);
if (version2 instanceof SemVer) { if (version2 instanceof SemVer) {
return version2; return version2;
} }
if (typeof version2 !== "string") {
return null;
}
if (version2.length > MAX_LENGTH) {
return null;
}
const r = options.loose ? re[t.LOOSE] : re[t.FULL];
if (!r.test(version2)) {
return null;
}
try { try {
return new SemVer(version2, options); return new SemVer(version2, options);
} catch (er) { } catch (er) {
if (!throwErrors) {
return null; return null;
} }
throw er;
}
}; };
module2.exports = parse2; module2.exports = parse2;
} }
@ -442,8 +462,9 @@ var require_clean = __commonJS({
var require_inc = __commonJS({ var require_inc = __commonJS({
"node_modules/semver/functions/inc.js"(exports, module2) { "node_modules/semver/functions/inc.js"(exports, module2) {
var SemVer = require_semver(); var SemVer = require_semver();
var inc = (version2, release, options, identifier) => { var inc = (version2, release, options, identifier, identifierBase) => {
if (typeof options === "string") { if (typeof options === "string") {
identifierBase = identifier;
identifier = options; identifier = options;
options = void 0; options = void 0;
} }
@ -451,7 +472,7 @@ var require_inc = __commonJS({
return new SemVer( return new SemVer(
version2 instanceof SemVer ? version2.version : version2, version2 instanceof SemVer ? version2.version : version2,
options options
).inc(release, identifier).version; ).inc(release, identifier, identifierBase).version;
} catch (er) { } catch (er) {
return null; return null;
} }
@ -460,47 +481,41 @@ var require_inc = __commonJS({
} }
}); });
// node_modules/semver/functions/compare.js
var require_compare = __commonJS({
"node_modules/semver/functions/compare.js"(exports, module2) {
var SemVer = require_semver();
var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
module2.exports = compare;
}
});
// node_modules/semver/functions/eq.js
var require_eq = __commonJS({
"node_modules/semver/functions/eq.js"(exports, module2) {
var compare = require_compare();
var eq = (a, b, loose) => compare(a, b, loose) === 0;
module2.exports = eq;
}
});
// node_modules/semver/functions/diff.js // node_modules/semver/functions/diff.js
var require_diff = __commonJS({ var require_diff = __commonJS({
"node_modules/semver/functions/diff.js"(exports, module2) { "node_modules/semver/functions/diff.js"(exports, module2) {
var parse2 = require_parse(); var parse2 = require_parse();
var eq = require_eq();
var diff = (version1, version2) => { var diff = (version1, version2) => {
if (eq(version1, version2)) { const v12 = parse2(version1, null, true);
const v2 = parse2(version2, null, true);
const comparison = v12.compare(v2);
if (comparison === 0) {
return null; return null;
} else {
const v12 = parse2(version1);
const v2 = parse2(version2);
const hasPre = v12.prerelease.length || v2.prerelease.length;
const prefix = hasPre ? "pre" : "";
const defaultResult = hasPre ? "prerelease" : "";
for (const key in v12) {
if (key === "major" || key === "minor" || key === "patch") {
if (v12[key] !== v2[key]) {
return prefix + key;
} }
const v1Higher = comparison > 0;
const highVersion = v1Higher ? v12 : v2;
const lowVersion = v1Higher ? v2 : v12;
const highHasPre = !!highVersion.prerelease.length;
const prefix = highHasPre ? "pre" : "";
if (v12.major !== v2.major) {
return prefix + "major";
} }
if (v12.minor !== v2.minor) {
return prefix + "minor";
} }
return defaultResult; if (v12.patch !== v2.patch) {
return prefix + "patch";
} }
if (highHasPre) {
return "prerelease";
}
if (lowVersion.patch) {
return "patch";
}
if (lowVersion.minor) {
return "minor";
}
return "major";
}; };
module2.exports = diff; module2.exports = diff;
} }
@ -545,6 +560,15 @@ var require_prerelease = __commonJS({
} }
}); });
// node_modules/semver/functions/compare.js
var require_compare = __commonJS({
"node_modules/semver/functions/compare.js"(exports, module2) {
var SemVer = require_semver();
var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
module2.exports = compare;
}
});
// node_modules/semver/functions/rcompare.js // node_modules/semver/functions/rcompare.js
var require_rcompare = __commonJS({ var require_rcompare = __commonJS({
"node_modules/semver/functions/rcompare.js"(exports, module2) { "node_modules/semver/functions/rcompare.js"(exports, module2) {
@ -612,6 +636,15 @@ var require_lt = __commonJS({
} }
}); });
// node_modules/semver/functions/eq.js
var require_eq = __commonJS({
"node_modules/semver/functions/eq.js"(exports, module2) {
var compare = require_compare();
var eq = (a, b, loose) => compare(a, b, loose) === 0;
module2.exports = eq;
}
});
// node_modules/semver/functions/neq.js // node_modules/semver/functions/neq.js
var require_neq = __commonJS({ var require_neq = __commonJS({
"node_modules/semver/functions/neq.js"(exports, module2) { "node_modules/semver/functions/neq.js"(exports, module2) {
@ -1434,8 +1467,8 @@ var require_range = __commonJS({
} }
parseRange(range) { parseRange(range) {
range = range.trim(); range = range.trim();
const memoOpts = Object.keys(this.options).join(","); const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
const memoKey = `parseRange:${memoOpts}:${range}`; const memoKey = memoOpts + ":" + range;
const cached = cache2.get(memoKey); const cached = cache2.get(memoKey);
if (cached) { if (cached) {
return cached; return cached;
@ -1520,6 +1553,7 @@ var require_range = __commonJS({
tildeTrimReplace, tildeTrimReplace,
caretTrimReplace caretTrimReplace
} = require_re(); } = require_re();
var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
var isNullSet = (c) => c.value === "<0.0.0-0"; var isNullSet = (c) => c.value === "<0.0.0-0";
var isAny = (c) => c.value === ""; var isAny = (c) => c.value === "";
var isSatisfiable = (comparators, options) => { var isSatisfiable = (comparators, options) => {
@ -1805,12 +1839,6 @@ var require_comparator = __commonJS({
if (!(comp instanceof Comparator)) { if (!(comp instanceof Comparator)) {
throw new TypeError("a Comparator is required"); throw new TypeError("a Comparator is required");
} }
if (!options || typeof options !== "object") {
options = {
loose: !!options,
includePrerelease: false
};
}
if (this.operator === "") { if (this.operator === "") {
if (this.value === "") { if (this.value === "") {
return true; return true;
@ -1822,13 +1850,29 @@ var require_comparator = __commonJS({
} }
return new Range(this.value, options).test(comp.semver); return new Range(this.value, options).test(comp.semver);
} }
const sameDirectionIncreasing = (this.operator === ">=" || this.operator === ">") && (comp.operator === ">=" || comp.operator === ">"); options = parseOptions(options);
const sameDirectionDecreasing = (this.operator === "<=" || this.operator === "<") && (comp.operator === "<=" || comp.operator === "<"); if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
const sameSemVer = this.semver.version === comp.semver.version; return false;
const differentDirectionsInclusive = (this.operator === ">=" || this.operator === "<=") && (comp.operator === ">=" || comp.operator === "<="); }
const oppositeDirectionsLessThan = cmp(this.semver, "<", comp.semver, options) && (this.operator === ">=" || this.operator === ">") && (comp.operator === "<=" || comp.operator === "<"); if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
const oppositeDirectionsGreaterThan = cmp(this.semver, ">", comp.semver, options) && (this.operator === "<=" || this.operator === "<") && (comp.operator === ">=" || comp.operator === ">"); return false;
return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan; }
if (this.operator.startsWith(">") && comp.operator.startsWith(">")) {
return true;
}
if (this.operator.startsWith("<") && comp.operator.startsWith("<")) {
return true;
}
if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) {
return true;
}
if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) {
return true;
}
if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) {
return true;
}
return false;
} }
}; };
module2.exports = Comparator; module2.exports = Comparator;
@ -2086,7 +2130,7 @@ var require_intersects = __commonJS({
var intersects = (r1, r2, options) => { var intersects = (r1, r2, options) => {
r1 = new Range(r1, options); r1 = new Range(r1, options);
r2 = new Range(r2, options); r2 = new Range(r2, options);
return r1.intersects(r2); return r1.intersects(r2, options);
}; };
module2.exports = intersects; module2.exports = intersects;
} }
@ -2171,6 +2215,8 @@ var require_subset = __commonJS({
} }
return true; return true;
}; };
var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")];
var minimumVersion = [new Comparator(">=0.0.0")];
var simpleSubset = (sub, dom, options) => { var simpleSubset = (sub, dom, options) => {
if (sub === dom) { if (sub === dom) {
return true; return true;
@ -2179,16 +2225,16 @@ var require_subset = __commonJS({
if (dom.length === 1 && dom[0].semver === ANY) { if (dom.length === 1 && dom[0].semver === ANY) {
return true; return true;
} else if (options.includePrerelease) { } else if (options.includePrerelease) {
sub = [new Comparator(">=0.0.0-0")]; sub = minimumVersionWithPreRelease;
} else { } else {
sub = [new Comparator(">=0.0.0")]; sub = minimumVersion;
} }
} }
if (dom.length === 1 && dom[0].semver === ANY) { if (dom.length === 1 && dom[0].semver === ANY) {
if (options.includePrerelease) { if (options.includePrerelease) {
return true; return true;
} else { } else {
dom = [new Comparator(">=0.0.0")]; dom = minimumVersion;
} }
} }
const eqSet = /* @__PURE__ */ new Set(); const eqSet = /* @__PURE__ */ new Set();
@ -2388,6 +2434,7 @@ var require_semver2 = __commonJS({
src: internalRe.src, src: internalRe.src,
tokens: internalRe.t, tokens: internalRe.t,
SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
RELEASE_TYPES: constants.RELEASE_TYPES,
compareIdentifiers: identifiers.compareIdentifiers, compareIdentifiers: identifiers.compareIdentifiers,
rcompareIdentifiers: identifiers.rcompareIdentifiers rcompareIdentifiers: identifiers.rcompareIdentifiers
}; };
@ -2941,6 +2988,10 @@ var require_proxy = __commonJS({
if (!reqUrl.hostname) { if (!reqUrl.hostname) {
return false; return false;
} }
const reqHost = reqUrl.hostname;
if (isLoopbackAddress(reqHost)) {
return true;
}
const noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || ""; const noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || "";
if (!noProxy) { if (!noProxy) {
return false; return false;
@ -2958,13 +3009,17 @@ var require_proxy = __commonJS({
upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
} }
for (const upperNoProxyItem of noProxy.split(",").map((x) => x.trim().toUpperCase()).filter((x) => x)) { for (const upperNoProxyItem of noProxy.split(",").map((x) => x.trim().toUpperCase()).filter((x) => x)) {
if (upperReqHosts.some((x) => x === upperNoProxyItem)) { if (upperNoProxyItem === "*" || upperReqHosts.some((x) => x === upperNoProxyItem || x.endsWith(`.${upperNoProxyItem}`) || upperNoProxyItem.startsWith(".") && x.endsWith(`${upperNoProxyItem}`))) {
return true; return true;
} }
} }
return false; return false;
} }
exports.checkBypass = checkBypass; exports.checkBypass = checkBypass;
function isLoopbackAddress(host) {
const hostLower = host.toLowerCase();
return hostLower === "localhost" || hostLower.startsWith("127.") || hostLower.startsWith("[::1]") || hostLower.startsWith("[0:0:0:0:0:0:0:1]");
}
} }
}); });
@ -4621,11 +4676,13 @@ var require_io_util = __commonJS({
}; };
var _a; var _a;
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rename = exports.readlink = exports.readdir = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;
var fs = __importStar(require("fs")); var fs = __importStar(require("fs"));
var path2 = __importStar(require("path")); var path2 = __importStar(require("path"));
_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; _a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
exports.IS_WINDOWS = process.platform === "win32"; exports.IS_WINDOWS = process.platform === "win32";
exports.UV_FS_O_EXLOCK = 268435456;
exports.READONLY = fs.constants.O_RDONLY;
function exists(fsPath) { function exists(fsPath) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
try { try {
@ -4798,12 +4855,8 @@ var require_io = __commonJS({
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;
var assert_1 = require("assert"); var assert_1 = require("assert");
var childProcess = __importStar(require("child_process"));
var path2 = __importStar(require("path")); var path2 = __importStar(require("path"));
var util_1 = require("util");
var ioUtil = __importStar(require_io_util()); var ioUtil = __importStar(require_io_util());
var exec = util_1.promisify(childProcess.exec);
var execFile = util_1.promisify(childProcess.execFile);
function cp(source, dest, options = {}) { function cp(source, dest, options = {}) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const { force, recursive, copySourceDirectory } = readCopyOptions(options); const { force, recursive, copySourceDirectory } = readCopyOptions(options);
@ -4858,41 +4911,16 @@ var require_io = __commonJS({
if (/[*"<>|]/.test(inputPath)) { if (/[*"<>|]/.test(inputPath)) {
throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');
} }
}
try { try {
const cmdPath = ioUtil.getCmdPath(); yield ioUtil.rm(inputPath, {
if (yield ioUtil.isDirectory(inputPath, true)) { force: true,
yield exec(`${cmdPath} /s /c "rd /s /q "%inputPath%""`, { maxRetries: 3,
env: { inputPath } recursive: true,
retryDelay: 300
}); });
} else {
yield exec(`${cmdPath} /s /c "del /f /a "%inputPath%""`, {
env: { inputPath }
});
}
} catch (err) { } catch (err) {
if (err.code !== "ENOENT") throw new Error(`File was unable to be removed ${err}`);
throw err;
}
try {
yield ioUtil.unlink(inputPath);
} catch (err) {
if (err.code !== "ENOENT")
throw err;
}
} else {
let isDir = false;
try {
isDir = yield ioUtil.isDirectory(inputPath);
} catch (err) {
if (err.code !== "ENOENT")
throw err;
return;
}
if (isDir) {
yield execFile(`rm`, [`-rf`, `${inputPath}`]);
} else {
yield ioUtil.unlink(inputPath);
}
} }
}); });
} }
@ -7965,7 +7993,7 @@ var require_versions = __commonJS({
}[platform]; }[platform];
const downloadUrl = `https://ziglang.org/builds/zig-${addrhost}-${version2}.${ext}`; const downloadUrl = `https://ziglang.org/builds/zig-${addrhost}-${version2}.${ext}`;
const variantName = `zig-${addrhost}-${version2}`; const variantName = `zig-${addrhost}-${version2}`;
return { downloadUrl, variantName }; return { downloadUrl, variantName, version: version2 };
} }
function getJSON(opts) { function getJSON(opts) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -7994,7 +8022,7 @@ var require_versions = __commonJS({
} }
const downloadUrl = meta[host].tarball; const downloadUrl = meta[host].tarball;
const variantName = path2.basename(meta[host].tarball).replace(`.${ext}`, ""); const variantName = path2.basename(meta[host].tarball).replace(`.${ext}`, "");
return { downloadUrl, variantName }; return { downloadUrl, variantName, version: useVersion || version2 };
} }
module2.exports = { module2.exports = {
extForPlatform: extForPlatform2, extForPlatform: extForPlatform2,
@ -8015,13 +8043,21 @@ var {
resolveCommit, resolveCommit,
resolveVersion resolveVersion
} = require_versions(); } = require_versions();
var TOOL_NAME = "zig";
async function downloadZig(platform, version2) { async function downloadZig(platform, version2) {
const ext = extForPlatform(platform); const ext = extForPlatform(platform);
const { downloadUrl, variantName } = version2.includes("+") ? resolveCommit(platform, version2) : await resolveVersion(platform, version2); const { downloadUrl, variantName, version: useVersion } = version2.includes("+") ? resolveCommit(platform, version2) : await resolveVersion(platform, version2);
const cachedPath = cache.find(TOOL_NAME, useVersion);
if (cachedPath) {
actions.info(`using cached zig install: ${cachedPath}`);
return cachedPath;
}
actions.info(`no cached version found. downloading zig ${variantName}`);
const downloadPath = await cache.downloadTool(downloadUrl); const downloadPath = await cache.downloadTool(downloadUrl);
const zigPath = ext === "zip" ? await cache.extractZip(downloadPath) : await cache.extractTar(downloadPath, void 0, "x"); const zigPath = ext === "zip" ? await cache.extractZip(downloadPath) : await cache.extractTar(downloadPath, void 0, "x");
const binPath = path.join(zigPath, variantName); const binPath = path.join(zigPath, variantName);
const cachePath = await cache.cacheDir(binPath, "zig", variantName); const cachePath = await cache.cacheDir(binPath, TOOL_NAME, useVersion);
actions.info(`added zig ${useVersion} to the tool cache`);
return cachePath; return cachePath;
} }
async function main() { async function main() {
@ -8030,11 +8066,9 @@ async function main() {
actions.setFailed("This action does not work with Zig 0.1.0 and Zig 0.2.0"); actions.setFailed("This action does not work with Zig 0.1.0 and Zig 0.2.0");
return; return;
} }
let zigPath = cache.find("zig", version2); const zigPath = await downloadZig(os.platform(), version2);
if (!zigPath) {
zigPath = await downloadZig(os.platform(), version2);
}
actions.addPath(zigPath); actions.addPath(zigPath);
actions.info(`zig installed at ${zigPath}`);
} }
main().catch((err) => { main().catch((err) => {
console.error(err.stack); console.error(err.stack);

View File

@ -1,3 +1,5 @@
'use strict'
const os = require('os') const os = require('os')
const path = require('path') const path = require('path')
const semver = require('semver') const semver = require('semver')
@ -9,20 +11,30 @@ const {
resolveVersion resolveVersion
} = require('./versions') } = require('./versions')
const TOOL_NAME = 'zig'
async function downloadZig (platform, version) { async function downloadZig (platform, version) {
const ext = extForPlatform(platform) const ext = extForPlatform(platform)
const { downloadUrl, variantName } = version.includes('+') const { downloadUrl, variantName, version: useVersion } = version.includes('+')
? resolveCommit(platform, version) ? resolveCommit(platform, version)
: await resolveVersion(platform, version) : await resolveVersion(platform, version)
const cachedPath = cache.find(TOOL_NAME, useVersion)
if (cachedPath) {
actions.info(`using cached zig install: ${cachedPath}`)
return cachedPath
}
actions.info(`no cached version found. downloading zig ${variantName}`)
const downloadPath = await cache.downloadTool(downloadUrl) const downloadPath = await cache.downloadTool(downloadUrl)
const zigPath = ext === 'zip' const zigPath = ext === 'zip'
? await cache.extractZip(downloadPath) ? await cache.extractZip(downloadPath)
: await cache.extractTar(downloadPath, undefined, 'x') : await cache.extractTar(downloadPath, undefined, 'x')
const binPath = path.join(zigPath, variantName) const binPath = path.join(zigPath, variantName)
const cachePath = await cache.cacheDir(binPath, 'zig', variantName) const cachePath = await cache.cacheDir(binPath, TOOL_NAME, useVersion)
actions.info(`added zig ${useVersion} to the tool cache`)
return cachePath return cachePath
} }
@ -34,13 +46,11 @@ async function main () {
return return
} }
let zigPath = cache.find('zig', version) const zigPath = await downloadZig(os.platform(), version)
if (!zigPath) {
zigPath = await downloadZig(os.platform(), version)
}
// Add the `zig` binary to the $PATH // Add the `zig` binary to the $PATH
actions.addPath(zigPath) actions.addPath(zigPath)
actions.info(`zig installed at ${zigPath}`)
} }
main().catch((err) => { main().catch((err) => {

View File

@ -13,7 +13,7 @@
"simple-get": "^4.0.0" "simple-get": "^4.0.0"
}, },
"devDependencies": { "devDependencies": {
"esbuild": "^0.17.0", "esbuild": "^0.17.19",
"standard": "^17.0.0" "standard": "^17.0.0"
}, },
"homepage": "https://github.com/goto-bus-stop/setup-zig", "homepage": "https://github.com/goto-bus-stop/setup-zig",

12
test.js
View File

@ -7,20 +7,24 @@ const {
async function test () { async function test () {
assert.deepEqual(resolveCommit('linux', '0.6.0+4b48fccad'), { assert.deepEqual(resolveCommit('linux', '0.6.0+4b48fccad'), {
downloadUrl: 'https://ziglang.org/builds/zig-linux-x86_64-0.6.0+4b48fccad.tar.xz', downloadUrl: 'https://ziglang.org/builds/zig-linux-x86_64-0.6.0+4b48fccad.tar.xz',
variantName: 'zig-linux-x86_64-0.6.0+4b48fccad' variantName: 'zig-linux-x86_64-0.6.0+4b48fccad',
version: '0.6.0+4b48fccad'
}) })
assert.deepEqual(resolveCommit('win32', '0.6.0+4b48fccad'), { assert.deepEqual(resolveCommit('win32', '0.6.0+4b48fccad'), {
downloadUrl: 'https://ziglang.org/builds/zig-windows-x86_64-0.6.0+4b48fccad.zip', downloadUrl: 'https://ziglang.org/builds/zig-windows-x86_64-0.6.0+4b48fccad.zip',
variantName: 'zig-windows-x86_64-0.6.0+4b48fccad' variantName: 'zig-windows-x86_64-0.6.0+4b48fccad',
version: '0.6.0+4b48fccad'
}) })
assert.deepEqual(await resolveVersion('linux', '0.7.0'), { assert.deepEqual(await resolveVersion('linux', '0.7.0'), {
downloadUrl: 'https://ziglang.org/download/0.7.0/zig-linux-x86_64-0.7.0.tar.xz', downloadUrl: 'https://ziglang.org/download/0.7.0/zig-linux-x86_64-0.7.0.tar.xz',
variantName: 'zig-linux-x86_64-0.7.0' variantName: 'zig-linux-x86_64-0.7.0',
version: '0.7.0'
}) })
assert.deepEqual(await resolveVersion('win32', '0.4.0'), { assert.deepEqual(await resolveVersion('win32', '0.4.0'), {
downloadUrl: 'https://ziglang.org/download/0.4.0/zig-windows-x86_64-0.4.0.zip', downloadUrl: 'https://ziglang.org/download/0.4.0/zig-windows-x86_64-0.4.0.zip',
variantName: 'zig-windows-x86_64-0.4.0' variantName: 'zig-windows-x86_64-0.4.0',
version: '0.4.0'
}) })
await assert.doesNotReject(resolveVersion('linux', 'master')) await assert.doesNotReject(resolveVersion('linux', 'master'))
await assert.doesNotReject(resolveVersion('win32', 'master')) await assert.doesNotReject(resolveVersion('win32', 'master'))

View File

@ -21,7 +21,7 @@ function resolveCommit (platform, version) {
const downloadUrl = `https://ziglang.org/builds/zig-${addrhost}-${version}.${ext}` const downloadUrl = `https://ziglang.org/builds/zig-${addrhost}-${version}.${ext}`
const variantName = `zig-${addrhost}-${version}` const variantName = `zig-${addrhost}-${version}`
return { downloadUrl, variantName } return { downloadUrl, variantName, version }
} }
function getJSON (opts) { function getJSON (opts) {
@ -59,7 +59,7 @@ async function resolveVersion (platform, version) {
const downloadUrl = meta[host].tarball const downloadUrl = meta[host].tarball
const variantName = path.basename(meta[host].tarball).replace(`.${ext}`, '') const variantName = path.basename(meta[host].tarball).replace(`.${ext}`, '')
return { downloadUrl, variantName } return { downloadUrl, variantName, version: useVersion || version }
} }
module.exports = { module.exports = {