UNPKG

@libotony/sharp-cli

Version:
105 lines 7.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs = require("fs"); const path = require("path"); const mkdirp_1 = require("mkdirp"); const debug = require('debug')('sharp:compile-options'); // link optimizer's settings to solidity's doc // { // enabled: boolean, // runs: number, // details: { // peephole: boolean, // jumpdestRemover: boolean, // orderLiterals: boolean, // deduplicate: boolean, // cse: boolean, // constantOptimizer: boolean, // yul: boolean, // yulDetails: { // stackAllocation: boolean // } // } // } // tslint:disable-next-line:max-line-length const supportedEvmVersion = ['homestead', 'tangerineWhistle', 'spuriousDragon', 'byzantium', 'constantinople', 'petersburg']; exports.normalizeOptions = (options) => { let contractsDirectory; let buildDirectory; // contracts dir if (options.contracts_directory) { if (path.isAbsolute(options.contracts_directory)) { contractsDirectory = options.contracts_directory; } else { contractsDirectory = path.join(process.cwd(), options.contracts_directory); } } else { contractsDirectory = path.join(process.cwd(), './contracts'); } fs.readdirSync(contractsDirectory); // build dir if (options.build_directory) { if (path.isAbsolute(options.build_directory)) { buildDirectory = options.build_directory; } else { buildDirectory = path.join(process.cwd(), options.build_directory); } } else { buildDirectory = path.join(process.cwd(), './build'); } mkdirp_1.sync(buildDirectory); // contracts if (!options.contracts || !Array.isArray(options.contracts) || options.contracts.length === 0) { throw new Error('options: contracts entry needed'); } for (const c of options.contracts) { if (typeof c !== 'string') { throw new Error('options.contracts: entry should be string'); } fs.accessSync(path.join(contractsDirectory, c), fs.constants.R_OK); } let solcVer = ''; const solc = {}; if (options.solc) { const s = options.solc; if (s.version && typeof s.version === 'string') { solcVer = s.version; } if (s.evmVersion) { if (supportedEvmVersion.indexOf(s.evmVersion) === -1) { throw new Error('unsupported evm version: ' + s.evmVersion); } solc.evmVersion = s.evmVersion; } if (s.libraries) { for (const [_, libs] of Object.entries(s.libraries)) { for (const [name, addr] of Object.entries(libs)) { if (typeof name !== 'string') { throw new Error('invalid library name: ' + name); } if (typeof addr !== 'string' || !/^0x[0-9a-fA-F]{40}$/i.test(addr)) { throw new Error('invalid library address: ' + addr); } } } solc.libraries = s.libraries; } if (s.optimizer) { solc.optimizer = s.optimizer; } } const o = { contractsDirectory, contracts: options.contracts, buildDirectory, solcVer, solc }; debug('option:', JSON.stringify(o, null, 2)); return o; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbXBpbGUtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF3QjtBQUN4Qiw2QkFBNEI7QUFDNUIsbUNBQXVDO0FBRXZDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0FBVXZELDhDQUE4QztBQUM5QyxJQUFJO0FBQ0osd0JBQXdCO0FBQ3hCLG9CQUFvQjtBQUNwQixxQkFBcUI7QUFDckIsNkJBQTZCO0FBQzdCLG9DQUFvQztBQUNwQyxrQ0FBa0M7QUFDbEMsZ0NBQWdDO0FBQ2hDLHdCQUF3QjtBQUN4QixzQ0FBc0M7QUFDdEMsd0JBQXdCO0FBQ3hCLHdCQUF3QjtBQUN4Qix1Q0FBdUM7QUFDdkMsWUFBWTtBQUNaLFFBQVE7QUFDUixJQUFJO0FBRUosMkNBQTJDO0FBQzNDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFBO0FBRS9HLFFBQUEsZ0JBQWdCLEdBQUcsQ0FBQyxPQU9oQyxFQUFzQixFQUFFO0lBQ3JCLElBQUksa0JBQWtCLENBQUE7SUFDdEIsSUFBSSxjQUFjLENBQUE7SUFFbEIsZ0JBQWdCO0lBQ2hCLElBQUksT0FBTyxDQUFDLG1CQUFtQixFQUFFO1FBQzdCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUM5QyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUE7U0FDbkQ7YUFBTTtZQUNILGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1NBQzdFO0tBQ0o7U0FBTTtRQUNILGtC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