vasku
Version:
TVM-Solidity contract development framework
69 lines (68 loc) • 2.76 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.showRunScriptMenu = void 0;
const path_1 = __importDefault(require("path"));
const enquirer_1 = require("./enquirer");
const help_1 = require("../actions/help");
const run_1 = require("../actions/run");
const showRunMenu_1 = require("./showRunMenu");
const glob_1 = require("glob");
const colors_1 = require("colors");
const ROOT_DIRECTORY = '.';
async function showRunScriptMenu(config, network, directory = ROOT_DIRECTORY) {
////////////////////////////////
// Get current menu directory //
////////////////////////////////
const currentDirectory = path_1.default.resolve(process.cwd(), config.paths.scripts, directory);
//////////////////////
// Read directories //
//////////////////////
const directories = (0, glob_1.globSync)(`${currentDirectory}/*/`).reduce((map, value) => {
const name = path_1.default.relative(currentDirectory, value);
const text = (0, colors_1.blue)(name) + enquirer_1.ELLIPSIS;
return map.set(text, name);
}, new Map());
///////////////////////////
// Read TypeScript files //
///////////////////////////
const files = (0, glob_1.globSync)(`${currentDirectory}/*.ts`, { nodir: true }).reduce((map, value) => {
const file = path_1.default.relative(currentDirectory, value);
const key = file.substring(0, file.length - '.ts'.length);
return map.set(key, file);
}, new Map());
///////////////
// Show menu //
///////////////
const choice = await (new enquirer_1.Select({
message: 'Select script',
choices: [
...[...directories.keys()].reverse(),
...[...files.keys()].reverse(),
enquirer_1.HELP,
enquirer_1.BACK
]
})).run();
////////////
// Choice //
////////////
switch (choice) {
case enquirer_1.HELP:
(0, help_1.help)();
break;
case enquirer_1.BACK:
if (directory === ROOT_DIRECTORY)
await (0, showRunMenu_1.showRunMenu)(config);
else
await showRunScriptMenu(config, network, path_1.default.basename(path_1.default.dirname(directory)));
break;
default:
if (directories.has(choice))
await showRunScriptMenu(config, network, `${directory}/${directories.get(choice) ?? ''}`);
else
await (0, run_1.run)(config, `${directory}/${files.get(choice) ?? ''}`, network, true);
}
}
exports.showRunScriptMenu = showRunScriptMenu;