#!/usr/bin/env node // Copyright 2019-2024 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') { const versions = data.versions?.filter((v) => v.num.startsWith(target)) ?? [] console.log(versions.length ? versions[0].num : '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') } }) })