38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { writeFileSync, readFileSync } from 'fs'
|
|
|
|
/**
|
|
* post build step to insert code files into code files (naively).
|
|
* '{{replace:path/to/file}}' => "file contents"
|
|
* And the package.json version.
|
|
*/
|
|
//inject('plugins/nexe-daemon/lib/index.js')
|
|
inject('lib/patches/third-party-main.js')
|
|
inject('lib/steps/shim.js')
|
|
inject('lib/options.js', JSON.stringify(require('../package.json').version))
|
|
|
|
cp('src/fs/package.json', 'lib/fs/package.json')
|
|
cp('src/fs/README.md', 'lib/fs/README.md')
|
|
|
|
function inject(filename: string, ...replacements: string[]) {
|
|
let contents = readFileSync(filename, 'utf8')
|
|
contents = contents.replace(/('{{(.*)}}')/g, (substring: string, ...matches: string[]) => {
|
|
if (!matches || !matches[1]) {
|
|
return substring
|
|
}
|
|
const [replace, file] = matches[1].split(':')
|
|
if (replace !== 'replace') {
|
|
return substring
|
|
}
|
|
console.log('Replacing: ', substring)
|
|
return replacements[+file] ? replacements[+file] : JSON.stringify(readFileSync(file, 'utf8'))
|
|
})
|
|
writeFileSync(filename, contents)
|
|
console.log(`Wrote: ${filename}`)
|
|
}
|
|
|
|
function cp(from: string, to: string) {
|
|
const file = readFileSync(from)
|
|
writeFileSync(to, file)
|
|
console.log('Copied: ', from, 'To: ', to)
|
|
}
|