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:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- run: npm install
- uses: EndBug/add-and-commit@v4
with:

View File

@ -6,7 +6,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Install dependencies
run: npm install
- name: Run tests
@ -18,7 +18,7 @@ jobs:
fail-fast: false
matrix:
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:
- os: ubuntu-latest
zig-version: 0.5.0

302
dist/index.js vendored
View File

@ -1,3 +1,4 @@
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@ -40,11 +41,23 @@ var require_constants = __commonJS({
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
9007199254740991;
var MAX_SAFE_COMPONENT_LENGTH = 16;
var RELEASE_TYPES = [
"major",
"premajor",
"minor",
"preminor",
"patch",
"prepatch",
"prerelease"
];
module2.exports = {
SEMVER_SPEC_VERSION,
MAX_LENGTH,
MAX_SAFE_COMPONENT_LENGTH,
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
var require_parse_options = __commonJS({
"node_modules/semver/internal/parse-options.js"(exports, module2) {
var opts = ["includePrerelease", "loose", "rtl"];
var parseOptions = (options) => !options ? {} : typeof options !== "object" ? { loose: true } : opts.filter((k) => options[k]).reduce((o, k) => {
o[k] = true;
return o;
}, {});
var looseOption = Object.freeze({ loose: true });
var emptyOpts = Object.freeze({});
var parseOptions = (options) => {
if (!options) {
return emptyOpts;
}
if (typeof options !== "object") {
return looseOption;
}
return options;
};
module2.exports = parseOptions;
}
});
@ -172,7 +191,7 @@ var require_semver = __commonJS({
version2 = version2.version;
}
} 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) {
throw new TypeError(
@ -298,31 +317,31 @@ var require_semver = __commonJS({
}
// preminor will bump the version up to the next minor release, and immediately
// down to pre-release. premajor and prepatch work the same way.
inc(release, identifier) {
inc(release, identifier, identifierBase) {
switch (release) {
case "premajor":
this.prerelease.length = 0;
this.patch = 0;
this.minor = 0;
this.major++;
this.inc("pre", identifier);
this.inc("pre", identifier, identifierBase);
break;
case "preminor":
this.prerelease.length = 0;
this.patch = 0;
this.minor++;
this.inc("pre", identifier);
this.inc("pre", identifier, identifierBase);
break;
case "prepatch":
this.prerelease.length = 0;
this.inc("patch", identifier);
this.inc("pre", identifier);
this.inc("patch", identifier, identifierBase);
this.inc("pre", identifier, identifierBase);
break;
case "prerelease":
if (this.prerelease.length === 0) {
this.inc("patch", identifier);
this.inc("patch", identifier, identifierBase);
}
this.inc("pre", identifier);
this.inc("pre", identifier, identifierBase);
break;
case "major":
if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
@ -345,9 +364,13 @@ var require_semver = __commonJS({
}
this.prerelease = [];
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) {
this.prerelease = [0];
this.prerelease = [base];
} else {
let i = this.prerelease.length;
while (--i >= 0) {
@ -357,19 +380,27 @@ var require_semver = __commonJS({
}
}
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) {
let prerelease = [identifier, base];
if (identifierBase === false) {
prerelease = [identifier];
}
if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
if (isNaN(this.prerelease[1])) {
this.prerelease = [identifier, 0];
this.prerelease = prerelease;
}
} else {
this.prerelease = [identifier, 0];
this.prerelease = prerelease;
}
}
break;
}
default:
throw new Error(`invalid increment argument: ${release}`);
}
@ -385,30 +416,19 @@ var require_semver = __commonJS({
// node_modules/semver/functions/parse.js
var require_parse = __commonJS({
"node_modules/semver/functions/parse.js"(exports, module2) {
var { MAX_LENGTH } = require_constants();
var { re, t } = require_re();
var SemVer = require_semver();
var parseOptions = require_parse_options();
var parse2 = (version2, options) => {
options = parseOptions(options);
var parse2 = (version2, options, throwErrors = false) => {
if (version2 instanceof SemVer) {
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 {
return new SemVer(version2, options);
} catch (er) {
if (!throwErrors) {
return null;
}
throw er;
}
};
module2.exports = parse2;
}
@ -442,8 +462,9 @@ var require_clean = __commonJS({
var require_inc = __commonJS({
"node_modules/semver/functions/inc.js"(exports, module2) {
var SemVer = require_semver();
var inc = (version2, release, options, identifier) => {
var inc = (version2, release, options, identifier, identifierBase) => {
if (typeof options === "string") {
identifierBase = identifier;
identifier = options;
options = void 0;
}
@ -451,7 +472,7 @@ var require_inc = __commonJS({
return new SemVer(
version2 instanceof SemVer ? version2.version : version2,
options
).inc(release, identifier).version;
).inc(release, identifier, identifierBase).version;
} catch (er) {
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
var require_diff = __commonJS({
"node_modules/semver/functions/diff.js"(exports, module2) {
var parse2 = require_parse();
var eq = require_eq();
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;
} 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;
}
@ -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
var require_rcompare = __commonJS({
"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
var require_neq = __commonJS({
"node_modules/semver/functions/neq.js"(exports, module2) {
@ -1434,8 +1467,8 @@ var require_range = __commonJS({
}
parseRange(range) {
range = range.trim();
const memoOpts = Object.keys(this.options).join(",");
const memoKey = `parseRange:${memoOpts}:${range}`;
const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
const memoKey = memoOpts + ":" + range;
const cached = cache2.get(memoKey);
if (cached) {
return cached;
@ -1520,6 +1553,7 @@ var require_range = __commonJS({
tildeTrimReplace,
caretTrimReplace
} = require_re();
var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
var isNullSet = (c) => c.value === "<0.0.0-0";
var isAny = (c) => c.value === "";
var isSatisfiable = (comparators, options) => {
@ -1805,12 +1839,6 @@ var require_comparator = __commonJS({
if (!(comp instanceof Comparator)) {
throw new TypeError("a Comparator is required");
}
if (!options || typeof options !== "object") {
options = {
loose: !!options,
includePrerelease: false
};
}
if (this.operator === "") {
if (this.value === "") {
return true;
@ -1822,13 +1850,29 @@ var require_comparator = __commonJS({
}
return new Range(this.value, options).test(comp.semver);
}
const sameDirectionIncreasing = (this.operator === ">=" || this.operator === ">") && (comp.operator === ">=" || comp.operator === ">");
const sameDirectionDecreasing = (this.operator === "<=" || this.operator === "<") && (comp.operator === "<=" || comp.operator === "<");
const sameSemVer = this.semver.version === comp.semver.version;
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 === "<");
const oppositeDirectionsGreaterThan = cmp(this.semver, ">", comp.semver, options) && (this.operator === "<=" || this.operator === "<") && (comp.operator === ">=" || comp.operator === ">");
return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
options = parseOptions(options);
if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
return false;
}
if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
return false;
}
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;
@ -2086,7 +2130,7 @@ var require_intersects = __commonJS({
var intersects = (r1, r2, options) => {
r1 = new Range(r1, options);
r2 = new Range(r2, options);
return r1.intersects(r2);
return r1.intersects(r2, options);
};
module2.exports = intersects;
}
@ -2171,6 +2215,8 @@ var require_subset = __commonJS({
}
return true;
};
var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")];
var minimumVersion = [new Comparator(">=0.0.0")];
var simpleSubset = (sub, dom, options) => {
if (sub === dom) {
return true;
@ -2179,16 +2225,16 @@ var require_subset = __commonJS({
if (dom.length === 1 && dom[0].semver === ANY) {
return true;
} else if (options.includePrerelease) {
sub = [new Comparator(">=0.0.0-0")];
sub = minimumVersionWithPreRelease;
} else {
sub = [new Comparator(">=0.0.0")];
sub = minimumVersion;
}
}
if (dom.length === 1 && dom[0].semver === ANY) {
if (options.includePrerelease) {
return true;
} else {
dom = [new Comparator(">=0.0.0")];
dom = minimumVersion;
}
}
const eqSet = /* @__PURE__ */ new Set();
@ -2388,6 +2434,7 @@ var require_semver2 = __commonJS({
src: internalRe.src,
tokens: internalRe.t,
SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
RELEASE_TYPES: constants.RELEASE_TYPES,
compareIdentifiers: identifiers.compareIdentifiers,
rcompareIdentifiers: identifiers.rcompareIdentifiers
};
@ -2941,6 +2988,10 @@ var require_proxy = __commonJS({
if (!reqUrl.hostname) {
return false;
}
const reqHost = reqUrl.hostname;
if (isLoopbackAddress(reqHost)) {
return true;
}
const noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || "";
if (!noProxy) {
return false;
@ -2958,13 +3009,17 @@ var require_proxy = __commonJS({
upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
}
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 false;
}
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;
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 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.UV_FS_O_EXLOCK = 268435456;
exports.READONLY = fs.constants.O_RDONLY;
function exists(fsPath) {
return __awaiter(this, void 0, void 0, function* () {
try {
@ -4798,12 +4855,8 @@ var require_io = __commonJS({
Object.defineProperty(exports, "__esModule", { value: true });
exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;
var assert_1 = require("assert");
var childProcess = __importStar(require("child_process"));
var path2 = __importStar(require("path"));
var util_1 = require("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 = {}) {
return __awaiter(this, void 0, void 0, function* () {
const { force, recursive, copySourceDirectory } = readCopyOptions(options);
@ -4858,41 +4911,16 @@ var require_io = __commonJS({
if (/[*"<>|]/.test(inputPath)) {
throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');
}
}
try {
const cmdPath = ioUtil.getCmdPath();
if (yield ioUtil.isDirectory(inputPath, true)) {
yield exec(`${cmdPath} /s /c "rd /s /q "%inputPath%""`, {
env: { inputPath }
yield ioUtil.rm(inputPath, {
force: true,
maxRetries: 3,
recursive: true,
retryDelay: 300
});
} else {
yield exec(`${cmdPath} /s /c "del /f /a "%inputPath%""`, {
env: { inputPath }
});
}
} catch (err) {
if (err.code !== "ENOENT")
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);
}
throw new Error(`File was unable to be removed ${err}`);
}
});
}
@ -7965,7 +7993,7 @@ var require_versions = __commonJS({
}[platform];
const downloadUrl = `https://ziglang.org/builds/zig-${addrhost}-${version2}.${ext}`;
const variantName = `zig-${addrhost}-${version2}`;
return { downloadUrl, variantName };
return { downloadUrl, variantName, version: version2 };
}
function getJSON(opts) {
return new Promise((resolve, reject) => {
@ -7994,7 +8022,7 @@ var require_versions = __commonJS({
}
const downloadUrl = meta[host].tarball;
const variantName = path2.basename(meta[host].tarball).replace(`.${ext}`, "");
return { downloadUrl, variantName };
return { downloadUrl, variantName, version: useVersion || version2 };
}
module2.exports = {
extForPlatform: extForPlatform2,
@ -8015,13 +8043,21 @@ var {
resolveCommit,
resolveVersion
} = require_versions();
var TOOL_NAME = "zig";
async function downloadZig(platform, version2) {
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 zigPath = ext === "zip" ? await cache.extractZip(downloadPath) : await cache.extractTar(downloadPath, void 0, "x");
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;
}
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");
return;
}
let zigPath = cache.find("zig", version2);
if (!zigPath) {
zigPath = await downloadZig(os.platform(), version2);
}
const zigPath = await downloadZig(os.platform(), version2);
actions.addPath(zigPath);
actions.info(`zig installed at ${zigPath}`);
}
main().catch((err) => {
console.error(err.stack);

View File

@ -1,3 +1,5 @@
'use strict'
const os = require('os')
const path = require('path')
const semver = require('semver')
@ -9,20 +11,30 @@ const {
resolveVersion
} = require('./versions')
const TOOL_NAME = 'zig'
async function downloadZig (platform, version) {
const ext = extForPlatform(platform)
const { downloadUrl, variantName } = version.includes('+')
const { downloadUrl, variantName, version: useVersion } = version.includes('+')
? resolveCommit(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 zigPath = ext === 'zip'
? await cache.extractZip(downloadPath)
: await cache.extractTar(downloadPath, undefined, 'x')
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
}
@ -34,13 +46,11 @@ async function main () {
return
}
let zigPath = cache.find('zig', version)
if (!zigPath) {
zigPath = await downloadZig(os.platform(), version)
}
const zigPath = await downloadZig(os.platform(), version)
// Add the `zig` binary to the $PATH
actions.addPath(zigPath)
actions.info(`zig installed at ${zigPath}`)
}
main().catch((err) => {

View File

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

12
test.js
View File

@ -7,20 +7,24 @@ const {
async function test () {
assert.deepEqual(resolveCommit('linux', '0.6.0+4b48fccad'), {
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'), {
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'), {
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'), {
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('win32', 'master'))

View File

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