From 10eebe2a7dddb507aebe3851b0c016fdf3cb2c18 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Mon, 31 Jul 2023 09:28:12 +0300 Subject: [PATCH] Improve change-version script Only replace the version in specific files instead of blindly all repo files --- build/change-version.mjs | 43 +++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/build/change-version.mjs b/build/change-version.mjs index 2a16f2f21088..3c1e70668982 100644 --- a/build/change-version.mjs +++ b/build/change-version.mjs @@ -6,24 +6,22 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ +import { execFile } from 'node:child_process' import fs from 'node:fs/promises' -import path from 'node:path' -import { fileURLToPath } from 'node:url' -import globby from 'globby' - -const __dirname = path.dirname(fileURLToPath(import.meta.url)) +import process from 'node:process' const VERBOSE = process.argv.includes('--verbose') const DRY_RUN = process.argv.includes('--dry') || process.argv.includes('--dry-run') -// These are the filetypes we only care about replacing the version -const GLOB = [ - '**/*.{css,html,js,json,md,scss,txt,yml}' +// These are the files we only care about replacing the version +const FILES = [ + 'README.md', + 'hugo.yml', + 'js/src/base-component.js', + 'package.js', + 'scss/mixins/_banner.scss', + 'site/data/docs-versions.yml' ] -const GLOBBY_OPTIONS = { - cwd: path.join(__dirname, '..'), - gitignore: true -} // Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37 function regExpQuote(string) { @@ -54,7 +52,7 @@ async function replaceRecursively(file, oldVersion, newVersion) { } if (VERBOSE) { - console.log(`FILE: ${file}`) + console.log(`Found ${oldVersion} in ${file}`) } if (DRY_RUN) { @@ -64,6 +62,19 @@ async function replaceRecursively(file, oldVersion, newVersion) { await fs.writeFile(file, newString, 'utf8') } +function bumpNpmVersion(newVersion) { + if (DRY_RUN) { + return + } + + execFile('npm', ['version', newVersion, '--no-git-tag'], { shell: true }, error => { + if (error) { + console.error(error) + process.exit(1) + } + }) +} + function showUsage(args) { console.error('USAGE: change-version old_version new_version [--verbose] [--dry[-run]]') console.error('Got arguments:', args) @@ -87,11 +98,11 @@ async function main(args) { showUsage(args) } - try { - const files = await globby(GLOB, GLOBBY_OPTIONS) + bumpNpmVersion(newVersion) + try { await Promise.all( - files.map(file => replaceRecursively(file, oldVersion, newVersion)) + FILES.map(file => replaceRecursively(file, oldVersion, newVersion)) ) } catch (error) { console.error(error)