From 46a7f50115d0546759f4f93b56d64440acce06c7 Mon Sep 17 00:00:00 2001 From: Ruben Vergani Date: Fri, 15 Jan 2021 08:54:01 +0100 Subject: [PATCH 1/8] add functions to check if msdl is running --- src/npm-data.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/npm-data.ts diff --git a/src/npm-data.ts b/src/npm-data.ts new file mode 100644 index 0000000..cec8ade --- /dev/null +++ b/src/npm-data.ts @@ -0,0 +1,16 @@ +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 isLatest() { + const version = (/musescore-downloader@([\d\.]+)/).exec((await exec('npm list -g musescore-downloader')).stdout)![1] + const latest = (await exec('npm info musescore-downloader version')).stdout.trim() + + return version.trim() === latest +} \ No newline at end of file From 08294f564b220c0320cbf4b5f8a7158d91532062 Mon Sep 17 00:00:00 2001 From: Ruben Vergani Date: Fri, 15 Jan 2021 08:55:06 +0100 Subject: [PATCH 2/8] spaces, not tabs --- src/npm-data.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/npm-data.ts b/src/npm-data.ts index cec8ade..df40900 100644 --- a/src/npm-data.ts +++ b/src/npm-data.ts @@ -4,13 +4,13 @@ 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)'); + const output = await exec('npm list -g musescore-downloader') + return output.stdout.includes('(empty)'); } export async function isLatest() { - const version = (/musescore-downloader@([\d\.]+)/).exec((await exec('npm list -g musescore-downloader')).stdout)![1] - const latest = (await exec('npm info musescore-downloader version')).stdout.trim() + const version = (/musescore-downloader@([\d\.]+)/).exec((await exec('npm list -g musescore-downloader')).stdout)![1] + const latest = (await exec('npm info musescore-downloader version')).stdout.trim() - return version.trim() === latest + return version.trim() === latest } \ No newline at end of file From 2b842e267fe6d9f1dc288614eadbb72acf9ce314 Mon Sep 17 00:00:00 2001 From: Ruben Vergani Date: Fri, 15 Jan 2021 09:01:11 +0100 Subject: [PATCH 3/8] expose the installed and latest version functions --- src/npm-data.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/npm-data.ts b/src/npm-data.ts index df40900..8da6505 100644 --- a/src/npm-data.ts +++ b/src/npm-data.ts @@ -8,9 +8,14 @@ export async function isNpx() { return output.stdout.includes('(empty)'); } -export async function isLatest() { - const version = (/musescore-downloader@([\d\.]+)/).exec((await exec('npm list -g musescore-downloader')).stdout)![1] - const latest = (await exec('npm info musescore-downloader version')).stdout.trim() +export async function installedVersion() { + return (/musescore-downloader@([\d\.]+)/).exec((await exec('npm list -g musescore-downloader')).stdout)![1].trim() +} - return version.trim() === latest +export async function latestVersion() { + return (await exec('npm info musescore-downloader version')).stdout.trim() +} + +export async function isLatest() { + return await installedVersion() === await latestVersion() } \ No newline at end of file From da5d53898af7ae9593f62f3958244f8f0833af52 Mon Sep 17 00:00:00 2001 From: Ruben Vergani Date: Fri, 15 Jan 2021 09:02:48 +0100 Subject: [PATCH 4/8] add the check to the CLI --- src/cli.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cli.ts b/src/cli.ts index 420d0a5..a54460d 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,8 @@ void (async () => { }), ) spinner.succeed('OK') + + if (!(await isNpx()) && !(await isLatest())) { + console.log(chalk.yellowBright(`Your installed version (${await installedVersion()}) of the musescore-downloader CLI is not the latest one (${await latestVersion()})!\nRun npm i -g musescore-downloader to update.`)) + } })() From 463ea5d416a07390c3ffc48c4132753f258a9e0d Mon Sep 17 00:00:00 2001 From: Ruben Vergani Date: Fri, 15 Jan 2021 09:06:31 +0100 Subject: [PATCH 5/8] for reasons to me unknown, eslint doesn't work, so manually fixed the file --- src/npm-data.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/npm-data.ts b/src/npm-data.ts index 8da6505..0d3b99c 100644 --- a/src/npm-data.ts +++ b/src/npm-data.ts @@ -1,11 +1,11 @@ -import { exec as _exec } from 'child_process'; -import { promisify } from 'util'; +import { exec as _exec } from 'child_process' +import { promisify } from 'util' -const exec = promisify(_exec); +const exec = promisify(_exec) export async function isNpx() { const output = await exec('npm list -g musescore-downloader') - return output.stdout.includes('(empty)'); + return output.stdout.includes('(empty)') } export async function installedVersion() { From b8181f421d5392c8467f97ab6b71c7570b6f9b20 Mon Sep 17 00:00:00 2001 From: Ruben Vergani Date: Fri, 15 Jan 2021 09:08:40 +0100 Subject: [PATCH 6/8] bump npm --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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", From 030d37ddc0725c33e4a9f0a2c9f4e6ed82aba8d0 Mon Sep 17 00:00:00 2001 From: Xmader Date: Wed, 20 Jan 2021 10:42:33 -0500 Subject: [PATCH 7/8] refactor: read installed version using the package.json --- src/npm-data.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/npm-data.ts b/src/npm-data.ts index 0d3b99c..ad27048 100644 --- a/src/npm-data.ts +++ b/src/npm-data.ts @@ -9,7 +9,7 @@ export async function isNpx() { } export async function installedVersion() { - return (/musescore-downloader@([\d\.]+)/).exec((await exec('npm list -g musescore-downloader')).stdout)![1].trim() + return require('../package.json').version } export async function latestVersion() { @@ -18,4 +18,4 @@ export async function latestVersion() { export async function isLatest() { return await installedVersion() === await latestVersion() -} \ No newline at end of file +} From bd943675d84293f45908b41090687de9af256436 Mon Sep 17 00:00:00 2001 From: Xmader Date: Wed, 20 Jan 2021 10:44:00 -0500 Subject: [PATCH 8/8] refactor: check for latest version --- src/cli.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index a54460d..5ad084c 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -186,7 +186,11 @@ void (async () => { ) spinner.succeed('OK') - if (!(await isNpx()) && !(await isLatest())) { - console.log(chalk.yellowBright(`Your installed version (${await installedVersion()}) of the musescore-downloader CLI is not the latest one (${await latestVersion()})!\nRun npm i -g musescore-downloader to update.`)) + 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.`)) + } } })()