UNPKG

pulse-cli

Version:

The Pulse CLI tool for pulse-server

111 lines 4.91 kB
#! /usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const figlet_1 = __importDefault(require("figlet")); const chalk_1 = __importDefault(require("chalk")); const fs_1 = __importDefault(require("fs")); const child_process_1 = require("child_process"); const program = new commander_1.Command(); console.log(figlet_1.default.textSync('PulseCLI')); program .version('1.0.0') .description('PulseCLI: A CLI tool for the PulseSDK. See https://pulsesdk.com for more information.'); program .command('init') .description('Initialize a new Pulse project') .argument('name', 'The name of the project') .action((name) => { console.log(chalk_1.default.green(`Initializing a new Pulse project named ${name}`)); try { fs_1.default.mkdirSync(name, { recursive: true }); fs_1.default.mkdirSync(name + '/src', { recursive: true }); } catch (e) { console.error(chalk_1.default.red(`Failed to create directory ${name}:`, e)); return; } const indexTemp = fs_1.default.readFileSync(__dirname + '/template/src/app.txt', 'utf8'); const packageTemp = fs_1.default.readFileSync(__dirname + '/template/package.txt', 'utf8'); const tsconfigTemp = fs_1.default.readFileSync(__dirname + '/template/tsconfig.txt', 'utf8'); const pulseConfig = fs_1.default.readFileSync(__dirname + '/template/pulse.txt', 'utf8'); fs_1.default.writeFile(name + '/src/app.ts', indexTemp, (err) => { if (err) { console.error(chalk_1.default.red(`Failed to write to ${name}/src/app.ts:`, err)); } }); fs_1.default.writeFile(name + '/package.json', packageTemp, (err) => { if (err) { console.error(chalk_1.default.red(`Failed to write to ${name}/package.json:`, err)); } }); fs_1.default.writeFile(name + '/tsconfig.json', tsconfigTemp, (err) => { if (err) { console.error(chalk_1.default.red(`Failed to write to ${name}/tsconfig.json:`, err)); } }); fs_1.default.writeFile(name + '/pulse.toml', pulseConfig, (err) => { if (err) { console.error(chalk_1.default.red(`Failed to write to ${name}/pulse.toml:`, err)); } }); console.log(chalk_1.default.green(`Successfully initialized a new Pulse project named ${name}`)); console.log(chalk_1.default.green(`Installing dependencies...`)); (0, child_process_1.exec)(`cd ${name} && npm install`, (err, stdout, stderr) => { if (err) { console.error(chalk_1.default.red(`Failed to install dependencies:`, err)); return; } console.log(chalk_1.default.green('Successfully installed dependencies')); }); }); program .command('gen-types') .description('Create Typescript types in your target directory from your Pulse JSON Schema') .argument('<from>', 'The path to the JSON Schema file') .argument('<to>', 'The path to the output file') .addHelpText('before', 'Example: gen-types schema.json ./src/types') .action((from, to) => { console.log(chalk_1.default.green(`Starting to clone types from ${from} to ${to}`)); // Read the JSON file fs_1.default.readFile(from, 'utf8', (err, data) => { if (err) { console.error(chalk_1.default.red(`Failed to read from ${from}:`, err)); return; } try { const jsonData = JSON.parse(data); if (!Array.isArray(jsonData)) { console.error(chalk_1.default.red(`Failed to parse JSON data:`, 'The JSON data is not an array')); return; } let typeString = ``; for (let i = 0; i < jsonData.length; i++) { const name = jsonData[i].name; const type = jsonData[i].type; console.log(chalk_1.default.green(`Creating type ${name}`)); typeString += `export type ${name} = {\n`; for (const [key, val] of Object.entries(type)) { typeString += `\t${key}: ${val};\n`; } typeString += `}\n\n`; } fs_1.default.writeFile(to + '/pulse-types.ts', typeString, (err) => { if (err) { console.error(chalk_1.default.red(`Failed to write to ${to}:`, err)); } else { console.log(chalk_1.default.green(`Successfully cloned types to ${to}`)); } }); } catch (parseError) { console.error(chalk_1.default.red('Failed to parse JSON data:', parseError)); } }); }); program.parse(); //# sourceMappingURL=index.js.map