diff --git a/package.json b/package.json index 1b34b34..ed33e40 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "musescore-downloader", - "version": "0.23.4", + "version": "0.23.5", "description": "download sheet music from musescore.com for free, no login or Musescore Pro required | 免登录、免 Musescore Pro,免费下载 musescore.com 上的曲谱", "main": "dist/main.js", "bin": "dist/cli.js", diff --git a/src/cli.ts b/src/cli.ts index 420d0a5..5ad084c 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -10,6 +10,7 @@ import { loadMscore, INDV_DOWNLOADS, WebMscore } from './mscore' import { ScoreInfo, ScoreInfoHtml, ScoreInfoObj, getActualId } from './scoreinfo' import { getLibreScoreLink } from './librescore-link' import { escapeFilename } from './utils' +import { isNpx, isLatest, installedVersion, latestVersion } from './npm-data' import i18n from './i18n' const inquirer: typeof import('inquirer') = require('inquirer') @@ -184,4 +185,12 @@ void (async () => { }), ) spinner.succeed('OK') + + if (!(await isNpx())) { + const installed = await installedVersion() + const latest = await latestVersion() + if (!isLatest(installed, latest)) { + console.log(chalk.yellowBright(`Your installed version (${installed}) of the musescore-downloader CLI is not the latest one (${latest})!\nRun npm i -g musescore-downloader to update.`)) + } + } })() diff --git a/src/npm-data.ts b/src/npm-data.ts new file mode 100644 index 0000000..ad27048 --- /dev/null +++ b/src/npm-data.ts @@ -0,0 +1,21 @@ +import { exec as _exec } from 'child_process' +import { promisify } from 'util' + +const exec = promisify(_exec) + +export async function isNpx() { + const output = await exec('npm list -g musescore-downloader') + return output.stdout.includes('(empty)') +} + +export async function installedVersion() { + return require('../package.json').version +} + +export async function latestVersion() { + return (await exec('npm info musescore-downloader version')).stdout.trim() +} + +export async function isLatest() { + return await installedVersion() === await latestVersion() +}