penguins-eggs
Version:
A remaster system tool, compatible with Arch, Debian, Devuan, Ubuntu and others
62 lines (61 loc) • 1.82 kB
JavaScript
/**
* ./src/lib/kill_me_softly.ts
* penguins-eggs v.10.0.0 / ecmascript 2020
* author: Piero Proietti
* email: piero.proietti@gmail.com
* license: MIT
*/
import fs from 'node:fs';
import Utils from '../classes/utils.js';
import { exec } from './utils.js';
/**
*
*/
export default async function killMeSoftly(eggsRoot = `/home/eggs`, eggsMnt = '/home/eggs/.mnt', isos = false) {
const echo = Utils.setEcho(false);
const liveFs = `${eggsMnt}filesystem.squashfs`;
/**
* refuse if /home/eggs/mnt/filesystem.squashfs
*/
if (haveBindedDirs(liveFs)) {
Utils.warning(`You have binded dirs under ${liveFs}, kill is not possible!`);
process.exit(1);
}
/**
* if eggsMnt is mountpoint
*/
if (Utils.isMountpoint(eggsMnt)) {
// Just delete
await exec(`rm -rf ${eggsMnt}efi-work`);
await exec(`rm -rf ${eggsMnt}iso`);
await exec(`rm -rf ${eggsMnt}memdiskDir`);
await exec(`rm -rf ${eggsRoot}ovarium`);
// Remove all ISOs if --isos
if (isos) {
await exec(`rm -rf ${eggsMnt}*.iso`);
}
// double check !haveBindedDirs
if (!haveBindedDirs(liveFs)) {
await exec(`rm -rf ${liveFs}`);
}
process.exit(0);
}
await exec(`rm ${eggsRoot} -rf`, echo);
}
/**
*
* @param path
* @returns
*/
function haveBindedDirs(path) {
let retVal = false;
const dirs = ['bin', 'boot', 'etc', 'lib', 'lib32', 'lib64', 'libx32', 'opt', 'root', 'sbin', 'srv', 'usr', 'var'];
for (const dir of dirs) {
const dirToCheck = `${path}/${dir}`;
if (fs.existsSync(dirToCheck) && Utils.isMountpoint(dirToCheck)) {
console.log(`Warning: ${dirToCheck}, is a mountpoint!`);
retVal = true;
}
}
return retVal;
}