penguins-eggs
Version:
A remaster system tool, compatible with Arch, Debian, Devuan, Ubuntu and others
34 lines (33 loc) • 1.38 kB
JavaScript
/**
* ./src/krill/modules/grubcfg.ts
* penguins-eggs v.10.0.0 / ecmascript 2020
* author: Piero Proietti
* email: piero.proietti@gmail.com
* license: MIT
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
*/
import fs from 'node:fs';
import Utils from '../../../classes/utils.js';
import { SwapChoice } from '../krill_enums.js';
import { InstallationMode } from '../krill_enums.js';
/**
* grubcfg
* - open /etc/default/grub
* - find GRUB_CMDLINE_LINUX_DEFAULT=
* - replace with GRUB_CMDLINE_LINUX_DEFAULT=
* 's/GRUB_CMDLINE_LINUX_DEFAULT=.*$/GRUB_CMDLINE_LINUX_DEFAULT=/g'
*/
export default async function grubcfg() {
const file = `${this.installTarget}/etc/default/grub`;
let content = '';
const grubs = fs.readFileSync(file, 'utf8').split('\n');
for (let i = 0; i < grubs.length; i++) {
if (grubs[i].includes('GRUB_CMDLINE_LINUX_DEFAULT=')) {
if (this.partitions.userSwapChoice != SwapChoice.File) {
grubs[i] = this.partitions.installationMode === InstallationMode.Luks ? `GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=${Utils.uuid(this.devices.swap.name)}"` : `GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=${Utils.uuid(this.devices.swap.name)}"`;
}
}
content += grubs[i] + '\n';
}
fs.writeFileSync(file, content, 'utf-8');
}