Files
quorum-test-network/smart_contracts/scripts/compile.js
2026-02-09 21:51:48 -08:00

63 lines
1.4 KiB
JavaScript

const path = require('path');
const fs = require('fs-extra');
const solc = require('solc');
const contractsPath = path.resolve(__dirname, '../', 'contracts');
function buildSources() {
const sources = {};
const contractsFiles = fs.readdirSync(contractsPath);
contractsFiles.forEach(file => {
if(file.endsWith(".sol")){
const contractFullPath = path.resolve(contractsPath, file);
sources[file] = {
content: fs.readFileSync(contractFullPath, 'utf8')
};
}
});
return sources;
}
const input = {
language: 'Solidity',
sources: buildSources(),
settings: {
outputSelection: {
'*': {
'*': [ '*', 'evm.bytecode' ]
}
}
}
}
function compileContracts() {
const stringifiedJson = JSON.stringify(input);
console.log(stringifiedJson)
const compilationResult = solc.compile(stringifiedJson);
console.log(compilationResult)
const output = JSON.parse(compilationResult);
console.log(output)
const compiledContracts = output.contracts;
for (let contract in compiledContracts) {
for(let contractName in compiledContracts[contract]) {
console.log(contract)
fs.outputJsonSync(
path.resolve(contractsPath, `${contractName}.json`),
compiledContracts[contract][contractName], { spaces: 2 }
)
}
}
}
const main = () => {
compileContracts();
}
if (require.main === module) {
main();
}
module.exports = exports = main