penguins-eggs
Version:
A remaster system tool, compatible with Arch, Debian, Devuan, Ubuntu and others
137 lines (136 loc) • 4.29 kB
JavaScript
/**
* ./src/classes/families/archlinux.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 shx from 'shelljs';
import { exec } from '../../lib/utils.js';
import Utils from '../utils.js';
/**
* Archlinux
* @remarks all the utilities
*/
export default class Archlinux {
static packs4calamares = ['calamares-eggs']; // , 'calamares']
/**
* Archlinux: calamaresInstall
*/
static async calamaresInstall(verbose = false) {
verbose = true; // serve per pacman
const echo = Utils.setEcho(verbose);
const cal_eggs = 'calamares-eggs-3.3.14-2-x86_64.pkg.tar.zst'; // 11/05/2025
let cmd = `wget -O /tmp/${cal_eggs} https://penguins-eggs.net/basket/packages/aur/${cal_eggs}`; // 21/12/2024
try {
await exec(cmd, echo);
cmd = `pacman -U /tmp/${cal_eggs}`;
try {
await exec(cmd, echo);
}
catch {
Utils.error(`Cannot install /tmp/${cal_eggs}`); // + e.error)
}
}
catch {
Utils.error(`Cannot download ${cal_eggs}`); // + e.error)
}
}
/**
*
* calamaresPolicies
*/
static async calamaresPolicies(verbose = false) {
// nothing
}
/**
* Archlinux: calamaresRemove
*/
static async calamaresRemove(verbose = true) {
verbose = true; // serve per pacman
let removed = false;
const echo = Utils.setEcho(verbose);
const calPKGs = ['calamares', 'calamares-eggs'];
for (const calPKG of calPKGs) {
if (await this.packagePacmanAvailable(calPKG)) {
await exec(`pacman -R ${calPKG}`, echo);
removed = true;
}
}
if (removed && fs.existsSync('/etc/calamares')) {
await exec('rm /etc/calamares -rf', echo);
}
return removed;
}
/**
* Archlinux: isInstalledWayland
* @returns true if wayland is installed
*/
static isInstalledWayland() {
return this.packageIsInstalled('xwayland');
}
/**
* Archlinux: isInstalledXorg
* @returns true if xorg is installed
*/
static isInstalledXorg() {
return this.packageIsInstalled('xorg-server-common');
}
/**
* Archlinux: packageInstall
* Install the package packageName
* @param packageName {string} Pacchetto Debian da installare
* @returns {boolean} True if success
*/
static async packageInstall(packageName) {
let retVal = false;
if (shx.exec(`/usr/bin/pacman -Si ${packageName}`, { silent: true }) === '0') {
retVal = true;
}
return retVal;
}
/**
* Archlinux: packageIsInstalled
* restuisce VERO se il pacchetto è installato
* @param packageName
*/
static packageIsInstalled(packageName) {
let installed = false;
const cmd = `/usr/bin/pacman -Qi ${packageName}`;
const stdout = shx.exec(cmd, { silent: true }).stdout.trim();
if (stdout.includes(packageName)) {
installed = true;
}
return installed;
}
/**
* Archlinux: packagePacmanAvailable
* restuisce VERO se il pacchetto è installato
* @param packageName
*/
static async packagePacmanAvailable(packageName) {
let available = false;
const cmd = `/usr/bin/pacman -Q ${packageName} | awk '{ print $1 }'`;
const stdout = shx.exec(cmd, { silent: true }).stdout.trim();
if (stdout == packageName) {
available = true;
}
return available;
}
/**
* Archlinux: packagePacmanLast
* @param packageName
* @returns
*/
static async packagePacmanLast(packageName) {
let version = '';
const cmd = `/usr/bin/pacman -Q ${packageName} | grep Version:`;
const stdout = shx.exec(cmd, { silent: true }).stdout.trim();
version = stdout.slice(9);
// console.log('===================================')
// console.log('[' + version + ']')
// console.log('===================================')
return version;
}
}