From bafd48d3df9b43a1d49ec015eff30619d595468b Mon Sep 17 00:00:00 2001 From: Aylur Date: Tue, 15 Oct 2024 13:25:45 +0000 Subject: update lua and gjs layout installing the gjs package through meson or npm now results in the same exposed structure lua: fix rockspec docs: aur package --- lang/gjs/src/process.ts | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 lang/gjs/src/process.ts (limited to 'lang/gjs/src/process.ts') diff --git a/lang/gjs/src/process.ts b/lang/gjs/src/process.ts new file mode 100644 index 0000000..2f7816b --- /dev/null +++ b/lang/gjs/src/process.ts @@ -0,0 +1,68 @@ +import Astal from "gi://AstalIO" + +type Args = { + cmd: string | string[] + out?: (stdout: string) => void + err?: (stderr: string) => void +} + +export function subprocess(args: Args): Astal.Process + +export function subprocess( + cmd: string | string[], + onOut?: (stdout: string) => void, + onErr?: (stderr: string) => void, +): Astal.Process + +export function subprocess( + argsOrCmd: Args | string | string[], + onOut: (stdout: string) => void = print, + onErr: (stderr: string) => void = printerr, +) { + const args = Array.isArray(argsOrCmd) || typeof argsOrCmd === "string" + const { cmd, err, out } = { + cmd: args ? argsOrCmd : argsOrCmd.cmd, + err: args ? onErr : argsOrCmd.err || onErr, + out: args ? onOut : argsOrCmd.out || onOut, + } + + const proc = Array.isArray(cmd) + ? Astal.Process.subprocessv(cmd) + : Astal.Process.subprocess(cmd) + + proc.connect("stdout", (_, stdout: string) => out(stdout)) + proc.connect("stderr", (_, stderr: string) => err(stderr)) + return proc +} + +/** @throws {GLib.Error} Throws stderr */ +export function exec(cmd: string | string[]) { + return Array.isArray(cmd) + ? Astal.Process.execv(cmd) + : Astal.Process.exec(cmd) +} + +export function execAsync(cmd: string | string[]): Promise { + return new Promise((resolve, reject) => { + if (Array.isArray(cmd)) { + Astal.Process.exec_asyncv(cmd, (_, res) => { + try { + resolve(Astal.Process.exec_asyncv_finish(res)) + } + catch (error) { + reject(error) + } + }) + } + else { + Astal.Process.exec_async(cmd, (_, res) => { + try { + resolve(Astal.Process.exec_finish(res)) + } + catch (error) { + reject(error) + } + }) + } + }) +} -- cgit v1.2.3 From e7762eb33a8d5d8c216a42fb6634b8cd87fa9f14 Mon Sep 17 00:00:00 2001 From: Aylur Date: Fri, 18 Oct 2024 12:07:13 +0000 Subject: reexport modules - Gio from file - GLib from gobject - AstalIO.Process from process - AstalIO.Time from time --- lang/gjs/src/process.ts | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lang/gjs/src/process.ts') diff --git a/lang/gjs/src/process.ts b/lang/gjs/src/process.ts index 2f7816b..c41adc1 100644 --- a/lang/gjs/src/process.ts +++ b/lang/gjs/src/process.ts @@ -6,6 +6,8 @@ type Args = { err?: (stderr: string) => void } +export const { Process } = Astal + export function subprocess(args: Args): Astal.Process export function subprocess( -- cgit v1.2.3