aboutsummaryrefslogtreecommitdiffstats
path: root/packages/sol-compiler
diff options
context:
space:
mode:
authorLeonid Logvinov <logvinov.leon@gmail.com>2018-05-10 05:05:20 +0800
committerLeonid Logvinov <logvinov.leon@gmail.com>2018-05-23 06:20:33 +0800
commitae220c37dff04c8d4d22e48865a5a268000c2f12 (patch)
tree31d4a6fd66c8355e224b45819b87503bb0a30ac8 /packages/sol-compiler
parent4cfeb6b8ace9c1613ac0581bd6ea52ff183701f9 (diff)
downloaddexon-sol-tools-ae220c37dff04c8d4d22e48865a5a268000c2f12.tar
dexon-sol-tools-ae220c37dff04c8d4d22e48865a5a268000c2f12.tar.gz
dexon-sol-tools-ae220c37dff04c8d4d22e48865a5a268000c2f12.tar.bz2
dexon-sol-tools-ae220c37dff04c8d4d22e48865a5a268000c2f12.tar.lz
dexon-sol-tools-ae220c37dff04c8d4d22e48865a5a268000c2f12.tar.xz
dexon-sol-tools-ae220c37dff04c8d4d22e48865a5a268000c2f12.tar.zst
dexon-sol-tools-ae220c37dff04c8d4d22e48865a5a268000c2f12.zip
Add solcVersion to CompilerOpts
Diffstat (limited to 'packages/sol-compiler')
-rw-r--r--packages/sol-compiler/src/compiler.ts13
-rw-r--r--packages/sol-compiler/src/index.ts1
-rw-r--r--packages/sol-compiler/src/utils/types.ts1
3 files changed, 11 insertions, 4 deletions
diff --git a/packages/sol-compiler/src/compiler.ts b/packages/sol-compiler/src/compiler.ts
index c17616246..2ebc5228e 100644
--- a/packages/sol-compiler/src/compiler.ts
+++ b/packages/sol-compiler/src/compiler.ts
@@ -74,6 +74,7 @@ export class Compiler {
private _contractsDir: string;
private _compilerSettings: solc.CompilerSettings;
private _artifactsDir: string;
+ private _solcVersionIfExists: string | undefined;
private _specifiedContracts: string[] | TYPE_ALL_FILES_IDENTIFIER;
/**
* Instantiates a new instance of the Compiler class.
@@ -85,6 +86,7 @@ export class Compiler {
? JSON.parse(fs.readFileSync(CONFIG_FILE).toString())
: {};
this._contractsDir = opts.contractsDir || config.contractsDir || DEFAULT_CONTRACTS_DIR;
+ this._solcVersionIfExists = opts.solcVersion || config.solcVersion;
this._compilerSettings = opts.compilerSettings || config.compilerSettings || DEFAULT_COMPILER_SETTINGS;
this._artifactsDir = opts.artifactsDir || config.artifactsDir || DEFAULT_ARTIFACTS_DIR;
this._specifiedContracts = opts.contracts || config.contracts || ALL_CONTRACTS_IDENTIFIER;
@@ -139,9 +141,12 @@ export class Compiler {
if (!shouldCompile) {
return;
}
- const solcVersionRange = parseSolidityVersionRange(contractSource.source);
- const availableCompilerVersions = _.keys(binPaths);
- const solcVersion = semver.maxSatisfying(availableCompilerVersions, solcVersionRange);
+ let solcVersion = this._solcVersionIfExists;
+ if (_.isUndefined(solcVersion)) {
+ const solcVersionRange = parseSolidityVersionRange(contractSource.source);
+ const availableCompilerVersions = _.keys(binPaths);
+ solcVersion = semver.maxSatisfying(availableCompilerVersions, solcVersionRange);
+ }
const fullSolcVersion = binPaths[solcVersion];
const compilerBinFilename = path.join(SOLC_BIN_DIR, fullSolcVersion);
let solcjs: string;
@@ -229,7 +234,7 @@ export class Compiler {
sourceTreeHashHex,
compiler: {
name: 'solc',
- version: solcVersion,
+ version: fullSolcVersion,
settings: this._compilerSettings,
},
};
diff --git a/packages/sol-compiler/src/index.ts b/packages/sol-compiler/src/index.ts
index 4b4c51de2..15c166992 100644
--- a/packages/sol-compiler/src/index.ts
+++ b/packages/sol-compiler/src/index.ts
@@ -1,2 +1,3 @@
export { Compiler } from './compiler';
+export { CompilerOptions } from './utils/types';
export { ContractArtifact, ContractNetworks } from './utils/types';
diff --git a/packages/sol-compiler/src/utils/types.ts b/packages/sol-compiler/src/utils/types.ts
index b12a11b79..d43347fa6 100644
--- a/packages/sol-compiler/src/utils/types.ts
+++ b/packages/sol-compiler/src/utils/types.ts
@@ -55,6 +55,7 @@ export interface CompilerOptions {
artifactsDir?: string;
compilerSettings?: solc.CompilerSettings;
contracts?: string[] | '*';
+ solcVersion?: string;
}
export interface ContractSourceData {