covector published pkg check with built-in API call (#1541)
parent
f83b9e9813
commit
8824a24e15
@ -1,60 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
// SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
/*
|
|
||||||
This script is solely intended to be run as part of the `covector publish` step to
|
|
||||||
check the latest version of a crate, considering the current minor version.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const https = require("https");
|
|
||||||
|
|
||||||
const kind = process.argv[2];
|
|
||||||
const packageName = process.argv[3];
|
|
||||||
const packageVersion = process.argv[4];
|
|
||||||
const target = packageVersion.substring(0, packageVersion.lastIndexOf("."));
|
|
||||||
|
|
||||||
let url = null;
|
|
||||||
switch (kind) {
|
|
||||||
case "cargo":
|
|
||||||
url = `https://crates.io/api/v1/crates/${packageName}`;
|
|
||||||
break;
|
|
||||||
case "npm":
|
|
||||||
url = `https://registry.npmjs.org/${packageName}`;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new Error("unexpected kind " + kind);
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = {
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
Accept: "application/json",
|
|
||||||
"User-Agent": "tauri (https://github.com/tauri-apps/tauri)",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
https.get(url, options, (response) => {
|
|
||||||
let chunks = [];
|
|
||||||
response.on("data", function (chunk) {
|
|
||||||
chunks.push(chunk);
|
|
||||||
});
|
|
||||||
|
|
||||||
response.on("end", function () {
|
|
||||||
const data = JSON.parse(chunks.join(""));
|
|
||||||
if (kind === "cargo") {
|
|
||||||
if (data.versions) {
|
|
||||||
const versions = data.versions.filter((v) => v.num.startsWith(target));
|
|
||||||
console.log(versions.length ? versions[0].num : "0.0.0");
|
|
||||||
} else {
|
|
||||||
console.log("0.0.0");
|
|
||||||
}
|
|
||||||
} else if (kind === "npm") {
|
|
||||||
const versions = Object.keys(data.versions || {}).filter((v) =>
|
|
||||||
v.startsWith(target),
|
|
||||||
);
|
|
||||||
console.log(versions[versions.length - 1] || "0.0.0");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
Loading…
Reference in new issue