UNPKG

typecccccccccccc

Version:

p align="center" > <img src="https://xord.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F283b98b7-fdae-4e5a-acaf-248242084e4a%2FICON.png?table=block&id=5306223c-a4f7-45d1-9f54-b9a5f4004cd6&spaceId=49976899-64a1-40f

143 lines 6.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.init = void 0; const chalk_1 = __importDefault(require("chalk")); const enquirer_1 = __importDefault(require("enquirer")); const fs_extra_1 = __importDefault(require("fs-extra")); const child_process_1 = require("child_process"); const ora_1 = __importDefault(require("ora")); const error_1 = require("../../../utils/error"); const utils_1 = require("../../../utils/utils"); const packageInfo_1 = require("../../../utils/packageInfo"); const logger_1 = require("../../../utils/logger"); const { prompt } = enquirer_1.default; const init = async () => { try { let projectName = ""; let projectPath = ""; let type = ""; await prompt([ { type: "input", name: "folderName", message: "Please enter the name of project?", initial: "shield-demo", onSubmit: async (name, value) => { value = value.trim(); if (value && /^[^\s^\x00-\x1f\\?:"";<>|\/.][^\x00-\x1f\\?:"";<>|\/][^\s^\x00-\x1f\\?:"";<>|\/.]+$/.test(value)) { await (0, utils_1.getEmptyDir)(value.trim()); projectName = value.trim(); return true; } else { (0, error_1.printNameValidationError)(); process.exit(1); } }, }, { type: "select", name: "projectType", message: "What do you want to do?.", choices: [ { name: "Javascript", message: "Create a Javascript project?", value: "type", }, { name: "Typescript", message: "Create a Typescript project?", value: "type", }, { name: "Empty", message: "Create an empty shield.config.js?", value: "type", }, { name: "Quit", message: "Quit", value: "type", }, ], result: async (value) => { type = value; if (type === "Quit") { process.exit(1); } else if (type === "Empty") { const src = `${(0, packageInfo_1.getPackageRoot)()}/template/config`; const dest = `${process.cwd()}/${projectName}`; projectPath = dest; await fs_extra_1.default.copy(src, dest); (0, logger_1.log)("Successfully generated the config file.", "success"); process.exit(1); } return value; }, }, { type: "select", name: "proofSystem", message: "Please select the proof system for project.", choices: ["Groth16", "Plonk"], result: async (value) => { const src = `${(0, packageInfo_1.getPackageRoot)()}/template/${type.toLowerCase()}/${value.toLowerCase()}`; const dest = `${process.cwd()}/${projectName}`; projectPath = dest; await fs_extra_1.default.copy(src, dest); await (0, utils_1.updateCopyProjectName)(projectName, projectPath); (0, logger_1.log)("Successfully generated the code.", "success"); return dest; }, }, { type: "select", name: "package", message: "Please select the package manager for project.", choices: ["npm", "yarn"], result: (val) => { const spinner = (0, ora_1.default)(chalk_1.default.greenBright("Installing Dependencies...")).start(); const OS = /^win/.test(process.platform) ? "win" : "linux"; const command = val === "npm" ? OS === "win" ? "npm.cmd" : "npm" : OS === "win" ? "yarn.cmd" : "yarn"; const args = val === "npm" ? ["install"] : []; const dependencies = (0, child_process_1.spawn)(command, args, { cwd: projectPath }); dependencies.stdout.on("data", (data) => { (0, logger_1.log)(data.toString(), "info"); }); dependencies.stderr.once("data", () => { spinner.stopAndPersist(); }); dependencies.stderr.on("data", (data) => { (0, logger_1.log)(data.toString(), "info"); }); dependencies.stdout.once("close", () => { spinner.succeed(chalk_1.default.greenBright("Dependencies succesfully installed.")); (0, logger_1.log)("\nHappy Coding :)", "success"); }); return "Happy coding :)"; }, }, ]); } catch (error) { let errorMessage = "Aborted."; if (error instanceof Error) { errorMessage = error.message; } (0, logger_1.log)(errorMessage, "error"); } }; exports.init = init; //# sourceMappingURL=init.js.map