From 3112ae3b3e6644fd1a53f505a2290b7d5f3a2c63 Mon Sep 17 00:00:00 2001 From: jamie-at-bunny Date: Thu, 23 Apr 2026 19:27:59 +0100 Subject: [PATCH 1/2] feat: add open cmd --- AGENTS.md | 2 ++ packages/cli/README.md | 14 +++++++++ packages/cli/src/cli.ts | 2 ++ packages/cli/src/commands/open.ts | 48 +++++++++++++++++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 packages/cli/src/commands/open.ts diff --git a/AGENTS.md b/AGENTS.md index 275278a..d0a6025 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -235,6 +235,7 @@ bunny-cli/ │ │ │ ├── add.ts # Add registry with credentials │ │ │ └── remove.ts # Remove registry │ │ ├── docs.ts # Open bunny.net documentation in browser (top-level: bunny docs) +│ │ ├── open.ts # Open bunny.net dashboard in browser (top-level: bunny open) │ │ └── scripts/ │ │ ├── index.ts # defineNamespace("scripts", ...) — registers all script commands │ │ ├── constants.ts # SCRIPT_MANIFEST, SCRIPT_TYPE_LABELS @@ -773,6 +774,7 @@ bunny │ ├── list (alias: ls) List all Edge Scripts │ └── show [id] Show Edge Script details (uses linked script if omitted) ├── docs Open bunny.net documentation in browser +├── open [--print] Open bunny.net dashboard in browser (or print URL) ├── --profile, -p Profile to use (default: "default") ├── --verbose, -v Enable verbose output ├── --output, -o Output format (default: "text") diff --git a/packages/cli/README.md b/packages/cli/README.md index db39e65..391be68 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -67,6 +67,20 @@ bunny whoami --output json bunny whoami --profile staging ``` +### `bunny open` + +Open the bunny.net dashboard in your default browser. Uses `BUNNYNET_DASHBOARD_URL` if set, otherwise `https://dash.bunny.net`. + +```bash +bunny open + +# Print the URL instead of opening it +bunny open --print + +# Print as JSON +bunny open --print --output json +``` + ### `bunny config` Manage CLI configuration and profiles. diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index 5905874..16c6cff 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -9,6 +9,7 @@ import { authLogoutCommand } from "./commands/auth/logout.ts"; import { configNamespace } from "./commands/config/index.ts"; import { dbNamespace } from "./commands/db/index.ts"; import { docsCommand } from "./commands/docs.ts"; +import { openCommand } from "./commands/open.ts"; import { registriesNamespace } from "./commands/registries/index.ts"; import { scriptsNamespace } from "./commands/scripts/index.ts"; import { whoamiCommand } from "./commands/whoami.ts"; @@ -24,6 +25,7 @@ const commands: CommandModule[] = [ scriptsNamespace, configNamespace, docsCommand, + openCommand, apiCommand, ]; diff --git a/packages/cli/src/commands/open.ts b/packages/cli/src/commands/open.ts new file mode 100644 index 0000000..c994472 --- /dev/null +++ b/packages/cli/src/commands/open.ts @@ -0,0 +1,48 @@ +import { defineCommand } from "../core/define-command.ts"; +import { logger } from "../core/logger.ts"; +import { openBrowser } from "../core/ui.ts"; + +const DASHBOARD_URL = + process.env.BUNNYNET_DASHBOARD_URL ?? "https://dash.bunny.net"; + +const COMMAND = "open"; +const DESCRIPTION = "Open the bunny.net dashboard in the browser."; + +/** + * Open the bunny.net dashboard in the default browser. + * + * @example + * ```bash + * bunny open + * bunny open --print + * ``` + */ +export const openCommand = defineCommand<{ print: boolean }>({ + command: COMMAND, + describe: DESCRIPTION, + examples: [ + ["$0 open", "Open the bunny.net dashboard"], + ["$0 open --print", "Print the dashboard URL instead of opening it"], + ], + + builder: (yargs) => + yargs.option("print", { + type: "boolean", + default: false, + describe: "Print the URL instead of opening it in the browser", + }), + + handler: async ({ print, output }) => { + if (print) { + if (output === "json") { + console.log(JSON.stringify({ url: DASHBOARD_URL })); + } else { + console.log(DASHBOARD_URL); + } + return; + } + + logger.info(`Opening ${DASHBOARD_URL}`); + openBrowser(DASHBOARD_URL); + }, +}); From 5b3956ff6f0d3ce2235e7040505342550af28d30 Mon Sep 17 00:00:00 2001 From: jamie-at-bunny Date: Thu, 23 Apr 2026 21:02:33 +0100 Subject: [PATCH 2/2] changeset --- .changeset/add-open-command.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/add-open-command.md diff --git a/.changeset/add-open-command.md b/.changeset/add-open-command.md new file mode 100644 index 0000000..75992af --- /dev/null +++ b/.changeset/add-open-command.md @@ -0,0 +1,5 @@ +--- +"@bunny.net/cli": minor +--- + +Add `bunny open` command to open the bunny.net dashboard in the default browser. Use `--print` to print the URL instead.