UNPKG

deploy-neex

Version:

🚀 CLI tool for deploying Neex applications with PM2 and Nginx

56 lines • 1.72 kB
// src/utils/system.ts import { execa } from 'execa'; import fs from 'fs-extra'; import path from 'path'; export class SystemUtils { logger; constructor(logger) { this.logger = logger; } async checkCommand(command) { try { await execa('which', [command]); return true; } catch { return false; } } async installPackage(packageName, global = true) { const args = global ? ['install', '-g', packageName] : ['install', packageName]; await execa('npm', args); } async executeCommand(command, args, cwd) { await execa(command, args, { cwd, stdio: 'inherit' }); } async writeFile(filePath, content) { await fs.ensureDir(path.dirname(filePath)); await fs.writeFile(filePath, content); } async copyTemplate(templatePath, targetPath, replacements) { let content = await fs.readFile(templatePath, 'utf-8'); for (const [key, value] of Object.entries(replacements)) { content = content.replace(new RegExp(`{{${key}}}`, 'g'), value); } await this.writeFile(targetPath, content); } async isPortAvailable(port) { try { const detectPort = await import('detect-port'); const availablePort = await detectPort.default(port); return availablePort === port; } catch { return false; } } getOS() { const platform = process.platform; if (platform === 'darwin') return 'darwin'; if (platform === 'win32') return 'windows'; return 'linux'; } } //# sourceMappingURL=system.js.map