🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
53 lines
2.6 KiB
Markdown
53 lines
2.6 KiB
Markdown
# src/cli/config-manager/ — CLI Installation Utilities
|
|
|
|
**Generated:** 2026-02-19
|
|
|
|
## OVERVIEW
|
|
|
|
20 files. Stateless utility functions for the `install` command. Handles OpenCode config manipulation, provider configuration, JSONC operations, binary detection, and npm registry queries. No class — flat utility collection.
|
|
|
|
## FILE CATALOG
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `add-plugin-to-opencode-config.ts` | Register `oh-my-opencode` in `.opencode/opencode.json` plugin array |
|
|
| `add-provider-config.ts` | Add provider API key to OpenCode config (user-level) |
|
|
| `antigravity-provider-configuration.ts` | Handle Antigravity provider setup (special case) |
|
|
| `auth-plugins.ts` | Detect auth plugin requirements per provider (oauth vs key) |
|
|
| `bun-install.ts` | Run `bun install` / `npm install` for plugin setup |
|
|
| `config-context.ts` | `ConfigContext` — shared config state across install steps |
|
|
| `deep-merge-record.ts` | Deep merge utility for JSONC config objects |
|
|
| `detect-current-config.ts` | Read existing OpenCode config, detect installed plugins |
|
|
| `ensure-config-directory-exists.ts` | Create `.opencode/` dir if missing |
|
|
| `format-error-with-suggestion.ts` | Format errors with actionable suggestions |
|
|
| `generate-omo-config.ts` | Generate `oh-my-opencode.jsonc` from install selections |
|
|
| `jsonc-provider-editor.ts` | Read/write JSONC files with comment preservation |
|
|
| `npm-dist-tags.ts` | Fetch latest version from npm registry (dist-tags) |
|
|
| `opencode-binary.ts` | Detect OpenCode binary location, verify it's installed |
|
|
| `opencode-config-format.ts` | OpenCode config format constants and type guards |
|
|
| `parse-opencode-config-file.ts` | Parse opencode.json/opencode.jsonc with fallback |
|
|
| `plugin-name-with-version.ts` | Resolve `oh-my-opencode@X.Y.Z` for installation |
|
|
| `write-omo-config.ts` | Write generated config to `.opencode/oh-my-opencode.jsonc` |
|
|
|
|
## USAGE PATTERN
|
|
|
|
Functions are called sequentially by `src/cli/install.ts` / `src/cli/tui-installer.ts`:
|
|
|
|
```
|
|
1. ensure-config-directory-exists
|
|
2. detect-current-config (check what's already set up)
|
|
3. opencode-binary (verify opencode installed)
|
|
4. npm-dist-tags (get latest version)
|
|
5. generate-omo-config (build config from user selections)
|
|
6. write-omo-config
|
|
7. add-plugin-to-opencode-config
|
|
8. add-provider-config (for each provider selected)
|
|
9. bun-install
|
|
```
|
|
|
|
## NOTES
|
|
|
|
- All functions are pure / stateless (except disk I/O) — no shared module state
|
|
- `jsonc-provider-editor.ts` uses comment-preserving JSONC library — NEVER use `JSON.parse` on JSONC files
|
|
- `opencode-binary.ts` searches PATH + common install locations (`.local/bin`, `~/.bun/bin`, etc.)
|