68 lines
1.4 KiB
Bash
Executable File
68 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env zsh
|
|
set -euo pipefail
|
|
|
|
CODEX_BIN="${CODEX_BIN:-/opt/homebrew/bin/codex}"
|
|
CODEX_OLLAMA_HOME="${CODEX_OLLAMA_HOME:-${HOME}/.codex-ollama}"
|
|
CODEX_OLLAMA_MODEL="${CODEX_OLLAMA_MODEL:-gemma4:26b-a4b-it-q4_K_M}"
|
|
|
|
export CODEX_HOME="${CODEX_OLLAMA_HOME}"
|
|
export PATH="${HOME}/bin:${PATH}"
|
|
|
|
if [[ ! -x "${CODEX_BIN}" ]]; then
|
|
print -u2 -- "Codex binary not found or not executable: ${CODEX_BIN}"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v ollama >/dev/null 2>&1; then
|
|
print -u2 -- "ollama not available on PATH"
|
|
exit 1
|
|
fi
|
|
|
|
args_include_cd() {
|
|
local arg
|
|
|
|
for arg in "$@"; do
|
|
case "${arg}" in
|
|
-C|--cd|-C=*|--cd=*)
|
|
return 0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
return 1
|
|
}
|
|
|
|
args_include_model() {
|
|
local arg
|
|
|
|
for arg in "$@"; do
|
|
case "${arg}" in
|
|
-m|--model|-m=*|--model=*)
|
|
return 0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
return 1
|
|
}
|
|
|
|
codex_args=(--oss --local-provider ollama)
|
|
|
|
if ! args_include_model "$@"; then
|
|
if ! ollama list | awk 'NR > 1 { print $1 }' | grep -Fxq -- "${CODEX_OLLAMA_MODEL}"; then
|
|
print -u2 -- "Ollama model not installed: ${CODEX_OLLAMA_MODEL}"
|
|
print -u2 -- "Install it with: ollama pull ${CODEX_OLLAMA_MODEL}"
|
|
exit 1
|
|
fi
|
|
|
|
codex_args+=(-m "${CODEX_OLLAMA_MODEL}")
|
|
fi
|
|
|
|
if [[ "${PWD}" == "${HOME}" ]] && ! args_include_cd "$@"; then
|
|
original_pwd="${PWD}"
|
|
builtin cd "${TMPDIR:-/private/tmp}"
|
|
codex_args+=(--cd "${original_pwd}")
|
|
fi
|
|
|
|
exec "${CODEX_BIN}" "${codex_args[@]}" "$@"
|