UNPKG

eploy2

Version:

Easy deployment for any programming languages and also transfer the files to a server instantly with a single command

186 lines (169 loc) 8.2 kB
import { OSDetails } from '../interfaces'; import shellJS from '../utils/exec' import { confirmDeleteService } from '../utils/prompts'; import { BLUE, BOLD, RESET, YELLOW } from '../utils/text-colors'; import { symWarning } from '../utils/symbols'; /*.................EPLOY SERVICE START COMMANDS STARTS.................*/ export const run = async () => { require('./../start-daemon'); } /*.................EPLOY SERVICE START COMMANDS STARTS.................*/ export const start = async (args: any) => { let osDetail: OSDetails = await getOSName(); if (!osDetail) return; if (osDetail === 'mac') { if (args._[1] === 'daemon') { createMacDaemonService() } else { try { var servicePath = '/Library/LaunchDaemons/www.eploy.service.plist' await shellJS(`launchctl load ${servicePath} && launchctl start www.eploy.service`); console.log('\n eploy daemon service started\n'); } catch (error) { console.log('Error:', error); console.log(await shellJS(`echo "${symWarning} $(${YELLOW})Make sure run the command $(${BOLD})$(${BLUE})'eploy start daemon'$(${RESET})$(${YELLOW}) before execute a $(${BOLD})$(${BLUE})'eploy start'$(${RESET})"`)) process.exit(); } } } else if (osDetail === 'ubuntu-linux') { if (args._[1] === 'daemon') { createUbuntuDaemonService() } else { try { await shellJS(`sudo systemctl daemon-reload && sudo systemctl start eploy`); console.log('\n eploy daemon service started\n'); } catch (error) { console.log(error); console.log(await shellJS(`echo "${symWarning} $(${YELLOW})Make sure run the command $(${BOLD})$(${BLUE})'eploy start daemon'$(${RESET})$(${YELLOW}) before execute a $(${BOLD})$(${BLUE})'eploy start'$(${RESET})"`)) process.exit() } } } else { process.exit() } } const getOSName = async (): Promise<OSDetails> => { try { let kernalName: any = await shellJS('uname'); if (kernalName.toLowerCase().indexOf('darwin') >= 0) { let osDetail: any = await shellJS('sw_vers'); if (osDetail.indexOf('Mac') >= 0 || osDetail.indexOf('mac') >= 0) { return 'mac' } } else if (kernalName.toLowerCase().indexOf('linux') >= 0) { let osDetail: any = await shellJS('hostnamectl'); if (osDetail.indexOf('Ubuntu') >= 0 || osDetail.indexOf('ubuntu') >= 0) { return 'ubuntu-linux' } } return false; } catch (error) { console.log("Ooops, can't find a OS details, please contact us via github issues regading this." + error); return false; } } const createMacDaemonService = async () => { await shellJS('sudo rm -rf /Library/LaunchDaemons/www.eploy.service.plist && sudo cp /usr/local/lib/node_modules/eploy2/.eploy/.config/.files/.plist/www.eploy.service.plist /Library/LaunchDaemons/'); setTimeout(async () => { await shellJS('launchctl load /Library/LaunchDaemons/www.eploy.service.plist && launchctl start www.eploy.service') console.log('\n eploy daemon service started\n'); process.exit(); }, 1000); } const createUbuntuDaemonService = async () => { await shellJS('sudo rm -rf /etc/systemd/system/eploy.service && sudo cp /usr/lib/node_modules/eploy2/.eploy/.config/.files/.service/eploy.service /etc/systemd/system/') setTimeout(async () => { await shellJS('sudo systemctl daemon-reload && sudo systemctl start eploy && sudo systemctl enable eploy'); console.log('\n eploy daemon service started\n'); process.exit(); }, 1000); } /*.................EPLOY SERVICE RESTART COMMANDS STARTS.................*/ export const restart = async () => { let osDetail: OSDetails = await getOSName(); if (!osDetail) return; try { if (osDetail === 'mac') { var serviceName = 'www.eploy.service' var servicePath = `/Library/LaunchDaemons/${serviceName}.plist` let logs: any = await shellJS(`launchctl unload ${servicePath} && launchctl load ${servicePath}`); if (logs.indexOf('No such file or directory') === -1) { console.log('\n eploy daemon service restarted\n'); } else { console.log(`${servicePath}: No such file or directory`) console.log(await shellJS(`echo "${symWarning} $(${YELLOW})Make sure run the command $(${BOLD})$(${BLUE})'eploy start daemon'$(${RESET})$(${YELLOW}) before execute a $(${BOLD})$(${BLUE})'eploy restart'$(${RESET})"`)) process.exit() } } else if (osDetail === 'ubuntu-linux') { try { await shellJS(`sudo systemctl daemon-reload && sudo systemctl restart eploy`); console.log('\n eploy daemon service restarted\n'); } catch (error) { console.log(error); console.log(await shellJS(`echo "${symWarning} $(${YELLOW})Make sure run the command $(${BOLD})$(${BLUE})'eploy start daemon'$(${RESET})$(${YELLOW}) before execute a $(${BOLD})$(${BLUE})'eploy restart'$(${RESET})"`)) process.exit() } } else { process.exit() } } catch (error) { console.log(error); } } /*.................EPLOY SERVICE STOP COMMANDS STARTS.................*/ export const stop = async () => { let osDetail: OSDetails = await getOSName(); if (!osDetail) return; try { if (osDetail === 'mac') { var servicePath = '/Library/LaunchDaemons/www.eploy.service.plist' let logs: any = await shellJS(`launchctl unload ${servicePath}`); if (logs.indexOf('No such file or directory') === -1) { console.log('\n eploy daemon service stopped\n'); } else { console.log(`${servicePath}: No such file or directory`) console.log(await shellJS(`echo "${symWarning} $(${YELLOW})Make sure run the command $(${BOLD})$(${BLUE})'eploy start daemon'$(${RESET})$(${YELLOW}) before execute a $(${BOLD})$(${BLUE})'eploy stop'$(${RESET})"`)) process.exit() } } else if (osDetail === 'ubuntu-linux') { try { await shellJS(`sudo systemctl daemon-reload && sudo systemctl stop eploy`); console.log('\n eploy daemon service stopped\n'); } catch (error) { console.log(error); console.log(await shellJS(`echo "${symWarning} $(${YELLOW})Make sure run the command $(${BOLD})$(${BLUE})'eploy start daemon'$(${RESET})$(${YELLOW}) before execute a $(${BOLD})$(${BLUE})'eploy stop'$(${RESET})"`)) process.exit() } } else { process.exit() } } catch (error) { console.log(error); } } /*.................EPLOY SERVICE DELETE COMMANDS STARTS.................*/ export const deleteService = async () => { let response = await confirmDeleteService() if (response.confirm_delete) { confirmDelete(); } } const confirmDelete = async () => { let osDetail: OSDetails = await getOSName() if (!osDetail) return; try { if (osDetail === 'mac') { var servicePath = '/Library/LaunchDaemons/www.eploy.service.plist' await shellJS(`launchctl unload ${servicePath} && sudo rm -rf /Library/LaunchDaemons/www.eploy.service.plist`); console.log('\n eploy daemon service deleted permanently\n'); } else if (osDetail === 'ubuntu-linux') { await shellJS(`sudo systemctl daemon-reload && sudo systemctl stop eploy && sudo rm -rf /etc/systemd/system/eploy.service`); console.log('\n eploy daemon service deleted permanently\n'); } else { process.exit() } } catch (error) { console.log(error); } } export { confirmDelete };