From 2997939c8e88cf270ec084f1f3fb45a130b3e25d Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Tue, 10 Feb 2026 23:52:29 +0800 Subject: [PATCH] pub deno commons mod --- libraries/deno-commons-mod.test.ts | 6 +++--- libraries/deno-commons-mod.ts | 28 ++++++++++++---------------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/libraries/deno-commons-mod.test.ts b/libraries/deno-commons-mod.test.ts index 34e3a0f..bbec4e7 100644 --- a/libraries/deno-commons-mod.test.ts +++ b/libraries/deno-commons-mod.test.ts @@ -98,11 +98,11 @@ Deno.test("base64Url", () => { ); }); -Deno.test("test-key-ring-rs", () => { - setKeyRingPassword("test-service", "test-user", "test-password"); +Deno.test("test-key-ring-rs", async () => { + await setKeyRingPassword("test-service", "test-user", "test-password"); assertEquals( "test-password", - getKeyRingPassword("test-service", "test-user"), + await getKeyRingPassword("test-service", "test-user"), ); }); diff --git a/libraries/deno-commons-mod.ts b/libraries/deno-commons-mod.ts index 90dfa06..47a1399 100644 --- a/libraries/deno-commons-mod.ts +++ b/libraries/deno-commons-mod.ts @@ -791,17 +791,15 @@ export function encodeBase64Url( ); } -export function getKeyRingPassword( +export async function getKeyRingPassword( service: string, user: string, ): string | null { - const command = new Deno.Command("keyring.rs", { - args: ["-g", "--json", "-S", service, "-U", user], - }); - const { code, stdout, stderr } = command.outputSync(); - const stdoutString = new TextDecoder().decode(stdout); - const stderrString = new TextDecoder().decode(stderr); - if (code != 0) { + const keyRingArgs = ["-g", "--json", "-S", service, "-U", user]; + const processOutput = await execCommand("keyring.rs", keyRingArgs); + const stdoutString = processOutput.getStdoutAsStringThenTrim(); + const stderrString = processOutput.getStderrAsStringThenTrim(); + if (processOutput.code != 0) { if (stderrString && stderrString.includes("Error: NoEntry")) { return null; } @@ -815,18 +813,16 @@ export function getKeyRingPassword( return result.password; } -export function setKeyRingPassword( +export async function setKeyRingPassword( service: string, user: string, password: string, ): void { - const command = new Deno.Command("keyring.rs", { - args: ["-s", "-S", service, "-U", user, "-P", password], - }); - const { code, stdout, stderr } = command.outputSync(); - const stdoutString = new TextDecoder().decode(stdout); - const stderrString = new TextDecoder().decode(stderr); - if (code != 0) { + const keyRingArgs = ["-s", "-S", service, "-U", user, "-P", password]; + const processOutput = await execCommand("keyring.rs", keyRingArgs); + const stdoutString = processOutput.getStdoutAsStringThenTrim(); + const stderrString = processOutput.getStderrAsStringThenTrim(); + if (processOutput.code != 0) { throw new Error( `keyring.rs -s failed, code: ${code}, stdout: ${stdoutString}, stderr: ${stderrString}`, );