fix(acp_server_opencode): detect opencode CLI at deploy time (portable across Debian/Ubuntu/macOS) (#22)
Stop assuming a fixed opencode path. Probe the real binary with 'command -v' using the role PATH, then feed the resolved path to both the systemd unit and the launchd plist (plist now also passes -opencode-bin). Falls back to the OS-aware default when opencode is not yet installed. Also remove the dead acp-bridge.service.j2 template: it was not deployed by any task and referenced two undefined vars (acp_opencode_bridge_disabled_binary_path, acp_opencode_bridge_opencode_binary_path) — a hardcoding landmine. Co-authored-by: Haitao Pan <manbuzhe2009@qq.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
4364786465
commit
477b52c516
@ -79,6 +79,29 @@
|
|||||||
- "{{ acp_opencode_home }}/.local"
|
- "{{ acp_opencode_home }}/.local"
|
||||||
- "{{ acp_opencode_workdir }}"
|
- "{{ acp_opencode_workdir }}"
|
||||||
|
|
||||||
|
# Resolve the OpenCode CLI at deploy time instead of assuming a fixed path.
|
||||||
|
# npm installs it wherever the active node prefix points (NodeSource -> /usr/bin
|
||||||
|
# on Debian/Ubuntu, ~/.local/bin or Homebrew on macOS), so probe the real path
|
||||||
|
# with the role PATH and fall back to the OS-aware default when not yet present.
|
||||||
|
- name: Resolve OpenCode CLI binary path
|
||||||
|
ansible.builtin.shell: |
|
||||||
|
set -eu
|
||||||
|
export PATH="{{ acp_opencode_path }}:${PATH}"
|
||||||
|
command -v opencode || true
|
||||||
|
args:
|
||||||
|
executable: /bin/bash
|
||||||
|
register: acp_opencode_resolved_bin
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Use resolved OpenCode CLI binary path when present
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
acp_opencode_binary_path: "{{ acp_opencode_resolved_bin.stdout_lines[0] | trim }}"
|
||||||
|
when: acp_opencode_resolved_bin.stdout | default('') | trim | length > 0
|
||||||
|
|
||||||
|
- name: Report effective OpenCode CLI binary path
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: "OpenCode CLI binary resolved to: {{ acp_opencode_binary_path }}"
|
||||||
|
|
||||||
- name: Deploy Caddy main file
|
- name: Deploy Caddy main file
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: Caddyfile.j2
|
src: Caddyfile.j2
|
||||||
|
|||||||
@ -1,27 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=XWorkmate OpenCode ACP bridge server
|
|
||||||
After=network-online.target {{ acp_opencode_service_name }}.service
|
|
||||||
Wants=network-online.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
User={{ acp_opencode_service_user }}
|
|
||||||
Group={{ acp_opencode_service_group }}
|
|
||||||
WorkingDirectory={{ acp_opencode_workdir }}
|
|
||||||
Environment=HOME={{ acp_opencode_home }}
|
|
||||||
Environment=TERM=xterm-256color
|
|
||||||
Environment=ACP_LISTEN_ADDR={{ acp_opencode_bridge_listen_host }}:{{ acp_opencode_bridge_listen_port }}
|
|
||||||
Environment=ACP_ALLOWED_ORIGINS={{ acp_opencode_bridge_allowed_origins | join(',') }}
|
|
||||||
{% if acp_opencode_auth_token | trim | length > 0 %}
|
|
||||||
Environment=ACP_AUTH_TOKEN={{ acp_opencode_auth_token }}
|
|
||||||
{% endif %}
|
|
||||||
Environment=ACP_CODEX_BIN={{ acp_opencode_bridge_disabled_binary_path }}
|
|
||||||
Environment=ACP_CLAUDE_BIN={{ acp_opencode_bridge_disabled_binary_path }}
|
|
||||||
Environment=ACP_GEMINI_BIN={{ acp_opencode_bridge_disabled_binary_path }}
|
|
||||||
Environment=ACP_OPENCODE_BIN={{ acp_opencode_bridge_opencode_binary_path }}
|
|
||||||
ExecStart={{ acp_opencode_bridge_binary_path }} serve --listen {{ acp_opencode_bridge_listen_host }}:{{ acp_opencode_bridge_listen_port }}
|
|
||||||
Restart=always
|
|
||||||
RestartSec=2
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
exec "{{ acp_opencode_bridge_binary_path }}" adapter opencode \
|
exec "{{ acp_opencode_bridge_binary_path }}" adapter opencode \
|
||||||
-listen {{ acp_opencode_listen_host }}:{{ acp_opencode_listen_port }} \
|
-listen {{ acp_opencode_listen_host }}:{{ acp_opencode_listen_port }} \
|
||||||
|
-opencode-bin "{{ acp_opencode_binary_path }}" \
|
||||||
-cwd "{{ acp_opencode_workdir }}"
|
-cwd "{{ acp_opencode_workdir }}"
|
||||||
</string>
|
</string>
|
||||||
</array>
|
</array>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user