Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
XhmikosR
55b0816060 Remove shelljs 2021-01-12 17:36:28 +02:00
XhmikosR
0cbe6a0132 Tweak change-version.js 2021-01-12 17:34:03 +02:00

View file

@ -11,9 +11,11 @@
const fs = require('fs')
const path = require('path')
const sh = require('shelljs')
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
function regExpQuote(string) {
@ -24,8 +26,6 @@ function regExpQuoteReplacement(string) {
return string.replace(/\$/g, '$$')
}
const DRY_RUN = false
function walkAsync(directory, excludedDirectories, fileCallback, errback) {
if (excludedDirectories.has(path.parse(directory).base)) {
return
@ -56,20 +56,44 @@ function walkAsync(directory, excludedDirectories, fileCallback, errback) {
}
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 {
const updateFile = filepath => {
if (!allowedExtensions.has(path.parse(filepath).ext) && VERBOSE) {
console.log(`EXCLUDED: ${filepath}`)
return
}
} :
filepath => {
if (allowedExtensions.has(path.parse(filepath).ext)) {
sh.sed('-i', original, replacement, filepath)
fs.readFile(filepath, 'utf8', (error, originalData) => {
if (error) {
throw error
}
const newData = originalData.replace(
new RegExp(regExpQuote(original), 'g'),
regExpQuoteReplacement(replacement)
)
if (originalData === newData) {
if (VERBOSE) {
console.log(`SKIPPED: ${filepath}`)
}
return
}
if (VERBOSE) {
console.log(`FILE: ${filepath}`)
}
if (DRY_RUN) {
return
}
fs.writeFile(filepath, newData, 'utf8', err => {
if (err) {
throw err
}
})
})
}
walkAsync(directory, excludedDirectories, updateFile, err => {
@ -80,22 +104,22 @@ function replaceRecursively(directory, excludedDirectories, allowedExtensions, o
}
function main(args) {
if (args.length !== 2) {
console.error('USAGE: change-version old_version new_version')
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'
'resources'
])
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',
'.html',
@ -106,7 +130,8 @@ function main(args) {
'.txt',
'.yml'
])
replaceRecursively('.', EXCLUDED_DIRS, INCLUDED_EXTENSIONS, oldVersion, newVersion)
replaceRecursively(ROOT_DIR, EXCLUDED_DIRS, INCLUDED_EXTENSIONS, oldVersion, newVersion)
}
main(process.argv.slice(2))