UNPKG

vasku

Version:

TVM-Solidity contract development framework

69 lines (68 loc) 2.76 kB
"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;