From f21a9d16d070f504165469b8a92dd08202d54d89 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Tue, 26 Feb 2019 16:12:47 -0800 Subject: [PATCH 1/2] Fix a bug when TruffleArtifactAdapter was incorrectly parsing the truffle config of the newest version --- packages/sol-tracing-utils/CHANGELOG.json | 9 ++++++++ packages/sol-tracing-utils/package.json | 1 + .../truffle_artifact_adapter.ts | 23 +++++++++++++++++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/packages/sol-tracing-utils/CHANGELOG.json b/packages/sol-tracing-utils/CHANGELOG.json index 39fb3bd359..48bbaa27d0 100644 --- a/packages/sol-tracing-utils/CHANGELOG.json +++ b/packages/sol-tracing-utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "6.0.6", + "changes": [ + { + "note": "Fix a bug when `TruffleArtifactAdapter` wasn't parsing solc config in the newest version of trufle", + "pr": 1654 + } + ] + }, { "timestamp": 1551220833, "version": "6.0.5", diff --git a/packages/sol-tracing-utils/package.json b/packages/sol-tracing-utils/package.json index b0089384f0..b945fab92d 100644 --- a/packages/sol-tracing-utils/package.json +++ b/packages/sol-tracing-utils/package.json @@ -55,6 +55,7 @@ "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", "glob": "^7.1.2", + "solc": "^0.5.2", "istanbul": "^0.4.5", "lodash": "^4.17.11", "loglevel": "^1.6.1", diff --git a/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts b/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts index bb2b151530..541441a7be 100644 --- a/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts +++ b/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts @@ -1,7 +1,9 @@ import { Compiler, CompilerOptions } from '@0x/sol-compiler'; import * as fs from 'fs'; import * as glob from 'glob'; +import * as _ from 'lodash'; import * as path from 'path'; +import * as solc from 'solc'; import { ContractData } from '../types'; @@ -10,8 +12,15 @@ import { SolCompilerArtifactAdapter } from './sol_compiler_artifact_adapter'; const DEFAULT_TRUFFLE_ARTIFACTS_DIR = './build/contracts'; +interface TruffleSolcConfig { + version?: string; + settings?: solc.CompilerSettings; +} interface TruffleConfig { - solc?: any; + solc?: TruffleSolcConfig; + compilers?: { + solc?: TruffleSolcConfig; + }; contracts_build_directory?: string; } @@ -32,7 +41,7 @@ export class TruffleArtifactAdapter extends AbstractArtifactAdapter { const artifactsDir = '.0x-artifacts'; const contractsDir = path.join(this._projectRoot, 'contracts'); const truffleConfig = this._getTruffleConfig(); - const solcConfig = truffleConfig.solc || {}; + const solcConfig = this._getTruffleSolcSettings(); const truffleArtifactsDirectory = truffleConfig.contracts_build_directory || DEFAULT_TRUFFLE_ARTIFACTS_DIR; this._assertSolidityVersionIsCorrect(truffleArtifactsDirectory); const compilerOptions: CompilerOptions = { @@ -70,6 +79,16 @@ export class TruffleArtifactAdapter extends AbstractArtifactAdapter { ); } } + private _getTruffleSolcSettings(): Partial { + const truffleConfig = this._getTruffleConfig(); + if (!_.isUndefined(truffleConfig.solc)) { + return (truffleConfig as any).solc.settings; + } else if (!_.isUndefined((truffleConfig as any).compilers.solc)) { + return (truffleConfig as any).compilers.solc.settings; + } else { + return {}; + } + } private _assertSolidityVersionIsCorrect(truffleArtifactsDirectory: string): void { const artifactsGlob = `${truffleArtifactsDirectory}/**/*.json`; const artifactFileNames = glob.sync(artifactsGlob, { absolute: true }); From 40a4b4fa7a09397cf416b4c7fa0bfbdff2b0ca99 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Wed, 27 Feb 2019 12:28:41 -0800 Subject: [PATCH 2/2] Add an explanatory comment --- .../src/artifact_adapters/truffle_artifact_adapter.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts b/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts index 541441a7be..20ef94e8e3 100644 --- a/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts +++ b/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts @@ -82,8 +82,10 @@ export class TruffleArtifactAdapter extends AbstractArtifactAdapter { private _getTruffleSolcSettings(): Partial { const truffleConfig = this._getTruffleConfig(); if (!_.isUndefined(truffleConfig.solc)) { + // Truffle < 5.0 return (truffleConfig as any).solc.settings; } else if (!_.isUndefined((truffleConfig as any).compilers.solc)) { + // Truffle >= 5.0 return (truffleConfig as any).compilers.solc.settings; } else { return {};