UNPKG

create-jd-app

Version:

Create modern type safed Solid web application within seconds

162 lines (161 loc) 6.78 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCtxWithInstallers = void 0; const ora_1 = __importDefault(require("ora")); const path_1 = __importDefault(require("path")); const fs_extra_1 = __importDefault(require("fs-extra")); const inquirer_1 = __importDefault(require("inquirer")); const files_1 = require("../utils/files"); const helpers_1 = require("../utils/helpers"); const chalk_1 = __importDefault(require("chalk")); exports.default = (ctx) => __awaiter(void 0, void 0, void 0, function* () { let normalDeps = {}; let devModeDeps = {}; let scripts = {}; let env = [ { key: "NODE_ENV", type: "enum(['development', 'production', 'test']).default('development')", ignore: true, kind: "server", }, { key: "MODE", type: "enum(['development', 'production', 'test']).default('development')", ignore: true, kind: "client", }, ]; let commands = []; const execInstaller = (cfg) => __awaiter(void 0, void 0, void 0, function* () { var _a, _b; if (cfg.pkgs) { normalDeps = Object.assign(Object.assign({}, normalDeps), cfg.pkgs[0]); devModeDeps = Object.assign(Object.assign({}, devModeDeps), cfg.pkgs[1]); } if (cfg.scripts) { scripts = Object.assign(Object.assign({}, scripts), cfg.scripts); } if ((_a = cfg.files) === null || _a === void 0 ? void 0 : _a.length) { yield (0, files_1.execFiles)(cfg.files, ctx); } if (cfg.commands) { if (Array.isArray(cfg.commands)) { commands = [...cfg.commands, ...commands]; } else { commands.unshift(cfg.commands); } } if ((_b = cfg.env) === null || _b === void 0 ? void 0 : _b.length) { env = [...env, ...cfg.env]; } }); const resp = yield Promise.all(ctx.installers.map((pkg) => { var _a; return (_a = `../installers/${pkg}/index`, Promise.resolve().then(() => __importStar(require(_a)))).then((installer) => typeof installer.default === "function" ? installer.default(ctx) : installer.default); })); console.log(); const spinner = (0, ora_1.default)("Initializing installers").start(); if (resp.length) { try { for (const installer of resp) { yield execInstaller(installer); } spinner.succeed(`Initialized ${resp.length} installers`); } catch (e) { spinner.fail(`Couldn't initialize installers: ${(0, helpers_1.formatError)(e)}`); process.exit(1); } } else { spinner.succeed("No installers to initialize"); } return [scripts, [normalDeps, devModeDeps], env, commands]; }); function getCtxWithInstallers(ctx, curr) { return __awaiter(this, void 0, void 0, function* () { let installers = []; let pkgs = []; const skip = curr.includes("skip"); try { installers = yield fs_extra_1.default.readdir(path_1.default.join(__dirname, "../installers")); } catch (_a) { // do nothing } if (installers.length) { const validInstallers = curr.length ? installers.filter((i) => curr.some((c) => c === i.toLowerCase())) : []; if (validInstallers.length) { console.log(`${chalk_1.default.green("√")} Using installers: ${validInstallers .map((installer) => chalk_1.default.blue(installer)) .join(", ")}`); } if (!skip) { let optInstallers = installers.filter((pkg) => !validInstallers.includes(pkg)); const newPkgs = (yield inquirer_1.default.prompt({ name: "pkgs", type: "checkbox", message: "What should we use for this app?", choices: optInstallers, validate: (ans) => { // for (const opt of opts) { // if (opt.every((o) => ans.includes(o))) { // return `You can't use both ${opt // .map((o) => chalk.blue(o)) // .join(" and ")} at the same time`; // } // } return true; }, })).pkgs; pkgs = [...validInstallers, ...newPkgs]; } else { pkgs = validInstallers; } } return Object.assign(Object.assign({}, ctx), { installers: pkgs }); }); } exports.getCtxWithInstallers = getCtxWithInstallers;