aboutsummaryrefslogtreecommitdiffstats
path: root/packages/sol-compiler
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-06-01 01:45:34 +0800
committerFabio Berger <me@fabioberger.com>2018-06-01 01:45:34 +0800
commit94ee82e076d85b64063b5c71be13b1ebe0bb8c10 (patch)
tree53524249da4c5b907e1489d8677a7cc1edf069a2 /packages/sol-compiler
parent0beab9eec45508fb6163bd6c0fd3970f0b61a91d (diff)
parent5b31d0aa3635ea524fb42d73cd6c713887dfef6a (diff)
downloaddexon-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.json14
-rw-r--r--packages/sol-compiler/package.json1
-rw-r--r--packages/sol-compiler/src/cli.ts2
-rw-r--r--packages/sol-compiler/src/compiler.ts17
-rw-r--r--packages/sol-compiler/src/schemas/compiler_options_schema.ts26
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,
+};