UNPKG

limgen

Version:

Infrastructure as Code generator

87 lines (86 loc) 3.85 kB
"use strict"; 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.collectInput = exports.inputs = void 0; const files_1 = require("../../files"); const docker_1 = require("../../docker"); const promises_1 = __importDefault(require("fs/promises")); const inputs = (cmdArgs, projectInput) => __awaiter(void 0, void 0, void 0, function* () { return []; }); exports.inputs = inputs; const collectInput = (cmdArgs, projectInput, frameworkArgs) => __awaiter(void 0, void 0, void 0, function* () { return {}; }); exports.collectInput = collectInput; function tanstackStartFramework(opts) { return __awaiter(this, void 0, void 0, function* () { yield Promise.all([ ensureDockerfile(opts), ensureAppConfig(), updateDockerignore() ]); }); } exports.default = tanstackStartFramework; const updateDockerignore = () => __awaiter(void 0, void 0, void 0, function* () { if (!(yield (0, files_1.fileExists)('.dockerignore'))) { yield promises_1.default.writeFile('.dockerignore', ''); } const contents = yield promises_1.default.readFile('.dockerignore', 'utf-8'); const depsToCheck = [ 'node_modules', '*.log', '.vinxi', '.git', '.DS_Store', '.output', '/data', ]; const outputToAppend = depsToCheck.filter(dep => !contents.includes(dep)).join('\n'); if (outputToAppend.length === 0) { return; } yield promises_1.default.appendFile('.dockerignore', `\n${outputToAppend}`); }); const ensureDockerfile = (opts) => __awaiter(void 0, void 0, void 0, function* () { if (yield (0, docker_1.dockerfileExists)()) { return; } try { yield promises_1.default.copyFile(`${__dirname}/Dockerfile`, 'Dockerfile'); } catch (error) { console.error('Unable to render Dockerfile', error); throw error; } }); const ensureAppConfig = () => __awaiter(void 0, void 0, void 0, function* () { const appConfigFile = 'app.config.ts'; let appConfig = yield promises_1.default.readFile(appConfigFile, 'utf-8'); const serverMatch = appConfig.match(/server: *{/); if (!serverMatch) { appConfig = appConfig.replace(/export default defineConfig\({/, `export default defineConfig({\n server: { preset: 'node-server' },\n`); } else { const presetMatch = appConfig.match(/preset: *'(.+)'/); if (presetMatch && (presetMatch === null || presetMatch === void 0 ? void 0 : presetMatch[1]) !== 'node-server') { throw new Error(`Limgen support for Tanstack start is limited to the node-server preset. Current value is ${presetMatch[1]}`); } else if (!presetMatch) { console.warn('Unable to find server preset in app.config.ts. You may need to update it manually.\n See https://tanstack.com/router/latest/docs/framework/react/start/hosting/#nodejs for more info'); } } yield promises_1.default.writeFile(appConfigFile, appConfig); });