summaryrefslogtreecommitdiff
path: root/raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/systemdBoot.js
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/systemdBoot.js')
-rw-r--r--raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/systemdBoot.js121
1 files changed, 0 insertions, 121 deletions
diff --git a/raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/systemdBoot.js b/raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/systemdBoot.js
deleted file mode 100644
index 51d4e6e..0000000
--- a/raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/systemdBoot.js
+++ /dev/null
@@ -1,121 +0,0 @@
-import Gio from "gi://Gio";
-import { ExecCommand, Log, LogWarning } from './utils.js';
-
-/**
- * Represents Systemdboot
- */
-export class SystemdBoot {
- /**
- * Get's all available boot options
- * @returns {[Map, string]} Map(title, id), defaultOption
- */
- static async GetBootOptions() {
- let bootctl = await this.GetBinary();
- if (bootctl == "") {
- Log(`Failed to find bootctl binary`);
- return undefined;
- }
-
- try {
- let [status, stdout, stderr] = await ExecCommand([bootctl, "list"]);
- if (status !== 0)
- throw new Error(`Failed to get list from bootctl: ${status}\n${stdout}\n${stderr}`);
- Log(`bootctl list: ${status}\n${stdout}\n${stderr}`);
- let lines = String(stdout).split('\n');
- let titleRx = /(?<=title:\s+).+/;
- let idRx = /(?<=id:\s+).+/;
- let defaultRx = /\(default\)/;
- let titles = [];
- let ids = []
- let defaultOpt;
- lines.forEach(l => {
- let title = titleRx.exec(l);
- let id = idRx.exec(l);
- if (title && title.length) {
- titles.push(String(title));
- } else if (id && id.length) {
- ids.push(String(id));
- }
- });
- if (titles.length !== ids.length)
- throw new Error("Number of titles and ids do not match!");
- let bootOptions = new Map();
- for (let i = 0; i < titles.length; i++) {
- bootOptions.set(titles[i], ids[i])
- }
-
- bootOptions.forEach((id, title) => {
- Log(`${id} = ${title}`);
-
- let defaultRes = defaultRx.exec(title);
-
- if (defaultRes) {
- defaultOpt = title;
- }
- })
-
- return [bootOptions, bootOptions.get(defaultOpt)];
- } catch (e) {
- LogWarning(e);
- return undefined;
- }
- }
-
- /**
- * Set's the next boot option
- * @param {string} id
- * @returns True if the boot option was set, otherwise false
- */
- static async SetBootOption(id) {
- if (!this.IsUseable()) return false;
- const [status, stdout, stderr] = await ExecCommand(['/usr/bin/pkexec', '/usr/bin/bootctl', 'set-oneshot', id],);
- if (status === 0) {
- Log(`Set boot option to ${id}`);
- return true;
- }
- LogWarning("Unable to set boot option using bootctl");
- return false;
- }
-
-
- /**
- * Can we use this bootloader?
- * @returns True if useable otherwise false
- */
- static async IsUseable() {
- return await this.GetBinary() !== "";
- }
-
- /**
- * Get's bootctl binary path
- * @returns A string containing the location of the binary, if none is found returns a blank string
- */
- static async GetBinary() {
- let paths = ["/usr/sbin/bootctl", "/usr/bin/bootctl"];
-
- let file;
-
- for (let i = 0; i < paths.length; i++) {
- file = Gio.file_new_for_path(paths[i]);
- if (file.query_exists(null)) {
- return paths[i];
- }
- }
-
- return "";
- }
-
- /**
- * This boot loader cannot be quick rebooted
- */
- static async CanQuickReboot() {
- return false;
- }
-
- /**
- * This boot loader cannot be quick rebooted
- */
- static async QuickRebootEnabled() {
- return false;
- }
-}