split method
This commit is contained in:
parent
2eab0e30b7
commit
4779ebfd20
@ -110,6 +110,21 @@ export class Compiler {
|
|||||||
const solcInstance = solc.setupMethods(requireFromString(solcjs, compilerBinFilename));
|
const solcInstance = solc.setupMethods(requireFromString(solcjs, compilerBinFilename));
|
||||||
return { solcInstance, fullSolcVersion };
|
return { solcInstance, fullSolcVersion };
|
||||||
}
|
}
|
||||||
|
private static _addHexPrefixes(compiledData: solc.StandardContractOutput): void {
|
||||||
|
if (!_.isUndefined(compiledData.evm)) {
|
||||||
|
if (!_.isUndefined(compiledData.evm.bytecode) && !_.isUndefined(compiledData.evm.bytecode.object)) {
|
||||||
|
compiledData.evm.bytecode.object = ethUtil.addHexPrefix(compiledData.evm.bytecode.object);
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
!_.isUndefined(compiledData.evm.deployedBytecode) &&
|
||||||
|
!_.isUndefined(compiledData.evm.deployedBytecode.object)
|
||||||
|
) {
|
||||||
|
compiledData.evm.deployedBytecode.object = ethUtil.addHexPrefix(
|
||||||
|
compiledData.evm.deployedBytecode.object,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Instantiates a new instance of the Compiler class.
|
* Instantiates a new instance of the Compiler class.
|
||||||
* @param opts Optional compiler options
|
* @param opts Optional compiler options
|
||||||
@ -214,11 +229,22 @@ export class Compiler {
|
|||||||
const compilerOutput = this._compile(solcInstance, input.standardInput);
|
const compilerOutput = this._compile(solcInstance, input.standardInput);
|
||||||
|
|
||||||
for (const contractPath of input.contractsToCompile) {
|
for (const contractPath of input.contractsToCompile) {
|
||||||
await this._verifyAndPersistCompiledContractAsync(
|
const contractName = contractPathToData[contractPath].contractName;
|
||||||
|
|
||||||
|
const compiledData = compilerOutput.contracts[contractPath][contractName];
|
||||||
|
if (_.isUndefined(compiledData)) {
|
||||||
|
throw new Error(
|
||||||
|
`Contract ${contractName} not found in ${contractPath}. Please make sure your contract has the same name as it's file name`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Compiler._addHexPrefixes(compiledData);
|
||||||
|
|
||||||
|
await this._persistCompiledContractAsync(
|
||||||
contractPath,
|
contractPath,
|
||||||
contractPathToData[contractPath].currentArtifactIfExists,
|
contractPathToData[contractPath].currentArtifactIfExists,
|
||||||
contractPathToData[contractPath].sourceTreeHashHex,
|
contractPathToData[contractPath].sourceTreeHashHex,
|
||||||
contractPathToData[contractPath].contractName,
|
contractName,
|
||||||
fullSolcVersion,
|
fullSolcVersion,
|
||||||
compilerOutput,
|
compilerOutput,
|
||||||
);
|
);
|
||||||
@ -236,7 +262,7 @@ export class Compiler {
|
|||||||
return !isUserOnLatestVersion || didCompilerSettingsChange || didSourceChange;
|
return !isUserOnLatestVersion || didCompilerSettingsChange || didSourceChange;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private async _verifyAndPersistCompiledContractAsync(
|
private async _persistCompiledContractAsync(
|
||||||
contractPath: string,
|
contractPath: string,
|
||||||
currentArtifactIfExists: ContractArtifact | void,
|
currentArtifactIfExists: ContractArtifact | void,
|
||||||
sourceTreeHashHex: string,
|
sourceTreeHashHex: string,
|
||||||
@ -245,25 +271,6 @@ export class Compiler {
|
|||||||
compilerOutput: solc.StandardOutput,
|
compilerOutput: solc.StandardOutput,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const compiledData = compilerOutput.contracts[contractPath][contractName];
|
const compiledData = compilerOutput.contracts[contractPath][contractName];
|
||||||
if (_.isUndefined(compiledData)) {
|
|
||||||
throw new Error(
|
|
||||||
`Contract ${contractName} not found in ${contractPath}. Please make sure your contract has the same name as it's file name`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (!_.isUndefined(compiledData.evm)) {
|
|
||||||
if (!_.isUndefined(compiledData.evm.bytecode) && !_.isUndefined(compiledData.evm.bytecode.object)) {
|
|
||||||
compiledData.evm.bytecode.object = ethUtil.addHexPrefix(compiledData.evm.bytecode.object);
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
!_.isUndefined(compiledData.evm.deployedBytecode) &&
|
|
||||||
!_.isUndefined(compiledData.evm.deployedBytecode.object)
|
|
||||||
) {
|
|
||||||
compiledData.evm.deployedBytecode.object = ethUtil.addHexPrefix(
|
|
||||||
compiledData.evm.deployedBytecode.object,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const sourceCodes = _.mapValues(
|
const sourceCodes = _.mapValues(
|
||||||
compilerOutput.sources,
|
compilerOutput.sources,
|
||||||
(_1, sourceFilePath) => this._resolver.resolve(sourceFilePath).source,
|
(_1, sourceFilePath) => this._resolver.resolve(sourceFilePath).source,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user