refactor(telemetry): drop install events from cli-installer

This commit is contained in:
YeonGyu-Kim
2026-05-02 00:10:54 +09:00
parent 468e42f57e
commit be2eee6306
2 changed files with 0 additions and 130 deletions
-74
View File
@@ -1,74 +0,0 @@
import { afterEach, describe, expect, it, mock, spyOn } from "bun:test"
import * as configManager from "./config-manager"
import type { InstallArgs } from "./types"
describe("runCliInstaller telemetry isolation", () => {
afterEach(() => {
mock.restore()
})
it("does not crash CLI install when telemetry shutdown throws", async () => {
// given
const restoreSpies = [
spyOn(configManager, "detectCurrentConfig").mockReturnValue({
isInstalled: false,
installedVersion: null,
hasClaude: false,
isMax20: false,
hasOpenAI: false,
hasGemini: false,
hasCopilot: false,
hasOpencodeZen: false,
hasZaiCodingPlan: false,
hasKimiForCoding: false,
hasOpencodeGo: false,
hasVercelAiGateway: false,
}),
spyOn(configManager, "isOpenCodeInstalled").mockResolvedValue(true),
spyOn(configManager, "getOpenCodeVersion").mockResolvedValue("1.4.0"),
spyOn(configManager, "addPluginToOpenCodeConfig").mockResolvedValue({
success: true,
configPath: "/tmp/opencode.jsonc",
}),
spyOn(configManager, "writeOmoConfig").mockReturnValue({
success: true,
configPath: "/tmp/oh-my-opencode.jsonc",
}),
]
mock.module("../shared/posthog", () => ({
createCliPostHog: mock(() => ({
trackActive: mock(() => {}),
capture: mock(() => {}),
captureException: mock(() => {}),
shutdown: mock(async () => {
throw new Error("shutdown failed")
}),
})),
getPostHogDistinctId: mock(() => "install-distinct-id"),
}))
const { runCliInstaller } = await import(`./cli-installer?telemetry=${Date.now()}-${Math.random()}`)
const args: InstallArgs = {
tui: false,
claude: "no",
openai: "yes",
gemini: "no",
copilot: "yes",
opencodeZen: "no",
zaiCodingPlan: "no",
kimiForCoding: "no",
opencodeGo: "no",
}
// when
const result = await runCliInstaller(args, "3.4.0")
// then
expect(result).toBe(0)
for (const spy of restoreSpies) {
spy.mockRestore()
}
})
})
-56
View File
@@ -23,11 +23,8 @@ import {
validateNonTuiArgs,
} from "./install-validators"
import { getUnsupportedOpenCodeVersionMessage } from "./minimum-opencode-version"
import { createCliPostHog, getPostHogDistinctId } from "../shared/posthog"
export async function runCliInstaller(args: InstallArgs, version: string): Promise<number> {
const posthog = createCliPostHog()
const distinctId = getPostHogDistinctId()
const validation = validateNonTuiArgs(args)
if (!validation.valid) {
printHeader(false)
@@ -65,16 +62,6 @@ export async function runCliInstaller(args: InstallArgs, version: string): Promi
const unsupportedVersionMessage = getUnsupportedOpenCodeVersionMessage(openCodeVersion)
if (unsupportedVersionMessage) {
printWarning(unsupportedVersionMessage)
try {
posthog.capture({ distinctId, event: "install_failed", properties: { command: "install", reason: "unsupported_opencode_version", is_update: isUpdate } })
} catch {
// telemetry failure is non-fatal, silently ignore
}
try {
await posthog.shutdown()
} catch {
// telemetry failure is non-fatal, silently ignore
}
return 1
}
}
@@ -90,16 +77,6 @@ export async function runCliInstaller(args: InstallArgs, version: string): Promi
const pluginResult = await addPluginToOpenCodeConfig(version)
if (!pluginResult.success) {
printError(`Failed: ${pluginResult.error}`)
try {
posthog.capture({ distinctId, event: "install_failed", properties: { command: "install", reason: "plugin_config_write_failed", is_update: isUpdate } })
} catch {
// telemetry failure is non-fatal, silently ignore
}
try {
await posthog.shutdown()
} catch {
// telemetry failure is non-fatal, silently ignore
}
return 1
}
printSuccess(
@@ -110,16 +87,6 @@ export async function runCliInstaller(args: InstallArgs, version: string): Promi
const omoResult = writeOmoConfig(config)
if (!omoResult.success) {
printError(`Failed: ${omoResult.error}`)
try {
posthog.capture({ distinctId, event: "install_failed", properties: { command: "install", reason: "omo_config_write_failed", is_update: isUpdate } })
} catch {
// telemetry failure is non-fatal, silently ignore
}
try {
await posthog.shutdown()
} catch {
// telemetry failure is non-fatal, silently ignore
}
return 1
}
printSuccess(`Config written ${SYMBOLS.arrow} ${color.dim(omoResult.configPath)}`)
@@ -169,29 +136,6 @@ export async function runCliInstaller(args: InstallArgs, version: string): Promi
console.log(color.dim("oMoMoMoMo... Enjoy!"))
console.log()
try {
posthog.capture({
distinctId,
event: "install_completed",
properties: {
command: "install",
is_update: isUpdate,
has_claude: config.hasClaude,
has_openai: config.hasOpenAI,
has_gemini: config.hasGemini,
has_copilot: config.hasCopilot,
has_opencode_zen: config.hasOpencodeZen,
},
})
} catch {
// telemetry failure is non-fatal, silently ignore
}
try {
await posthog.shutdown()
} catch {
// telemetry failure is non-fatal, silently ignore
}
if ((config.hasClaude || config.hasGemini || config.hasCopilot) && !args.skipAuth) {
printBox(
`Run ${color.cyan("opencode auth login")} and select your provider:\n` +