vasku
Version:
TVM-Solidity contract development framework
72 lines (71 loc) • 2.56 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.make = void 0;
const path_1 = __importDefault(require("path"));
const everdev_1 = require("everdev");
const colors_1 = require("colors");
const artifacts_1 = require("./artifacts");
const generateTypeScript_1 = require("./generators/generateTypeScript");
const onlyErrorConsoleTerminal = new class {
log(..._0) { }
write(_0) { }
writeError(text) {
process.stderr.write(text);
}
}();
/**
* Compile all contracts
* @param config
* @param contracts
* ['A.tsol', 'B.tsol', 'x/C.tsol']
*/
async function make(config, contracts) {
await (0, everdev_1.runCommand)(everdev_1.consoleTerminal, 'sol set', {
compiler: config.compile.compiler,
linker: config.compile.linker
});
for (let i = 0; i < contracts.length; i++) {
const contract = contracts[i];
const directory = path_1.default.dirname(contract);
const name = path_1.default.basename(contract);
const directoryText = directory === '.' ? '' : directory + '/';
console.log(`${(0, colors_1.green)('•')} ${(0, colors_1.grey)(directoryText)}${name}`);
await compile(config.paths, directory, name);
await wrap(config.paths, directory, name);
(0, generateTypeScript_1.generateTypeScript)(config.paths, directory, name);
}
}
exports.make = make;
/**
* Compile contract
* @param config
* @param directory
* 'x'
* @param name
* 'C.tsol'
*/
async function compile(config, directory, name) {
await (0, everdev_1.runCommand)(everdev_1.consoleTerminal, 'sol compile', {
file: path_1.default.resolve(process.cwd(), config.contracts, directory, name),
outputDir: path_1.default.resolve(process.cwd(), config.build, directory)
});
}
/**
* Wrap contract data in *.ts constant
* @param config
* @param directory
* 'x'
* @param name
* 'C.tsol'
*/
async function wrap(config, directory, name) {
const nameWithoutExtension = path_1.default.parse(name).name;
await (0, everdev_1.runCommand)(onlyErrorConsoleTerminal, 'js wrap', {
file: path_1.default.resolve(process.cwd(), config.build, directory, `${nameWithoutExtension}${artifacts_1.ABI_JSON}`),
export: 'es6-default',
output: path_1.default.resolve(process.cwd(), config.build, directory, `${nameWithoutExtension}${artifacts_1.CONTENT_TS}`)
});
}