From 7937f9d77779bdd4c7dc2f9e20c0f13c75c535c8 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Thu, 12 Mar 2026 18:16:22 +0900 Subject: [PATCH] feat(shared): add opencode-command-dirs utility for multi-level command discovery --- src/shared/opencode-command-dirs.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/shared/opencode-command-dirs.ts diff --git a/src/shared/opencode-command-dirs.ts b/src/shared/opencode-command-dirs.ts new file mode 100644 index 000000000..88b5578ba --- /dev/null +++ b/src/shared/opencode-command-dirs.ts @@ -0,0 +1,24 @@ +import { basename, dirname, join } from "node:path" +import { getOpenCodeConfigDir } from "./opencode-config-dir" +import type { OpenCodeConfigDirOptions } from "./opencode-config-dir-types" + +function getParentOpencodeConfigDir(configDir: string): string | null { + const parentDir = dirname(configDir) + if (basename(parentDir) !== "profiles") { + return null + } + + return dirname(parentDir) +} + +export function getOpenCodeCommandDirs(options: OpenCodeConfigDirOptions): string[] { + const configDir = getOpenCodeConfigDir(options) + const parentConfigDir = getParentOpencodeConfigDir(configDir) + + return Array.from( + new Set([ + join(configDir, "command"), + ...(parentConfigDir ? [join(parentConfigDir, "command")] : []), + ]) + ) +}