|
|
@ -61,23 +61,22 @@ export class TruffleClient extends PluginClient { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private async processArtifact () { |
|
|
|
private async processArtifact () { |
|
|
|
const folderFiles = await fs.readdir(this.buildPath)
|
|
|
|
const folderFiles = await fs.readdir(this.buildPath)
|
|
|
|
|
|
|
|
const compilationResult = { |
|
|
|
|
|
|
|
input: {}, |
|
|
|
|
|
|
|
output: { |
|
|
|
|
|
|
|
contracts: {}, |
|
|
|
|
|
|
|
sources: {} |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
solcVersion: null, |
|
|
|
|
|
|
|
compilationTarget: null |
|
|
|
|
|
|
|
} |
|
|
|
// name of folders are file names
|
|
|
|
// name of folders are file names
|
|
|
|
for (const file of folderFiles) { |
|
|
|
for (const file of folderFiles) { |
|
|
|
if (file.endsWith('.json')) { |
|
|
|
if (file.endsWith('.json')) { |
|
|
|
const compilationResult = { |
|
|
|
|
|
|
|
input: {}, |
|
|
|
|
|
|
|
output: { |
|
|
|
|
|
|
|
contracts: {}, |
|
|
|
|
|
|
|
sources: {} |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
solcVersion: null, |
|
|
|
|
|
|
|
compilationTarget: null |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
const content = await fs.readFile(join(this.buildPath, file), { encoding: 'utf-8' }) |
|
|
|
const content = await fs.readFile(join(this.buildPath, file), { encoding: 'utf-8' }) |
|
|
|
await this.feedContractArtifactFile(file, content, compilationResult) |
|
|
|
await this.feedContractArtifactFile(file, content, compilationResult) |
|
|
|
this.emit('compilationFinished', compilationResult.compilationTarget, { sources: compilationResult.input }, 'soljson', compilationResult.output, compilationResult.solcVersion) |
|
|
|
this.emit('compilationFinished', compilationResult.compilationTarget, { sources: compilationResult.input }, 'soljson', compilationResult.output, compilationResult.solcVersion) |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (!this.warnLog) { |
|
|
|
if (!this.warnLog) { |
|
|
@ -104,10 +103,12 @@ export class TruffleClient extends PluginClient { |
|
|
|
const contentJSON = JSON.parse(content) |
|
|
|
const contentJSON = JSON.parse(content) |
|
|
|
const contractName = basename(path).replace('.json', '') |
|
|
|
const contractName = basename(path).replace('.json', '') |
|
|
|
compilationResultPart.solcVersion = contentJSON.compiler.version |
|
|
|
compilationResultPart.solcVersion = contentJSON.compiler.version |
|
|
|
compilationResultPart.compilationTarget = contentJSON.ast.absolutePath |
|
|
|
// file name in artifacts starts with `project:/`
|
|
|
|
|
|
|
|
const filepath = contentJSON.ast.absolutePath.startsWith('project:/') ? contentJSON.ast.absolutePath.replace('project:/', '') : contentJSON.ast.absolutePath |
|
|
|
|
|
|
|
compilationResultPart.compilationTarget = filepath |
|
|
|
compilationResultPart.input[path] = { content: contentJSON.source } |
|
|
|
compilationResultPart.input[path] = { content: contentJSON.source } |
|
|
|
// extract data
|
|
|
|
// extract data
|
|
|
|
const relPath = utils.relativePath(contentJSON.ast.absolutePath, this.currentSharedFolder) |
|
|
|
const relPath = utils.relativePath(filepath, this.currentSharedFolder) |
|
|
|
if (!compilationResultPart.output['sources'][relPath]) compilationResultPart.output['sources'][relPath] = {} |
|
|
|
if (!compilationResultPart.output['sources'][relPath]) compilationResultPart.output['sources'][relPath] = {} |
|
|
|
|
|
|
|
|
|
|
|
const location = contentJSON.ast.src.split(':') |
|
|
|
const location = contentJSON.ast.src.split(':') |
|
|
|