aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/twbs/bootstrap/build/change-version.js
diff options
context:
space:
mode:
authorMario <mario@mariovavti.com>2021-07-29 09:31:47 +0000
committerMario <mario@mariovavti.com>2021-07-29 09:31:47 +0000
commitcb57c4ea188b982119f515f043a72f037f943025 (patch)
tree11144c1107f16047ed37f543fc34859d0c649e08 /vendor/twbs/bootstrap/build/change-version.js
parentc6133d2558ce29e44342fa7be8bb65e0059aea02 (diff)
parentb7ffec6fbe77eff3c550a922f50bd79321b293ed (diff)
downloadvolse-hubzilla-cb57c4ea188b982119f515f043a72f037f943025.tar.gz
volse-hubzilla-cb57c4ea188b982119f515f043a72f037f943025.tar.bz2
volse-hubzilla-cb57c4ea188b982119f515f043a72f037f943025.zip
Merge branch 'bs5' into 'dev'
Update to bootstrap 5 and implement next generation app menu (work in progress) See merge request hubzilla/core!1980
Diffstat (limited to 'vendor/twbs/bootstrap/build/change-version.js')
-rw-r--r--[-rwxr-xr-x]vendor/twbs/bootstrap/build/change-version.js117
1 files changed, 44 insertions, 73 deletions
diff --git a/vendor/twbs/bootstrap/build/change-version.js b/vendor/twbs/bootstrap/build/change-version.js
index 78bc8464b..63f231ea2 100755..100644
--- a/vendor/twbs/bootstrap/build/change-version.js
+++ b/vendor/twbs/bootstrap/build/change-version.js
@@ -9,102 +9,73 @@
'use strict'
-const fs = require('fs')
+const fs = require('fs').promises
const path = require('path')
-const sh = require('shelljs')
-
-sh.config.fatal = true
+const globby = require('globby')
+
+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}'
+]
+const GLOBBY_OPTIONS = {
+ cwd: path.join(__dirname, '..'),
+ gitignore: true
+}
// Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37
function regExpQuote(string) {
- return string.replace(/[$()*+.?[\\\]^{|}-]/g, '\\$&')
+ return string.replace(/[$()*+-.?[\\\]^{|}]/g, '\\$&')
}
function regExpQuoteReplacement(string) {
return string.replace(/\$/g, '$$')
}
-const DRY_RUN = false
+async function replaceRecursively(file, oldVersion, newVersion) {
+ const originalString = await fs.readFile(file, 'utf8')
+ const newString = originalString.replace(
+ new RegExp(regExpQuote(oldVersion), 'g'), regExpQuoteReplacement(newVersion)
+ )
-function walkAsync(directory, excludedDirectories, fileCallback, errback) {
- if (excludedDirectories.has(path.parse(directory).base)) {
+ // No need to move any further if the strings are identical
+ if (originalString === newString) {
return
}
- fs.readdir(directory, (err, names) => {
- if (err) {
- errback(err)
- return
- }
-
- names.forEach(name => {
- const filepath = path.join(directory, name)
- fs.lstat(filepath, (err, stats) => {
- if (err) {
- process.nextTick(errback, err)
- return
- }
-
- if (stats.isDirectory()) {
- process.nextTick(walkAsync, filepath, excludedDirectories, fileCallback, errback)
- } else if (stats.isFile()) {
- process.nextTick(fileCallback, filepath)
- }
- })
- })
- })
-}
+ if (VERBOSE) {
+ console.log(`FILE: ${file}`)
+ }
-function replaceRecursively(directory, excludedDirectories, allowedExtensions, original, replacement) {
- original = new RegExp(regExpQuote(original), 'g')
- replacement = regExpQuoteReplacement(replacement)
- const updateFile = DRY_RUN ? filepath => {
- if (allowedExtensions.has(path.parse(filepath).ext)) {
- console.log(`FILE: ${filepath}`)
- } else {
- console.log(`EXCLUDED:${filepath}`)
- }
- } : filepath => {
- if (allowedExtensions.has(path.parse(filepath).ext)) {
- sh.sed('-i', original, replacement, filepath)
- }
+ if (DRY_RUN) {
+ return
}
- walkAsync(directory, excludedDirectories, updateFile, err => {
- console.error('ERROR while traversing directory!:')
- console.error(err)
- process.exit(1)
- })
+ await fs.writeFile(file, newString, 'utf8')
}
-function main(args) {
- if (args.length !== 2) {
- console.error('USAGE: change-version old_version new_version')
+async function main(args) {
+ const [oldVersion, newVersion] = args
+
+ if (!oldVersion || !newVersion) {
+ console.error('USAGE: change-version old_version new_version [--verbose] [--dry[-run]]')
console.error('Got arguments:', args)
process.exit(1)
}
- const oldVersion = args[0]
- const newVersion = args[1]
- const EXCLUDED_DIRS = new Set([
- '.git',
- '_gh_pages',
- 'node_modules',
- 'vendor'
- ])
- const INCLUDED_EXTENSIONS = new Set([
- // This extension whitelist is how we avoid modifying binary files
- '',
- '.css',
- '.html',
- '.js',
- '.json',
- '.md',
- '.scss',
- '.txt',
- '.yml'
- ])
- replaceRecursively('.', EXCLUDED_DIRS, INCLUDED_EXTENSIONS, oldVersion, newVersion)
+ // Strip any leading `v` from arguments because otherwise we will end up with duplicate `v`s
+ [oldVersion, newVersion].map(arg => arg.startsWith('v') ? arg.slice(1) : arg)
+
+ try {
+ const files = await globby(GLOB, GLOBBY_OPTIONS)
+
+ await Promise.all(files.map(file => replaceRecursively(file, oldVersion, newVersion)))
+ } catch (error) {
+ console.error(error)
+ process.exit(1)
+ }
}
main(process.argv.slice(2))