diff options
author | Fabio Berger <me@fabioberger.com> | 2018-06-01 01:45:34 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-06-01 01:45:34 +0800 |
commit | 94ee82e076d85b64063b5c71be13b1ebe0bb8c10 (patch) | |
tree | 53524249da4c5b907e1489d8677a7cc1edf069a2 /packages/sol-compiler | |
parent | 0beab9eec45508fb6163bd6c0fd3970f0b61a91d (diff) | |
parent | 5b31d0aa3635ea524fb42d73cd6c713887dfef6a (diff) | |
download | dexon-sol-tools-94ee82e076d85b64063b5c71be13b1ebe0bb8c10.tar dexon-sol-tools-94ee82e076d85b64063b5c71be13b1ebe0bb8c10.tar.gz dexon-sol-tools-94ee82e076d85b64063b5c71be13b1ebe0bb8c10.tar.bz2 dexon-sol-tools-94ee82e076d85b64063b5c71be13b1ebe0bb8c10.tar.lz dexon-sol-tools-94ee82e076d85b64063b5c71be13b1ebe0bb8c10.tar.xz dexon-sol-tools-94ee82e076d85b64063b5c71be13b1ebe0bb8c10.tar.zst dexon-sol-tools-94ee82e076d85b64063b5c71be13b1ebe0bb8c10.zip |
Merge branch 'v2-prototype' into refactor/order-utils/for-v2
* v2-prototype: (45 commits)
Check length before accessing indices, add awaitTransactionSuccess where needed, and rename function
Add back before/after snapshots for each test
Rename Signer to Wallet, rename GAS_ESTIMATE to GAS_LIMIT
Make preSigned and allowedValidators mappings public
Change names of signature types
Fix formatting and tests
Make AssetProxyId last byte of assetData
Add signer to txHash, allow approveValidator to be used with executeTransaction
Update Whitelist
Fix Exchange interface
Increase block gas limit
Use last byte of signature as signature type
Remove TxOrigin signature type, modify whitelist to use Validator signature type
Update Whitelist contract with comments, also require maker to be whitelisted
Fix build
Add example whitelist contract and minimum tests
Add sample whitelist contract
Add TxOrigin signature type and rearrange order of types
Add approveValidator function
Add Validator signature type
...
# Conflicts:
# packages/contracts/src/contracts/current/protocol/Exchange/MixinSignatureValidator.sol
# packages/contracts/src/utils/types.ts
# packages/contracts/test/exchange/transactions.ts
# packages/order-utils/src/asset_proxy_utils.ts
Diffstat (limited to 'packages/sol-compiler')
-rw-r--r-- | packages/sol-compiler/CHANGELOG.json | 14 | ||||
-rw-r--r-- | packages/sol-compiler/package.json | 1 | ||||
-rw-r--r-- | packages/sol-compiler/src/cli.ts | 2 | ||||
-rw-r--r-- | packages/sol-compiler/src/compiler.ts | 17 | ||||
-rw-r--r-- | packages/sol-compiler/src/schemas/compiler_options_schema.ts | 26 |
5 files changed, 53 insertions, 7 deletions
diff --git a/packages/sol-compiler/CHANGELOG.json b/packages/sol-compiler/CHANGELOG.json index 33fd99e4f..e0ebd3a2d 100644 --- a/packages/sol-compiler/CHANGELOG.json +++ b/packages/sol-compiler/CHANGELOG.json @@ -1,5 +1,19 @@ [ { + "version": "0.5.1", + "changes": [ + { + "note": "Make `opts` constructor parameter optional", + "pr": 621 + }, + { + "note": "Add schema validation for compiler configuration", + "pr": 621 + } + ], + "timestamp": 1527009133 + }, + { "version": "0.5.0", "changes": [ { diff --git a/packages/sol-compiler/package.json b/packages/sol-compiler/package.json index 7e55d718d..a74e4ae3e 100644 --- a/packages/sol-compiler/package.json +++ b/packages/sol-compiler/package.json @@ -72,6 +72,7 @@ "zeppelin-solidity": "1.8.0" }, "dependencies": { + "@0xproject/assert": "0.2.10", "@0xproject/json-schemas": "0.7.22", "@0xproject/sol-resolver": "^0.0.5", "@0xproject/types": "^0.7.0", diff --git a/packages/sol-compiler/src/cli.ts b/packages/sol-compiler/src/cli.ts index d107e8b37..b97cf4cab 100644 --- a/packages/sol-compiler/src/cli.ts +++ b/packages/sol-compiler/src/cli.ts @@ -35,7 +35,7 @@ const SEPARATOR = ','; : argv.contracts === DEFAULT_CONTRACTS_LIST ? DEFAULT_CONTRACTS_LIST : argv.contracts.split(SEPARATOR); - const opts: CompilerOptions = { + const opts = { contractsDir: argv.contractsDir, artifactsDir: argv.artifactsDir, contracts, 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()); diff --git a/packages/sol-compiler/src/schemas/compiler_options_schema.ts b/packages/sol-compiler/src/schemas/compiler_options_schema.ts new file mode 100644 index 000000000..43a9c0879 --- /dev/null +++ b/packages/sol-compiler/src/schemas/compiler_options_schema.ts @@ -0,0 +1,26 @@ +export const compilerOptionsSchema = { + id: '/CompilerOptions', + properties: { + contractsDir: { type: 'string' }, + artifactsDir: { type: 'string' }, + solcVersion: { type: 'string', pattern: '^d+.d+.d+$' }, + compilerSettings: { type: 'object' }, + contracts: { + oneOf: [ + { + type: 'string', + pattern: '^\\*$', + }, + { + type: 'array', + items: { + type: 'string', + }, + }, + ], + }, + }, + type: 'object', + required: [], + additionalProperties: false, +}; |