packages/utils/blueprint-cli/src/resynth-drivers/driver.ts (53 lines of code) (raw):
import * as fs from 'fs';
export const RESYNTH_TS_NAME = 'resynth-driver.ts';
export const writeResynthDriver = (
fileName: string,
entrypoint: string,
options?: {
packageJsonLocation?: string;
},
): string => {
const content = `const { Blueprint } = require('./${entrypoint}');
const packageJson = require('${options?.packageJsonLocation || './package.json'}');
// ============================
// ============================
// Resynthetization
// ============================
void (async () => {
// node cached-resynth.js 'options' 'outputDirectory' 'entropy' 'ancestorBundleDirectory' 'existingBundleDirectory' 'proposedBundleDirectory'
const options = JSON.parse(process.argv[2]);
const outputdir = process.argv[3];
const entropy = process.argv[4] ? process.argv[4] : '';
const ancestorBundleDirectory = process.argv[5] ? process.argv[5] : '';
const existingBundleDirectory = process.argv[6] ? process.argv[6] : '';
const proposedBundleDirectory = process.argv[7] ? process.argv[7] : '';
process.env.CONTEXT_SPACENAME = process.env.CONTEXT_SPACENAME || '<<FAKE_SPACENAME>>';
process.env.CONTEXT_PROJECTNAME = process.env.CONTEXT_PROJECTNAME || '<<FAKE_PROJECTNAME>>';
process.env.CONTEXT_ENVIRONMENTID = process.env.CONTEXT_ENVIRONMENTID || 'prod';
process.env.PACKAGE_NAME = process.env.PACKAGE_NAME || packageJson.name || '<<FAKE_BLUEPRINT_PACKAGENAME>>';
process.env.PACKAGE_VERSION = process.env.PACKAGE_VERSION || packageJson.version || '<<FAKE_BLUEPRINT_PACKAGEVERSION>>';
process.env.EXISTING_BUNDLE_ABS = process.env.EXISTING_BUNDLE_ABS || '';
process.env.BRANCH_NAME = process.env.BRANCH_NAME || '';
process.env.PROJEN_DISABLE_POST = '1';
console.log("===== Starting resynthesis ===== ");
console.log("options: ", options);
console.log("outputDir: ", outputdir);
try {
const bp = new Blueprint({
...options,
outdir: outputdir
})
await bp.resynth(ancestorBundleDirectory, existingBundleDirectory, proposedBundleDirectory);
console.log("===== Ending resynthesis ===== ");
} catch (err) {
const errorMessage = JSON.stringify(err, Object.getOwnPropertyNames(err));
console.error(\`===== BlueprintSynthesisError-\${entropy} =====\`);
console.error(\`\${errorMessage}\`);
console.error(\`===== BlueprintSynthesisError-\${entropy} =====\`);
console.log("===== RESYNTHESIS FAILED ===== ");
throw err;
}
})();`;
fs.writeFileSync(fileName, content);
return fileName;
};