refactor: rename remaining oh-my-opencode string literals

This commit is contained in:
YeonGyu-Kim
2026-03-17 13:56:15 +09:00
parent ffa3d43ccb
commit 8efbda9332
49 changed files with 218 additions and 199 deletions
+11 -11
View File
@@ -9,7 +9,7 @@ const TEST_USER_CONFIG_DIR = "/tmp/opencode-config"
mock.module("./constants", () => ({
CACHE_DIR: TEST_OPENCODE_CACHE_DIR,
USER_CONFIG_DIR: TEST_USER_CONFIG_DIR,
PACKAGE_NAME: "oh-my-opencode",
PACKAGE_NAME: "oh-my-openagent",
}))
mock.module("../../shared/logger", () => ({
@@ -21,10 +21,10 @@ function resetTestCache(): void {
rmSync(TEST_CACHE_DIR, { recursive: true, force: true })
}
mkdirSync(join(TEST_OPENCODE_CACHE_DIR, "node_modules", "oh-my-opencode"), { recursive: true })
mkdirSync(join(TEST_OPENCODE_CACHE_DIR, "node_modules", "oh-my-openagent"), { recursive: true })
writeFileSync(
join(TEST_OPENCODE_CACHE_DIR, "package.json"),
JSON.stringify({ dependencies: { "oh-my-opencode": "latest", other: "1.0.0" } }, null, 2)
JSON.stringify({ dependencies: { "oh-my-openagent": "latest", other: "1.0.0" } }, null, 2)
)
writeFileSync(
join(TEST_OPENCODE_CACHE_DIR, "bun.lock"),
@@ -32,11 +32,11 @@ function resetTestCache(): void {
{
workspaces: {
"": {
dependencies: { "oh-my-opencode": "latest", other: "1.0.0" },
dependencies: { "oh-my-openagent": "latest", other: "1.0.0" },
},
},
packages: {
"oh-my-opencode": {},
"oh-my-openagent": {},
other: {},
},
},
@@ -45,8 +45,8 @@ function resetTestCache(): void {
)
)
writeFileSync(
join(TEST_OPENCODE_CACHE_DIR, "node_modules", "oh-my-opencode", "package.json"),
'{"name":"oh-my-opencode"}'
join(TEST_OPENCODE_CACHE_DIR, "node_modules", "oh-my-openagent", "package.json"),
'{"name":"oh-my-openagent"}'
)
}
@@ -67,21 +67,21 @@ describe("invalidatePackage", () => {
const result = invalidatePackage()
expect(result).toBe(true)
expect(existsSync(join(TEST_OPENCODE_CACHE_DIR, "node_modules", "oh-my-opencode"))).toBe(false)
expect(existsSync(join(TEST_OPENCODE_CACHE_DIR, "node_modules", "oh-my-openagent"))).toBe(false)
const packageJson = JSON.parse(readFileSync(join(TEST_OPENCODE_CACHE_DIR, "package.json"), "utf-8")) as {
dependencies?: Record<string, string>
}
expect(packageJson.dependencies?.["oh-my-opencode"]).toBe("latest")
expect(packageJson.dependencies?.["oh-my-openagent"]).toBe("latest")
expect(packageJson.dependencies?.other).toBe("1.0.0")
const bunLock = JSON.parse(readFileSync(join(TEST_OPENCODE_CACHE_DIR, "bun.lock"), "utf-8")) as {
workspaces?: { ""?: { dependencies?: Record<string, string> } }
packages?: Record<string, unknown>
}
expect(bunLock.workspaces?.[""]?.dependencies?.["oh-my-opencode"]).toBe("latest")
expect(bunLock.workspaces?.[""]?.dependencies?.["oh-my-openagent"]).toBe("latest")
expect(bunLock.workspaces?.[""]?.dependencies?.other).toBe("1.0.0")
expect(bunLock.packages?.["oh-my-opencode"]).toBeUndefined()
expect(bunLock.packages?.["oh-my-openagent"]).toBeUndefined()
expect(bunLock.packages?.other).toEqual({})
})
})
@@ -21,18 +21,18 @@ describe("pinned-version-updater", () => {
test("updates pinned version in config", () => {
//#given
const config = JSON.stringify({
plugin: ["oh-my-opencode@3.1.8"],
plugin: ["oh-my-openagent@3.1.8"],
})
fs.writeFileSync(configPath, config)
//#when
const result = updatePinnedVersion(configPath, "oh-my-opencode@3.1.8", "3.4.0")
const result = updatePinnedVersion(configPath, "oh-my-openagent@3.1.8", "3.4.0")
//#then
expect(result).toBe(true)
const updated = fs.readFileSync(configPath, "utf-8")
expect(updated).toContain("oh-my-opencode@3.4.0")
expect(updated).not.toContain("oh-my-opencode@3.1.8")
expect(updated).toContain("oh-my-openagent@3.4.0")
expect(updated).not.toContain("oh-my-openagent@3.1.8")
})
test("returns false when entry not found", () => {
@@ -43,7 +43,7 @@ describe("pinned-version-updater", () => {
fs.writeFileSync(configPath, config)
//#when
const result = updatePinnedVersion(configPath, "oh-my-opencode@3.1.8", "3.4.0")
const result = updatePinnedVersion(configPath, "oh-my-openagent@3.1.8", "3.4.0")
//#then
expect(result).toBe(false)
@@ -55,7 +55,7 @@ describe("pinned-version-updater", () => {
fs.writeFileSync(configPath, config)
//#when
const result = updatePinnedVersion(configPath, "oh-my-opencode@3.1.8", "3.4.0")
const result = updatePinnedVersion(configPath, "oh-my-openagent@3.1.8", "3.4.0")
//#then
expect(result).toBe(false)
@@ -66,46 +66,46 @@ describe("pinned-version-updater", () => {
test("reverts from failed version back to original entry", () => {
//#given
const config = JSON.stringify({
plugin: ["oh-my-opencode@3.4.0"],
plugin: ["oh-my-openagent@3.4.0"],
})
fs.writeFileSync(configPath, config)
//#when
const result = revertPinnedVersion(configPath, "3.4.0", "oh-my-opencode@3.1.8")
const result = revertPinnedVersion(configPath, "3.4.0", "oh-my-openagent@3.1.8")
//#then
expect(result).toBe(true)
const reverted = fs.readFileSync(configPath, "utf-8")
expect(reverted).toContain("oh-my-opencode@3.1.8")
expect(reverted).not.toContain("oh-my-opencode@3.4.0")
expect(reverted).toContain("oh-my-openagent@3.1.8")
expect(reverted).not.toContain("oh-my-openagent@3.4.0")
})
test("reverts to unpinned entry", () => {
//#given
const config = JSON.stringify({
plugin: ["oh-my-opencode@3.4.0"],
plugin: ["oh-my-openagent@3.4.0"],
})
fs.writeFileSync(configPath, config)
//#when
const result = revertPinnedVersion(configPath, "3.4.0", "oh-my-opencode")
const result = revertPinnedVersion(configPath, "3.4.0", "oh-my-openagent")
//#then
expect(result).toBe(true)
const reverted = fs.readFileSync(configPath, "utf-8")
expect(reverted).toContain('"oh-my-opencode"')
expect(reverted).not.toContain("oh-my-opencode@3.4.0")
expect(reverted).toContain('"oh-my-openagent"')
expect(reverted).not.toContain("oh-my-openagent@3.4.0")
})
test("returns false when failed version not found", () => {
//#given
const config = JSON.stringify({
plugin: ["oh-my-opencode@3.1.8"],
plugin: ["oh-my-openagent@3.1.8"],
})
fs.writeFileSync(configPath, config)
//#when
const result = revertPinnedVersion(configPath, "3.4.0", "oh-my-opencode@3.1.8")
const result = revertPinnedVersion(configPath, "3.4.0", "oh-my-openagent@3.1.8")
//#then
expect(result).toBe(false)
@@ -116,18 +116,18 @@ describe("pinned-version-updater", () => {
test("config returns to original state after update + revert", () => {
//#given
const originalConfig = JSON.stringify({
plugin: ["oh-my-opencode@3.1.8"],
plugin: ["oh-my-openagent@3.1.8"],
})
fs.writeFileSync(configPath, originalConfig)
//#when
updatePinnedVersion(configPath, "oh-my-opencode@3.1.8", "3.4.0")
revertPinnedVersion(configPath, "3.4.0", "oh-my-opencode@3.1.8")
updatePinnedVersion(configPath, "oh-my-openagent@3.1.8", "3.4.0")
revertPinnedVersion(configPath, "3.4.0", "oh-my-openagent@3.1.8")
//#then
const finalConfig = fs.readFileSync(configPath, "utf-8")
expect(finalConfig).toContain("oh-my-opencode@3.1.8")
expect(finalConfig).not.toContain("oh-my-opencode@3.4.0")
expect(finalConfig).toContain("oh-my-openagent@3.1.8")
expect(finalConfig).not.toContain("oh-my-openagent@3.4.0")
})
})
})
@@ -21,7 +21,7 @@ describe("findPluginEntry", () => {
test("returns unpinned for bare package name", () => {
// #given plugin is configured without a tag
fs.writeFileSync(configPath, JSON.stringify({ plugin: ["oh-my-opencode"] }))
fs.writeFileSync(configPath, JSON.stringify({ plugin: ["oh-my-openagent"] }))
// #when plugin entry is detected
const pluginInfo = findPluginEntry(temporaryDirectory)
@@ -34,7 +34,7 @@ describe("findPluginEntry", () => {
test("returns unpinned for latest dist-tag", () => {
// #given plugin is configured with latest dist-tag
fs.writeFileSync(configPath, JSON.stringify({ plugin: ["oh-my-opencode@latest"] }))
fs.writeFileSync(configPath, JSON.stringify({ plugin: ["oh-my-openagent@latest"] }))
// #when plugin entry is detected
const pluginInfo = findPluginEntry(temporaryDirectory)
@@ -47,7 +47,7 @@ describe("findPluginEntry", () => {
test("returns unpinned for beta dist-tag", () => {
// #given plugin is configured with beta dist-tag
fs.writeFileSync(configPath, JSON.stringify({ plugin: ["oh-my-opencode@beta"] }))
fs.writeFileSync(configPath, JSON.stringify({ plugin: ["oh-my-openagent@beta"] }))
// #when plugin entry is detected
const pluginInfo = findPluginEntry(temporaryDirectory)
@@ -60,7 +60,7 @@ describe("findPluginEntry", () => {
test("returns pinned for explicit semver", () => {
// #given plugin is configured with explicit version
fs.writeFileSync(configPath, JSON.stringify({ plugin: ["oh-my-opencode@3.5.2"] }))
fs.writeFileSync(configPath, JSON.stringify({ plugin: ["oh-my-openagent@3.5.2"] }))
// #when plugin entry is detected
const pluginInfo = findPluginEntry(temporaryDirectory)
@@ -7,14 +7,14 @@ const TEST_CACHE_DIR = join(import.meta.dir, "__test-sync-cache__")
mock.module("../constants", () => ({
CACHE_DIR: TEST_CACHE_DIR,
PACKAGE_NAME: "oh-my-opencode",
NPM_REGISTRY_URL: "https://registry.npmjs.org/-/package/oh-my-opencode/dist-tags",
PACKAGE_NAME: "oh-my-openagent",
NPM_REGISTRY_URL: "https://registry.npmjs.org/-/package/oh-my-openagent/dist-tags",
NPM_FETCH_TIMEOUT: 5000,
VERSION_FILE: join(TEST_CACHE_DIR, "version"),
USER_CONFIG_DIR: "/tmp/opencode-config",
USER_OPENCODE_CONFIG: "/tmp/opencode-config/opencode.json",
USER_OPENCODE_CONFIG_JSONC: "/tmp/opencode-config/opencode.jsonc",
INSTALLED_PACKAGE_JSON: join(TEST_CACHE_DIR, "node_modules", "oh-my-opencode", "package.json"),
INSTALLED_PACKAGE_JSON: join(TEST_CACHE_DIR, "node_modules", "oh-my-openagent", "package.json"),
getWindowsAppdataDir: () => null,
}))
@@ -30,7 +30,7 @@ function resetTestCache(currentVersion = "3.10.0"): void {
mkdirSync(TEST_CACHE_DIR, { recursive: true })
writeFileSync(
join(TEST_CACHE_DIR, "package.json"),
JSON.stringify({ dependencies: { "oh-my-opencode": currentVersion, other: "1.0.0" } }, null, 2)
JSON.stringify({ dependencies: { "oh-my-openagent": currentVersion, other: "1.0.0" } }, null, 2)
)
}
@@ -43,7 +43,7 @@ function cleanupTestCache(): void {
function readCachePackageJsonVersion(): string | undefined {
const content = readFileSync(join(TEST_CACHE_DIR, "package.json"), "utf-8")
const pkg = JSON.parse(content) as { dependencies?: Record<string, string> }
return pkg.dependencies?.["oh-my-opencode"]
return pkg.dependencies?.["oh-my-openagent"]
}
describe("syncCachePackageJsonToIntent", () => {
@@ -61,7 +61,7 @@ describe("syncCachePackageJsonToIntent", () => {
const { syncCachePackageJsonToIntent } = await import("./sync-package-json")
const pluginInfo: PluginEntryInfo = {
entry: "oh-my-opencode@latest",
entry: "oh-my-openagent@latest",
isPinned: false,
pinnedVersion: "latest",
configPath: "/tmp/opencode.json",
@@ -80,7 +80,7 @@ describe("syncCachePackageJsonToIntent", () => {
const { syncCachePackageJsonToIntent } = await import("./sync-package-json")
const pluginInfo: PluginEntryInfo = {
entry: "oh-my-opencode@next",
entry: "oh-my-openagent@next",
isPinned: false,
pinnedVersion: "next",
configPath: "/tmp/opencode.json",
@@ -99,7 +99,7 @@ describe("syncCachePackageJsonToIntent", () => {
const { syncCachePackageJsonToIntent } = await import("./sync-package-json")
const pluginInfo: PluginEntryInfo = {
entry: "oh-my-opencode",
entry: "oh-my-openagent",
isPinned: false,
pinnedVersion: null,
configPath: "/tmp/opencode.json",
@@ -120,7 +120,7 @@ describe("syncCachePackageJsonToIntent", () => {
const { syncCachePackageJsonToIntent } = await import("./sync-package-json")
const pluginInfo: PluginEntryInfo = {
entry: "oh-my-opencode@latest",
entry: "oh-my-openagent@latest",
isPinned: false,
pinnedVersion: "latest",
configPath: "/tmp/opencode.json",
@@ -140,7 +140,7 @@ describe("syncCachePackageJsonToIntent", () => {
const { syncCachePackageJsonToIntent } = await import("./sync-package-json")
const pluginInfo: PluginEntryInfo = {
entry: "oh-my-opencode@latest",
entry: "oh-my-openagent@latest",
isPinned: false,
pinnedVersion: "latest",
configPath: "/tmp/opencode.json",
@@ -165,7 +165,7 @@ describe("syncCachePackageJsonToIntent", () => {
const { syncCachePackageJsonToIntent } = await import("./sync-package-json")
const pluginInfo: PluginEntryInfo = {
entry: "oh-my-opencode@latest",
entry: "oh-my-openagent@latest",
isPinned: false,
pinnedVersion: "latest",
configPath: "/tmp/opencode.json",
@@ -184,7 +184,7 @@ describe("syncCachePackageJsonToIntent", () => {
const { syncCachePackageJsonToIntent } = await import("./sync-package-json")
const pluginInfo: PluginEntryInfo = {
entry: "oh-my-opencode@3.10.0",
entry: "oh-my-openagent@3.10.0",
isPinned: true,
pinnedVersion: "3.10.0",
configPath: "/tmp/opencode.json",
@@ -203,7 +203,7 @@ describe("syncCachePackageJsonToIntent", () => {
const { syncCachePackageJsonToIntent } = await import("./sync-package-json")
const pluginInfo: PluginEntryInfo = {
entry: "oh-my-opencode@latest",
entry: "oh-my-openagent@latest",
isPinned: false,
pinnedVersion: "latest",
configPath: "/tmp/opencode.json",
@@ -229,7 +229,7 @@ describe("syncCachePackageJsonToIntent", () => {
const { syncCachePackageJsonToIntent } = await import("./sync-package-json")
const pluginInfo: PluginEntryInfo = {
entry: "oh-my-opencode@latest",
entry: "oh-my-openagent@latest",
isPinned: false,
pinnedVersion: "latest",
configPath: "/tmp/opencode.json",
@@ -248,7 +248,7 @@ describe("syncCachePackageJsonToIntent", () => {
mkdirSync(TEST_CACHE_DIR, { recursive: true })
writeFileSync(
join(TEST_CACHE_DIR, "package.json"),
JSON.stringify({ dependencies: { "oh-my-opencode": "3.10.0" } }, null, 2)
JSON.stringify({ dependencies: { "oh-my-openagent": "3.10.0" } }, null, 2)
)
const fs = await import("node:fs")
@@ -267,7 +267,7 @@ describe("syncCachePackageJsonToIntent", () => {
const { syncCachePackageJsonToIntent } = await import("./sync-package-json")
const pluginInfo: PluginEntryInfo = {
entry: "oh-my-opencode@latest",
entry: "oh-my-openagent@latest",
isPinned: false,
pinnedVersion: "latest",
configPath: "/tmp/opencode.json",
@@ -293,7 +293,7 @@ describe("syncCachePackageJsonToIntent", () => {
mkdirSync(TEST_CACHE_DIR, { recursive: true })
writeFileSync(
join(TEST_CACHE_DIR, "package.json"),
JSON.stringify({ dependencies: { "oh-my-opencode": "3.10.0" } }, null, 2)
JSON.stringify({ dependencies: { "oh-my-openagent": "3.10.0" } }, null, 2)
)
const fs = await import("node:fs")
@@ -317,7 +317,7 @@ describe("syncCachePackageJsonToIntent", () => {
const { syncCachePackageJsonToIntent } = await import("./sync-package-json")
const pluginInfo: PluginEntryInfo = {
entry: "oh-my-opencode@latest",
entry: "oh-my-openagent@latest",
isPinned: false,
pinnedVersion: "latest",
configPath: "/tmp/opencode.json",
+2 -1
View File
@@ -2,8 +2,9 @@ import * as path from "node:path"
import * as os from "node:os"
import { getOpenCodeCacheDir } from "../../shared/data-path"
import { getOpenCodeConfigDir } from "../../shared/opencode-config-dir"
import { PLUGIN_NAME } from "../../shared/plugin-identity"
export const PACKAGE_NAME = "oh-my-opencode"
export const PACKAGE_NAME = PLUGIN_NAME
export const NPM_REGISTRY_URL = `https://registry.npmjs.org/-/package/${PACKAGE_NAME}/dist-tags`
export const NPM_FETCH_TIMEOUT = 5000
@@ -12,7 +12,7 @@ type ToastMessageGetter = (isUpdate: boolean, version?: string) => string
function createPluginEntry(overrides?: Partial<PluginEntry>): PluginEntry {
return {
entry: "oh-my-opencode@3.4.0",
entry: "oh-my-openagent@3.4.0",
isPinned: false,
pinnedVersion: null,
configPath: "/test/opencode.json",
@@ -95,7 +95,7 @@ describe("runBackgroundUpdateCheck", () => {
describe("#given no version available", () => {
it("returns early when neither cached nor pinned version exists", async () => {
//#given
mockFindPluginEntry.mockReturnValue(createPluginEntry({ entry: "oh-my-opencode" }))
mockFindPluginEntry.mockReturnValue(createPluginEntry({ entry: "oh-my-openagent" }))
mockGetCachedVersion.mockReturnValue(null)
//#when
await runBackgroundUpdateCheck(mockCtx, true, getToastMessage)
@@ -12,7 +12,7 @@ export async function showSpinnerToast(ctx: PluginInput, version: string, messag
await ctx.client.tui
.showToast({
body: {
title: `${spinner} OhMyOpenCode ${version}`,
title: `${spinner} OhMyOpenAgent ${version}`,
message,
variant: "info" as const,
duration: frameInterval + 50,
@@ -9,7 +9,7 @@ export async function showUpdateAvailableToast(
await ctx.client.tui
.showToast({
body: {
title: `OhMyOpenCode ${latestVersion}`,
title: `OhMyOpenAgent ${latestVersion}`,
message: getToastMessage(true, latestVersion),
variant: "info" as const,
duration: 8000,
@@ -23,7 +23,7 @@ export async function showAutoUpdatedToast(ctx: PluginInput, oldVersion: string,
await ctx.client.tui
.showToast({
body: {
title: "OhMyOpenCode Updated!",
title: "OhMyOpenAgent Updated!",
message: `v${oldVersion} → v${newVersion}\nRestart OpenCode to apply.`,
variant: "success" as const,
duration: 8000,
+7 -7
View File
@@ -40,7 +40,7 @@ const PLATFORM_MAP: Record<string, PlatformInfo> = {
}
/**
* Get the cache directory for oh-my-opencode binaries.
* Get the cache directory for oh-my-openagent binaries.
* On Windows: Uses %LOCALAPPDATA% or %APPDATA% (Windows conventions)
* On Unix: Follows XDG Base Directory Specification
*/
@@ -48,12 +48,12 @@ export function getCacheDir(): string {
if (process.platform === "win32") {
const localAppData = process.env.LOCALAPPDATA || process.env.APPDATA
const base = localAppData || join(homedir(), "AppData", "Local")
return join(base, "oh-my-opencode", "bin")
return join(base, "oh-my-openagent", "bin")
}
const xdgCache = process.env.XDG_CACHE_HOME
const base = xdgCache || join(homedir(), ".cache")
return join(base, "oh-my-opencode", "bin")
return join(base, "oh-my-openagent", "bin")
}
/**
@@ -113,7 +113,7 @@ export async function downloadCommentChecker(): Promise<string | null> {
const downloadUrl = `https://github.com/${REPO}/releases/download/v${version}/${assetName}`
debugLog(`Downloading from: ${downloadUrl}`)
log(`[oh-my-opencode] Downloading comment-checker binary...`)
log(`[oh-my-openagent] Downloading comment-checker binary...`)
try {
// Ensure cache directory exists
@@ -139,14 +139,14 @@ export async function downloadCommentChecker(): Promise<string | null> {
ensureExecutable(binaryPath)
debugLog(`Successfully downloaded binary to: ${binaryPath}`)
log(`[oh-my-opencode] comment-checker binary ready.`)
log(`[oh-my-openagent] comment-checker binary ready.`)
return binaryPath
} catch (err) {
debugLog(`Failed to download: ${err}`)
log(`[oh-my-opencode] Failed to download comment-checker: ${err instanceof Error ? err.message : err}`)
log(`[oh-my-opencode] Comment checking disabled.`)
log(`[oh-my-openagent] Failed to download comment-checker: ${err instanceof Error ? err.message : err}`)
log(`[oh-my-openagent] Comment checking disabled.`)
return null
}
}