Tweak change-version.js

This commit is contained in:
XhmikosR 2021-01-12 16:46:24 +02:00
parent 69afafe811
commit 0cbe6a0132

View file

@ -15,6 +15,11 @@ const sh = require('shelljs')
sh.config.fatal = true sh.config.fatal = true
const VERBOSE = process.argv.includes('--verbose')
const DRY_RUN = process.argv.includes('--dry') || process.argv.includes('--dry-run')
const ROOT_DIR = path.join(__dirname, '..')
// Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37 // Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37
function regExpQuote(string) { function regExpQuote(string) {
return string.replace(/[$()*+-.?[\\\]^{|}]/g, '\\$&') return string.replace(/[$()*+-.?[\\\]^{|}]/g, '\\$&')
@ -24,8 +29,6 @@ function regExpQuoteReplacement(string) {
return string.replace(/\$/g, '$$') return string.replace(/\$/g, '$$')
} }
const DRY_RUN = false
function walkAsync(directory, excludedDirectories, fileCallback, errback) { function walkAsync(directory, excludedDirectories, fileCallback, errback) {
if (excludedDirectories.has(path.parse(directory).base)) { if (excludedDirectories.has(path.parse(directory).base)) {
return return
@ -56,19 +59,19 @@ function walkAsync(directory, excludedDirectories, fileCallback, errback) {
} }
function replaceRecursively(directory, excludedDirectories, allowedExtensions, original, replacement) { function replaceRecursively(directory, excludedDirectories, allowedExtensions, original, replacement) {
original = new RegExp(regExpQuote(original), 'g') const updateFile = filepath => {
replacement = regExpQuoteReplacement(replacement)
const updateFile = DRY_RUN ?
filepath => {
if (allowedExtensions.has(path.parse(filepath).ext)) { if (allowedExtensions.has(path.parse(filepath).ext)) {
if (VERBOSE) {
console.log(`FILE: ${filepath}`) console.log(`FILE: ${filepath}`)
} else {
console.log(`EXCLUDED:${filepath}`)
} }
} :
filepath => { if (DRY_RUN) {
if (allowedExtensions.has(path.parse(filepath).ext)) { return
sh.sed('-i', original, replacement, filepath) }
sh.sed('-i', new RegExp(regExpQuote(original), 'g'), regExpQuoteReplacement(replacement), filepath)
} else if (VERBOSE) {
console.log(`EXCLUDED: ${filepath}`)
} }
} }
@ -80,22 +83,22 @@ function replaceRecursively(directory, excludedDirectories, allowedExtensions, o
} }
function main(args) { function main(args) {
if (args.length !== 2) { const [oldVersion, newVersion] = args
console.error('USAGE: change-version old_version new_version')
if (!oldVersion || !newVersion) {
console.error('USAGE: change-version old_version new_version [--verbose] [--dry[-run]]')
console.error('Got arguments:', args) console.error('Got arguments:', args)
process.exit(1) process.exit(1)
} }
const oldVersion = args[0]
const newVersion = args[1]
const EXCLUDED_DIRS = new Set([ const EXCLUDED_DIRS = new Set([
'.git', '.git',
'_gh_pages', '_gh_pages',
'node_modules', 'node_modules',
'vendor' 'resources'
]) ])
const INCLUDED_EXTENSIONS = new Set([ const INCLUDED_EXTENSIONS = new Set([
// This extension allowlist is how we avoid modifying binary files // This extensions list is how we avoid modifying binary files
'', '',
'.css', '.css',
'.html', '.html',
@ -106,7 +109,8 @@ function main(args) {
'.txt', '.txt',
'.yml' '.yml'
]) ])
replaceRecursively('.', EXCLUDED_DIRS, INCLUDED_EXTENSIONS, oldVersion, newVersion)
replaceRecursively(ROOT_DIR, EXCLUDED_DIRS, INCLUDED_EXTENSIONS, oldVersion, newVersion)
} }
main(process.argv.slice(2)) main(process.argv.slice(2))