diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2018-05-30 01:58:46 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-30 01:58:46 +0800 |
commit | a4726a0e0d78416dc9fe4387d44f4a83b64c5f92 (patch) | |
tree | 97250eebad47ea12628756c075002d6fb323a429 /packages/sol-compiler/src/compiler.ts | |
parent | ed5b9c2b56185fc5d8e83c17d85cc8044fee0872 (diff) | |
parent | 98652997f9e460de14f7a1199eccee1951d6c4d7 (diff) | |
download | dexon-sol-tools-a4726a0e0d78416dc9fe4387d44f4a83b64c5f92.tar dexon-sol-tools-a4726a0e0d78416dc9fe4387d44f4a83b64c5f92.tar.gz dexon-sol-tools-a4726a0e0d78416dc9fe4387d44f4a83b64c5f92.tar.bz2 dexon-sol-tools-a4726a0e0d78416dc9fe4387d44f4a83b64c5f92.tar.lz dexon-sol-tools-a4726a0e0d78416dc9fe4387d44f4a83b64c5f92.tar.xz dexon-sol-tools-a4726a0e0d78416dc9fe4387d44f4a83b64c5f92.tar.zst dexon-sol-tools-a4726a0e0d78416dc9fe4387d44f4a83b64c5f92.zip |
Merge pull request #621 from 0xProject/feature/compiler-assertions
Add schema assertions on public methods of @0xproject/sol-compiler
Diffstat (limited to 'packages/sol-compiler/src/compiler.ts')
-rw-r--r-- | packages/sol-compiler/src/compiler.ts | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/packages/sol-compiler/src/compiler.ts b/packages/sol-compiler/src/compiler.ts index 2ebc5228e..1d5bdb940 100644 --- a/packages/sol-compiler/src/compiler.ts +++ b/packages/sol-compiler/src/compiler.ts @@ -1,3 +1,4 @@ +import { assert } from '@0xproject/assert'; import { ContractSource, ContractSources, @@ -22,6 +23,7 @@ import * as requireFromString from 'require-from-string'; import * as semver from 'semver'; import solc = require('solc'); +import { compilerOptionsSchema } from './schemas/compiler_options_schema'; import { binPaths } from './solc/bin_paths'; import { createDirIfDoesNotExistAsync, @@ -80,16 +82,19 @@ export class Compiler { * Instantiates a new instance of the Compiler class. * @return An instance of the Compiler class. */ - constructor(opts: CompilerOptions) { + constructor(opts?: CompilerOptions) { + assert.doesConformToSchema('opts', opts, compilerOptionsSchema); // TODO: Look for config file in parent directories if not found in current directory const config: CompilerOptions = fs.existsSync(CONFIG_FILE) ? 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; + const passedOpts = opts || {}; + assert.doesConformToSchema('compiler.json', config, compilerOptionsSchema); + this._contractsDir = passedOpts.contractsDir || config.contractsDir || DEFAULT_CONTRACTS_DIR; + this._solcVersionIfExists = passedOpts.solcVersion || config.solcVersion; + this._compilerSettings = passedOpts.compilerSettings || config.compilerSettings || DEFAULT_COMPILER_SETTINGS; + this._artifactsDir = passedOpts.artifactsDir || config.artifactsDir || DEFAULT_ARTIFACTS_DIR; + this._specifiedContracts = passedOpts.contracts || config.contracts || ALL_CONTRACTS_IDENTIFIER; this._nameResolver = new NameResolver(path.resolve(this._contractsDir)); const resolver = new FallthroughResolver(); resolver.appendResolver(new URLResolver()); |