#!/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"); } }); });