@ton-contests/tolk-utils
Version:
Tolk utilities for TON Contests plaform
49 lines (48 loc) • 1.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.build = build;
const path_1 = require("path");
const fs_js_1 = require("./misc/fs.js");
const fs_1 = require("fs");
const tolk_js_1 = require("@ton/tolk-js");
const getProjectStructure_js_1 = require("./project/getProjectStructure.js");
async function build({ root }) {
const fileSystem = (0, getProjectStructure_js_1.getProjectStructure)(root);
/* Remove previous build */
(0, fs_js_1.rmForceSync)(fileSystem.srcDir.buildDir);
/* Get Tolk build configuration */
const tolkConfig = getTolkConfig(fileSystem.tolkConfig);
try {
const compilationResults = [];
for (const targetConfig of tolkConfig.targets) {
const result = await (0, tolk_js_1.runTolkCompiler)({
...targetConfig,
fsReadCallback: (path) => (0, fs_1.readFileSync)((0, path_1.resolve)(fileSystem.rootDir, path), "utf-8"),
});
if (result.status === "ok") {
console.log("Compiled successfully!");
}
else {
console.error(result.message);
console.log("Tolk compilation failed");
return;
}
compilationResults.push({
name: (0, path_1.parse)(targetConfig.entrypointFileName).name,
output: result,
});
}
for (const result of compilationResults) {
(0, fs_js_1.writeFileWithDirsSync)((0, path_1.resolve)(fileSystem.srcDir.buildDir, `./${result.name}.ts`), Buffer.from(`export const code = "${result.output.codeBoc64}"`));
}
}
catch (err) {
console.log(err.message);
console.log("Tolk compilation failed");
return;
}
}
function getTolkConfig(path) {
const tolkConfig = JSON.parse((0, fs_1.readFileSync)(path).toString("utf-8"));
return tolkConfig;
}