@libotony/sharp-cli
Version:
Sharp command line helper
105 lines • 7.67 kB
JavaScript
;
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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