123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/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') {
- 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')
- }
- })
- })
|