fix(cli): add 'setup' as an alias for the install command (fixes #4112)
Discord support and other guidance still tell users 'bunx oh-my-opencode setup', but the CLI only registers 'install'. Running the recommended command produces:
error: unknown command 'setup'
which dead-ends users who are trying to refresh missing skills (hyperplan, etc.) after upgrading. Commander.js supports first-class aliases, so declaring '.alias("setup")' on the install command makes both names route to the same action without any code duplication. Help output now reads 'Usage: oh-my-opencode install|setup [options]', which is the right discovery hint for both newcomers and users following older docs.
Regression test parses cli-program.ts and asserts the install command block contains '.alias("setup")' before its '.action(' so a future refactor of the CLI cannot silently drop the alias.
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
import { describe, test, expect } from "bun:test"
|
||||||
|
import { readFile } from "node:fs/promises"
|
||||||
|
import path from "node:path"
|
||||||
|
|
||||||
|
describe("cli-program", () => {
|
||||||
|
test("install command exposes 'setup' as an alias so the historical install path keeps working", async () => {
|
||||||
|
// given
|
||||||
|
const cliProgramSource = await readFile(
|
||||||
|
path.resolve(import.meta.dir, "cli-program.ts"),
|
||||||
|
"utf-8",
|
||||||
|
)
|
||||||
|
|
||||||
|
// when
|
||||||
|
const installBlock = cliProgramSource.match(
|
||||||
|
/program\s*\n\s*\.command\("install"\)([\s\S]*?)\.action\(/,
|
||||||
|
)
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(installBlock).not.toBeNull()
|
||||||
|
expect(installBlock?.[1]).toContain('.alias("setup")')
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -24,6 +24,7 @@ program
|
|||||||
|
|
||||||
program
|
program
|
||||||
.command("install")
|
.command("install")
|
||||||
|
.alias("setup")
|
||||||
.description("Install and configure oh-my-opencode with interactive setup")
|
.description("Install and configure oh-my-opencode with interactive setup")
|
||||||
.option("--no-tui", "Run in non-interactive mode (requires all options)")
|
.option("--no-tui", "Run in non-interactive mode (requires all options)")
|
||||||
.option("--claude <value>", "Claude subscription: no, yes, max20")
|
.option("--claude <value>", "Claude subscription: no, yes, max20")
|
||||||
|
|||||||
Reference in New Issue
Block a user