]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Improve change-version script (#38983)
authorXhmikosR <xhmikosr@gmail.com>
Mon, 21 Aug 2023 06:03:09 +0000 (09:03 +0300)
committerGitHub <noreply@github.com>
Mon, 21 Aug 2023 06:03:09 +0000 (09:03 +0300)
Only replace the version in specific files instead of blindly all repo files

build/change-version.mjs

index 2a16f2f2108868a303007485321f2299aeb1d686..3c1e706689826b5593e51b7154242da4433d51c8 100644 (file)
@@ -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)