UNPKG

@ideascol/cli-maker

Version:

A simple library to help create CLIs

68 lines (67 loc) • 2.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addScriptsToPackageJson = addScriptsToPackageJson; exports.validateProjectDirectory = validateProjectDirectory; exports.installDependencies = installDependencies; const node_child_process_1 = require("node:child_process"); const node_fs_1 = require("node:fs"); async function addScriptsToPackageJson(scripts, name, description, author, email) { const packageJsonPath = './package.json'; try { const data = await node_fs_1.promises.readFile(packageJsonPath, 'utf8'); const packageJson = JSON.parse(data); packageJson.scripts = { ...packageJson.scripts, ...scripts }; packageJson.name = name; packageJson.description = description; packageJson.version = "0.0.1"; packageJson.author = `${author} <${email}>`; const binName = name.split('/').pop() || name; packageJson.bin = { [binName]: "dist/bin/cli.js" }; packageJson.main = "dist/index.js"; packageJson.types = "dist/index.d.ts"; packageJson.license = "MIT"; packageJson.files = [ "dist/**/*", "!src/tests/**/*" ]; packageJson.engines = { node: ">=20.15.1" }; packageJson.publishConfig = { access: "public" }; const updatedPackageJson = JSON.stringify(packageJson, null, 2); await node_fs_1.promises.writeFile(packageJsonPath, updatedPackageJson, 'utf8'); console.log('package.json updated successfully.'); } catch (err) { console.error('Error updating package.json:', err); } } async function validateProjectDirectory(name) { try { await node_fs_1.promises.access(name); console.log(`\nāŒ Error: The folder "${name}" already exists.`); console.log('Please choose a different name or delete the existing folder.\n'); return false; } catch { return true; } } async function installDependencies(package_manager = 'npm', projectName) { const installCmd = package_manager === 'bun' ? 'bun add' : 'npm install'; const devFlag = package_manager === 'bun' ? '--dev' : '--save-dev'; console.log('Installing TypeScript and @types/node...'); (0, node_child_process_1.execSync)(`${installCmd} ${devFlag} typescript @types/node`, { stdio: 'inherit' }); console.log('Installing @ideascol/cli-maker...'); (0, node_child_process_1.execSync)(`${installCmd} @ideascol/cli-maker`, { stdio: 'inherit' }); (0, node_child_process_1.execSync)(`${package_manager} run start`, { stdio: 'inherit' }); console.log('\nšŸŽ‰ Success! Your CLI project has been created.'); console.log(`\nNext steps:\n cd ${projectName.split('/')[1] || projectName}\n ${package_manager} start\n\nEnjoy building your CLI! šŸš€\n`); }