deploy-neex
Version:
🚀 CLI tool for deploying Neex applications with PM2 and Nginx
56 lines • 1.72 kB
JavaScript
// 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