penguins-eggs
Version:
A remaster system tool, compatible with Arch, Debian, Devuan, Ubuntu and others
80 lines (79 loc) • 3.33 kB
JavaScript
/**
* ./src/classes/ovary.d/produce.ts
* penguins-eggs v.10.0.0 / ecmascript 2020
* author: Piero Proietti
* email: piero.proietti@gmail.com
* license: MIT
*/
import mustache from 'mustache';
// packages
import fs from 'node:fs';
import path from 'node:path';
// backup
// interfaces
// libraries
import { exec } from '../../lib/utils.js';
import Diversions from './../diversions.js';
import Utils from './../utils.js';
// _dirname
const __dirname = path.dirname(new URL(import.meta.url).pathname);
/**
* syslinux: da syspath
*/
export async function syslinux(theme = 'eggs') {
let syspath = path.resolve(__dirname, `../../../syslinux`);
await exec(`cp ${syspath}/chain.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
await exec(`cp ${syspath}/isohdpfx.bin ${this.settings.iso_work}/isolinux/`, this.echo);
// just fo x64 arch
await exec(`cp ${syspath}/isolinux.bin ${this.settings.iso_work}/isolinux/`, this.echo);
await exec(`cp ${syspath}/ldlinux.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
await exec(`cp ${syspath}/libcom32.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
await exec(`cp ${syspath}/libutil.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
await exec(`cp ${syspath}/vesamenu.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
const isolinuxThemeDest = this.settings.iso_work + 'isolinux/isolinux.theme.cfg';
let isolinuxThemeSrc = path.resolve(__dirname, `../../../addons/${theme}/theme/livecd/isolinux.theme.cfg`);
if (this.theme.includes('/')) {
isolinuxThemeSrc = `${theme}/theme/livecd/isolinux.theme.cfg`;
}
if (!fs.existsSync(isolinuxThemeSrc)) {
Utils.warning('Cannot find: ' + isolinuxThemeSrc);
process.exit();
}
fs.copyFileSync(isolinuxThemeSrc, isolinuxThemeDest);
/**
* isolinux.cfg from isolinux.main.cfg
*/
const isolinuxDest = `${this.settings.iso_work}/isolinux/isolinux.cfg`;
this.settings.iso_work + 'isolinux/isolinux.cfg';
let isolinuxTemplate = `${theme}/theme/livecd/isolinux.main.cfg`;
if (!fs.existsSync(isolinuxTemplate)) {
isolinuxTemplate = path.resolve(__dirname, '../../../addons/eggs/theme/livecd/isolinux.main.cfg');
}
if (!fs.existsSync(isolinuxTemplate)) {
Utils.warning('Cannot find: ' + isolinuxTemplate);
process.exit();
}
const kernel_parameters = Diversions.kernelParameters(this.familyId, this.volid);
const template = fs.readFileSync(isolinuxTemplate, 'utf8');
const view = {
fullname: this.settings.remix.fullname.toUpperCase(),
initrdImg: `/live/${path.basename(this.initrd)}`,
kernel: this.kernel,
kernel_parameters,
vmlinuz: `/live/${path.basename(this.vmlinuz)}`
};
fs.writeFileSync(isolinuxDest, mustache.render(template, view));
/**
* splash
*/
const splashDest = `${this.settings.iso_work}/isolinux/splash.png`;
let splashSrc = path.resolve(__dirname, `../../../addons/${theme}/theme/livecd/splash.png`);
if (this.theme.includes('/')) {
splashSrc = path.resolve(`${theme}/theme/livecd/splash.png`);
}
if (!fs.existsSync(splashSrc)) {
Utils.warning('Cannot find: ' + splashSrc);
process.exit();
}
fs.copyFileSync(splashSrc, splashDest);
}