UNPKG

@sap/cli-core

Version:

Command-Line Interface (CLI) Core Module

49 lines (48 loc) 1.73 kB
import { OPTION_BROWSER } from "../constants.js"; import { get as getLoggerOrig } from "../logger/index.js"; import { getOptionValueFromConfig } from "./options.js"; const getLogger = () => getLoggerOrig("utils.open"); export async function getSupportedBrowsers() { const { apps } = await import("open"); return (Object.entries(apps) // Private browser is not supported .filter(([name]) => name !== "browserPrivate") .map(([key, value]) => ({ name: key, app: value, }))); } export async function getDefaultBrowser() { const { apps } = await import("open"); return apps.browser; } async function getBrowser() { const { apps } = await import("open"); const browser = getOptionValueFromConfig(OPTION_BROWSER, await getDefaultBrowser()); return apps[browser]; } export const openUrlInBrowser = async (url, queryParameters = {}) => { const u = new URL(url); for (const [key, value] of Object.entries(queryParameters)) { u.searchParams.append(key, value); } const urlString = u.toString(); const { debug, error } = getLogger(); const browser = await getBrowser(); const open = (await import("open")).default; try { debug(`Attempting to open browser ${browser} at ${urlString}`); await open(urlString, { app: { name: browser } }); } catch (err) { error(`Failed to open browser ${browser}`, err); debug("Retrying with Google Chrome as fallback browser"); try { await open(urlString, { app: { name: "google chrome" } }); } catch (fallbackErr) { error(`Failed to open browser`, fallbackErr); throw fallbackErr; } } };