penguins-eggs
Version:
A remaster system tool, compatible with Arch, Debian, Devuan, Ubuntu and others
78 lines (77 loc) • 2.21 kB
JavaScript
/**
* ./src/classes/locales.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 { exec } from '../lib/utils.js';
import Distro from './distro.js';
import Utils from './utils.js';
export default class Locales {
/**
*
*/
async getDefault() {
const cmd = `locale|grep LANG|cut -f2 -d=`;
let defaultLanguage = 'en_US.UTF-8';
const result = await exec(cmd, { capture: true, echo: false, ignore: false });
if (result.code === 0) {
defaultLanguage = result.data.trim();
}
return defaultLanguage;
}
/**
* getSupported
*/
async getSupported() {
const distro = new Distro();
let supporteds = [];
switch (distro.familyId) {
case 'alpine': {
supporteds = await this.getEnabled();
break;
}
case 'archlinux': {
supporteds = await this.getEnabled();
break;
}
case 'debian': {
supporteds = fs.readFileSync('/usr/share/i18n/SUPPORTED', 'utf8').split('\n');
break;
}
case 'fedora': {
supporteds = await this.getEnabled();
break;
}
case 'opensuse': {
supporteds = await this.getEnabled();
break;
}
}
const elements = [];
for (const elem of supporteds) {
elements.push(elem.replace(' UTF-8', ''));
}
return elements;
}
/**
* getEnabled
*/
async getEnabled() {
let cmd = "locale -a";
if (Utils.isSystemd()) {
cmd = "localectl list-locales";
}
const enabledLocales = [];
const result = await exec(cmd, { capture: true, echo: false, ignore: false });
if (result.code === 0) {
const lines = result.data.split('\n');
for (const line of lines) {
enabledLocales.push(line.trim());
}
}
return enabledLocales;
}
}