@ton-actions/tondev-contest
Version:
TON Dev Environment
67 lines • 2.74 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.downloadDemo = exports.ensureDemoInstalled = exports.loadInfo = exports.getInfo = void 0;
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const core_1 = require("../../core");
const utils_1 = require("../../core/utils");
const demoBranch = "master";
const demoInfoURL = `https://raw.githubusercontent.com/tonlabs/sdk-samples/${demoBranch}/demo.json`;
const demoArchiveURL = `https://github.com/tonlabs/sdk-samples/archive/${demoBranch}.zip`;
const demoFolder = `sdk-samples-${demoBranch}`;
function jsHome() {
return path_1.default.resolve(core_1.tondevHome(), "js");
}
function demoHome() {
return path_1.default.resolve(jsHome(), demoFolder);
}
function getInfo() {
return JSON.parse(fs_extra_1.default.readFileSync(path_1.default.resolve(demoHome(), "demo.json")).toString());
}
exports.getInfo = getInfo;
async function loadInfo() {
return utils_1.httpsGetJson(demoInfoURL);
}
exports.loadInfo = loadInfo;
async function ensureDemoInstalled(terminal) {
if (fs_extra_1.default.pathExistsSync(demoHome())) {
const info = getInfo();
const remoteInfo = await loadInfo();
if (info.version === remoteInfo.version) {
return;
}
fs_extra_1.default.rmdirSync(demoHome(), { recursive: true });
}
if (!fs_extra_1.default.pathExistsSync(jsHome())) {
fs_extra_1.default.mkdirSync(jsHome(), { recursive: true });
}
terminal.log("Downloading demo repository...");
await utils_1.downloadFromGithub(terminal, demoArchiveURL, jsHome());
}
exports.ensureDemoInstalled = ensureDemoInstalled;
async function downloadDemo(terminal, name, folder) {
await ensureDemoInstalled(terminal);
const info = getInfo();
const app = info.applications.find(x => x.name.toLowerCase() === name.toLowerCase());
if (!app) {
throw new Error(`Demo "${name} not found.`);
}
const dstPath = path_1.default.resolve(folder, name);
if (fs_extra_1.default.existsSync(dstPath)) {
terminal.log(`This demo already downloaded in: ${dstPath}`);
return;
}
fs_extra_1.default.copySync(path_1.default.resolve(demoHome(), app.path), dstPath);
terminal.log(`
Demo ${name} is downloaded into ${dstPath}
Check README.md or run application:
$ cd ${path_1.default.relative(".", dstPath)}
$ npm i
$ npm start
`);
}
exports.downloadDemo = downloadDemo;
//# sourceMappingURL=installer.js.map