/*
* extract script content from a series of html files , run a
* jscodeshift codemod on them and overwrite the original file .
*
* Usage : node html - codemod . js codemod - file list of files to process
*/
const { JSDOM } = require('jsdom' );
const fs = require('fs' );
const {execFileSync} = require('child_process' );
const codemod = process.argv[2 ];
const filenames = process.argv.slice(3 );
filenames.forEach((filename) => {
const originalContent = fs.readFileSync(filename, 'utf-8' );
const dom = new JSDOM(originalContent);
const document = dom.window.document;
const scriptTags = document.querySelectorAll('script' );
const lastTag = scriptTags[scriptTags.length - 1 ];
const script = lastTag.innerHTML;
if (!script) {
console.log('NO SCRIPT FOUND' , filename);
return ;
}
const scriptFilename = filename + '.codemod.js' ;
const scriptFile = fs.writeFileSync(scriptFilename, script);
// exec jscodeshift
const output = execFileSync('./node_modules/.bin/jscodeshift' , ['-t' , codemod, scriptFilename]);
console.log(filename, output.toString()); // output jscodeshift output.
// read back file, resubstitute
const newScript = fs.readFileSync(scriptFilename, 'utf-8' ).toString();
const modifiedContent = originalContent.split(script).join(newScript);
fs.writeFileSync(filename, modifiedContent);
fs.unlinkSync(scriptFilename);
});
Messung V0.5 in Prozent C=98 H=100 G=98
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland