refactor: share cli runtime error handling
This commit is contained in:
@@ -17,12 +17,20 @@ import { defaultRuntime } from "../runtime.js";
|
||||
import { parseBooleanValue } from "../utils/boolean.js";
|
||||
import type { BrowserParentOpts } from "./browser-cli-shared.js";
|
||||
import { registerBrowserCookiesAndStorageCommands } from "./browser-cli-state.cookies-storage.js";
|
||||
import { runCommandWithRuntime } from "./cli-utils.js";
|
||||
|
||||
function parseOnOff(raw: string): boolean | null {
|
||||
const parsed = parseBooleanValue(raw);
|
||||
return parsed === undefined ? null : parsed;
|
||||
}
|
||||
|
||||
function runBrowserCommand(action: () => Promise<void>) {
|
||||
return runCommandWithRuntime(defaultRuntime, action, (err) => {
|
||||
defaultRuntime.error(danger(String(err)));
|
||||
defaultRuntime.exit(1);
|
||||
});
|
||||
}
|
||||
|
||||
export function registerBrowserStateCommands(
|
||||
browser: Command,
|
||||
parentOpts: (cmd: Command) => BrowserParentOpts,
|
||||
@@ -46,7 +54,7 @@ export function registerBrowserStateCommands(
|
||||
defaultRuntime.exit(1);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
await runBrowserCommand(async () => {
|
||||
const result = await browserAct(
|
||||
baseUrl,
|
||||
{
|
||||
@@ -62,10 +70,7 @@ export function registerBrowserStateCommands(
|
||||
return;
|
||||
}
|
||||
defaultRuntime.log(`viewport set: ${width}x${height}`);
|
||||
} catch (err) {
|
||||
defaultRuntime.error(danger(String(err)));
|
||||
defaultRuntime.exit(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
set
|
||||
@@ -83,7 +88,7 @@ export function registerBrowserStateCommands(
|
||||
defaultRuntime.exit(1);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
await runBrowserCommand(async () => {
|
||||
const result = await browserSetOffline(baseUrl, {
|
||||
offline,
|
||||
targetId: opts.targetId?.trim() || undefined,
|
||||
@@ -94,10 +99,7 @@ export function registerBrowserStateCommands(
|
||||
return;
|
||||
}
|
||||
defaultRuntime.log(`offline: ${offline}`);
|
||||
} catch (err) {
|
||||
defaultRuntime.error(danger(String(err)));
|
||||
defaultRuntime.exit(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
set
|
||||
@@ -109,7 +111,7 @@ export function registerBrowserStateCommands(
|
||||
const parent = parentOpts(cmd);
|
||||
const baseUrl = resolveBrowserControlUrl(parent?.url);
|
||||
const profile = parent?.browserProfile;
|
||||
try {
|
||||
await runBrowserCommand(async () => {
|
||||
const parsed = JSON.parse(String(opts.json)) as unknown;
|
||||
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
||||
throw new Error("headers json must be an object");
|
||||
@@ -128,10 +130,7 @@ export function registerBrowserStateCommands(
|
||||
return;
|
||||
}
|
||||
defaultRuntime.log("headers set");
|
||||
} catch (err) {
|
||||
defaultRuntime.error(danger(String(err)));
|
||||
defaultRuntime.exit(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
set
|
||||
@@ -145,7 +144,7 @@ export function registerBrowserStateCommands(
|
||||
const parent = parentOpts(cmd);
|
||||
const baseUrl = resolveBrowserControlUrl(parent?.url);
|
||||
const profile = parent?.browserProfile;
|
||||
try {
|
||||
await runBrowserCommand(async () => {
|
||||
const result = await browserSetHttpCredentials(baseUrl, {
|
||||
username: username?.trim() || undefined,
|
||||
password,
|
||||
@@ -158,10 +157,7 @@ export function registerBrowserStateCommands(
|
||||
return;
|
||||
}
|
||||
defaultRuntime.log(opts.clear ? "credentials cleared" : "credentials set");
|
||||
} catch (err) {
|
||||
defaultRuntime.error(danger(String(err)));
|
||||
defaultRuntime.exit(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
set
|
||||
@@ -177,7 +173,7 @@ export function registerBrowserStateCommands(
|
||||
const parent = parentOpts(cmd);
|
||||
const baseUrl = resolveBrowserControlUrl(parent?.url);
|
||||
const profile = parent?.browserProfile;
|
||||
try {
|
||||
await runBrowserCommand(async () => {
|
||||
const result = await browserSetGeolocation(baseUrl, {
|
||||
latitude: Number.isFinite(latitude) ? latitude : undefined,
|
||||
longitude: Number.isFinite(longitude) ? longitude : undefined,
|
||||
@@ -192,10 +188,7 @@ export function registerBrowserStateCommands(
|
||||
return;
|
||||
}
|
||||
defaultRuntime.log(opts.clear ? "geolocation cleared" : "geolocation set");
|
||||
} catch (err) {
|
||||
defaultRuntime.error(danger(String(err)));
|
||||
defaultRuntime.exit(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
set
|
||||
@@ -215,7 +208,7 @@ export function registerBrowserStateCommands(
|
||||
defaultRuntime.exit(1);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
await runBrowserCommand(async () => {
|
||||
const result = await browserSetMedia(baseUrl, {
|
||||
colorScheme,
|
||||
targetId: opts.targetId?.trim() || undefined,
|
||||
@@ -226,10 +219,7 @@ export function registerBrowserStateCommands(
|
||||
return;
|
||||
}
|
||||
defaultRuntime.log(`media colorScheme: ${colorScheme}`);
|
||||
} catch (err) {
|
||||
defaultRuntime.error(danger(String(err)));
|
||||
defaultRuntime.exit(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
set
|
||||
@@ -241,7 +231,7 @@ export function registerBrowserStateCommands(
|
||||
const parent = parentOpts(cmd);
|
||||
const baseUrl = resolveBrowserControlUrl(parent?.url);
|
||||
const profile = parent?.browserProfile;
|
||||
try {
|
||||
await runBrowserCommand(async () => {
|
||||
const result = await browserSetTimezone(baseUrl, {
|
||||
timezoneId,
|
||||
targetId: opts.targetId?.trim() || undefined,
|
||||
@@ -252,10 +242,7 @@ export function registerBrowserStateCommands(
|
||||
return;
|
||||
}
|
||||
defaultRuntime.log(`timezone: ${timezoneId}`);
|
||||
} catch (err) {
|
||||
defaultRuntime.error(danger(String(err)));
|
||||
defaultRuntime.exit(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
set
|
||||
@@ -267,7 +254,7 @@ export function registerBrowserStateCommands(
|
||||
const parent = parentOpts(cmd);
|
||||
const baseUrl = resolveBrowserControlUrl(parent?.url);
|
||||
const profile = parent?.browserProfile;
|
||||
try {
|
||||
await runBrowserCommand(async () => {
|
||||
const result = await browserSetLocale(baseUrl, {
|
||||
locale,
|
||||
targetId: opts.targetId?.trim() || undefined,
|
||||
@@ -278,10 +265,7 @@ export function registerBrowserStateCommands(
|
||||
return;
|
||||
}
|
||||
defaultRuntime.log(`locale: ${locale}`);
|
||||
} catch (err) {
|
||||
defaultRuntime.error(danger(String(err)));
|
||||
defaultRuntime.exit(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
set
|
||||
@@ -293,7 +277,7 @@ export function registerBrowserStateCommands(
|
||||
const parent = parentOpts(cmd);
|
||||
const baseUrl = resolveBrowserControlUrl(parent?.url);
|
||||
const profile = parent?.browserProfile;
|
||||
try {
|
||||
await runBrowserCommand(async () => {
|
||||
const result = await browserSetDevice(baseUrl, {
|
||||
name,
|
||||
targetId: opts.targetId?.trim() || undefined,
|
||||
@@ -304,9 +288,6 @@ export function registerBrowserStateCommands(
|
||||
return;
|
||||
}
|
||||
defaultRuntime.log(`device: ${name}`);
|
||||
} catch (err) {
|
||||
defaultRuntime.error(danger(String(err)));
|
||||
defaultRuntime.exit(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user