forked from anomalyco/opencode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
132 lines (116 loc) · 6.27 KB
/
Makefile
File metadata and controls
132 lines (116 loc) · 6.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
.PHONY: help ocode-install ocode-uninstall ocode-links ocode-user-install ocode-user-uninstall ocode-user-links \
ocode-user-config-openrouter ocode-user-config-local ocode-user-config-cborg ocode-user-config-default-openrouter \
cli-build cli-install cli-uninstall
REPO := $(abspath .)
WRAPPER := $(REPO)/script/ocode.ts
help:
@echo "make ocode-install # Install /usr/local/bin/ocode wrapper"
@echo "make ocode-links # Install ocode-openrouter/local/cborg helpers"
@echo "make ocode-uninstall # Remove system wrappers"
@echo "make ocode-user-install # Install ~/.local/bin/ocode wrapper"
@echo "make ocode-user-links # Install user helpers: ocode-openrouter/local/cborg"
@echo "make ocode-user-config-openrouter # Write ~/.config/opencode/openrouter.json"
@echo "make ocode-user-config-local # Write ~/.config/opencode/local.json"
@echo "make ocode-user-config-cborg # Write ~/.config/opencode/cborg.json"
@echo "make ocode-user-config-default-openrouter # Set openrouter.json as default opencode.json"
@echo "make cli-build # Build opencode CLI binary for this host"
@echo "make cli-install # Install opencode CLI to /usr/local/bin"
@echo "make cli-uninstall # Remove /usr/local/bin/opencode"
# Host OS/ARCH mapping (matches packages/opencode/script/build.ts)
OS := $(shell uname -s | tr '[:upper:]' '[:lower:]')
ARCH_RAW := $(shell uname -m)
ifeq ($(ARCH_RAW),x86_64)
ARCH := x64
else ifeq ($(ARCH_RAW),amd64)
ARCH := x64
else ifeq ($(ARCH_RAW),aarch64)
ARCH := arm64
else
ARCH := $(ARCH_RAW)
endif
ifeq ($(OS),darwin)
OSN := darwin
else ifeq ($(OS),linux)
OSN := linux
else ifeq ($(findstring mingw,$(OS)),mingw)
OSN := windows
else
OSN := $(OS)
endif
BIN_DIR := packages/opencode/dist/opencode-$(OSN)-$(ARCH)/bin
ocode-install:
@echo "Installing /usr/local/bin/ocode -> $(WRAPPER)"
@sudo sh -c 'echo "#!/usr/bin/env bash" > /usr/local/bin/ocode'
@sudo sh -c 'echo "exec bun run \"$(WRAPPER)\" \"\$$@\"" >> /usr/local/bin/ocode'
@sudo chmod +x /usr/local/bin/ocode
ocode-links:
@sudo sh -c 'echo "#!/usr/bin/env bash" > /usr/local/bin/ocode-openrouter'
@sudo sh -c 'echo "exec ocode openrouter \"\$$@\"" >> /usr/local/bin/ocode-openrouter'
@sudo chmod +x /usr/local/bin/ocode-openrouter
@sudo sh -c 'echo "#!/usr/bin/env bash" > /usr/local/bin/ocode-local'
@sudo sh -c 'echo "exec ocode local \"\$$@\"" >> /usr/local/bin/ocode-local'
@sudo chmod +x /usr/local/bin/ocode-local
@sudo sh -c 'echo "#!/usr/bin/env bash" > /usr/local/bin/ocode-cborg'
@sudo sh -c 'echo "exec ocode cborg \"\$$@\"" >> /usr/local/bin/ocode-cborg'
@sudo chmod +x /usr/local/bin/ocode-cborg
ocode-uninstall:
@sudo rm -f /usr/local/bin/ocode /usr/local/bin/ocode-openrouter /usr/local/bin/ocode-local /usr/local/bin/ocode-cborg
cli-build:
@echo "Building opencode CLI (host: $(OSN)-$(ARCH))"
@bun run packages/opencode/script/build.ts
@ls -la $(BIN_DIR) || (echo "Build failed or unsupported host target: $(OSN)-$(ARCH)" && exit 1)
cli-install: cli-build
@echo "Installing /usr/local/bin/opencode from $(BIN_DIR)"
@sudo install -m 0755 $(BIN_DIR)/opencode /usr/local/bin/opencode
cli-uninstall:
@sudo rm -f /usr/local/bin/opencode
ocode-user-install:
@mkdir -p $(HOME)/.local/bin
@echo "#!/usr/bin/env bash" > $(HOME)/.local/bin/ocode
@echo "exec bun run \"$(WRAPPER)\" \"\$$@\"" >> $(HOME)/.local/bin/ocode
@chmod +x $(HOME)/.local/bin/ocode
@echo "Add $$HOME/.local/bin to your PATH if not present."
ocode-user-links:
@mkdir -p $(HOME)/.local/bin
@echo "#!/usr/bin/env bash" > $(HOME)/.local/bin/ocode-openrouter
@echo "exec ocode openrouter \"\$$@\"" >> $(HOME)/.local/bin/ocode-openrouter
@chmod +x $(HOME)/.local/bin/ocode-openrouter
@echo "#!/usr/bin/env bash" > $(HOME)/.local/bin/ocode-local
@echo "exec ocode local \"\$$@\"" >> $(HOME)/.local/bin/ocode-local
@chmod +x $(HOME)/.local/bin/ocode-local
@echo "#!/usr/bin/env bash" > $(HOME)/.local/bin/ocode-cborg
@echo "exec ocode cborg \"\$$@\"" >> $(HOME)/.local/bin/ocode-cborg
@chmod +x $(HOME)/.local/bin/ocode-cborg
ocode-user-config-openrouter:
@mkdir -p $(HOME)/.config/opencode
@printf '%s\n' \
'{"$schema": "https://opencode.ai/config.json",' \
' "model": "openrouter/x-ai/grok-4-fast:free",' \
' "small_model": "openrouter/x-ai/grok-4-fast:free",' \
' "provider": {"openrouter": {"options": {"headers": {"HTTP-Referer": "https://nelli-ocode.local/", "X-Title": "nelli-ocode"}}}}' \
'}' \
> $(HOME)/.config/opencode/openrouter.json
@echo "Wrote $$HOME/.config/opencode/openrouter.json"
ocode-user-config-local:
@mkdir -p $(HOME)/.config/opencode
@printf '%s\n' \
'{"$schema": "https://opencode.ai/config.json",' \
' "model": "local/default",' \
' "small_model": "local/default",' \
' "provider": {"local": {"name": "Local OpenAI-compatible", "npm": "@ai-sdk/openai-compatible", "api": "http://localhost:8080/v1", "env": [], "models": {"default": {"id": "default", "name": "default", "release_date": "2025-01-01", "attachment": false, "reasoning": false, "temperature": true, "tool_call": true, "cost": {"input": 0, "output": 0}, "limit": {"context": 32768, "output": 4096}, "options": {}}}}}' \
'}' \
> $(HOME)/.config/opencode/local.json
@echo "Wrote $$HOME/.config/opencode/local.json"
ocode-user-config-cborg:
@mkdir -p $(HOME)/.config/opencode
@printf '%s\n' \
'{"$schema": "https://opencode.ai/config.json",' \
' "model": "cborg/lbl/cborg-coder:latest",' \
' "small_model": "cborg/lbl/cborg-coder:latest",' \
' "provider": {"cborg": {"name": "CBORG OpenAI-compatible", "npm": "@ai-sdk/openai-compatible", "api": "https://api.cborg.lbl.gov", "env": ["CBORG_API_KEY"], "models": {"lbl/cborg-coder:latest": {"id": "lbl/cborg-coder:latest", "name": "lbl/cborg-coder:latest", "release_date": "2025-01-01", "attachment": false, "reasoning": false, "temperature": true, "tool_call": true, "cost": {"input": 0, "output": 0}, "limit": {"context": 32768, "output": 4096}, "options": {}}}}}' \
'}' \
> $(HOME)/.config/opencode/cborg.json
@echo "Wrote $$HOME/.config/opencode/cborg.json"
ocode-user-config-default-openrouter: ocode-user-config-openrouter
@cp -f $(HOME)/.config/opencode/openrouter.json $(HOME)/.config/opencode/opencode.json
@echo "Set openrouter.json as default: $$HOME/.config/opencode/opencode.json"