Files
nono-opencode-tinfoil/scripts/install.sh
T
kawaiipunk a5f97a3a1b Add TUI for managing sandbox profile, relicense to GPLv3
- Add Go/Bubble Tea TUI app under tui/ with dashboard (status checks,
  launch, validate) and profile editor (commands, filesystem, network,
  environment sub-tabs)
- Add Makefile targets: tui, tui-build, tui-install
- Add CI step to build TUI
- Relicense MIT -> GPL-3.0
- Rewrite wrapper to resolve real opencode binary from PATH (supports
  brew, npm, volta)
- Add PATH ordering detection to install script
- Expand README with how-it-works diagram, TUI docs, keybinding table
2026-08-12 19:37:54 +01:00

77 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
PROFILE_NAME="opencode-tinfoil"
PROFILE_SRC="profiles/${PROFILE_NAME}.jsonc"
PROFILE_DIR="${HOME}/.config/nono/profiles"
BIN_DIR="${HOME}/.local/bin"
WRAPPER_SRC="bin/opencode"
if ! command -v nono &>/dev/null; then
echo "Error: nono is not installed. Install it first:"
echo " brew install nono"
exit 1
fi
if [[ ! -f "${PROFILE_SRC}" ]]; then
echo "Error: profile not found at ${PROFILE_SRC}"
exit 1
fi
mkdir -p "${PROFILE_DIR}"
mkdir -p "${BIN_DIR}"
cp "${PROFILE_SRC}" "${PROFILE_DIR}/${PROFILE_NAME}.json"
chmod 644 "${PROFILE_DIR}/${PROFILE_NAME}.json"
cp "${WRAPPER_SRC}" "${BIN_DIR}/opencode"
chmod 755 "${BIN_DIR}/opencode"
nono profile validate "${PROFILE_NAME}"
echo "Installed:"
echo " Profile: ${PROFILE_DIR}/${PROFILE_NAME}.json"
echo " Wrapper: ${BIN_DIR}/opencode"
find_first_opencode() {
local d c
for d in $(printf '%s' "$PATH" | tr ':' ' '); do
for c in "$d/opencode" "$d/opencode.exe"; do
if [ -x "$c" ]; then
printf '%s\n' "$c"
return 0
fi
done
done
return 1
}
WRAPPER_OK=0
if [[ "$(find_first_opencode)" == "${BIN_DIR}/opencode" ]]; then
WRAPPER_OK=1
fi
if [[ "${WRAPPER_OK}" -ne 1 ]]; then
echo ""
echo "Warning: 'opencode' on your PATH resolves to a different binary."
echo "The sandboxed wrapper at ${BIN_DIR}/opencode will be bypassed."
echo "Fix this with one of:"
echo " export PATH=\"${BIN_DIR}:\${PATH}\""
echo " alias opencode='${BIN_DIR}/opencode'"
fi
if [[ ":${PATH}:" != *":${BIN_DIR}:"* ]]; then
echo ""
echo "Warning: ${BIN_DIR} is not in your PATH."
echo "Add this to your shell profile:"
echo " export PATH=\"${BIN_DIR}:\${PATH}\""
fi
echo ""
echo "Smoke test (this launches opencode inside the sandbox):"
if "${BIN_DIR}/opencode" --version; then
echo "OK: sandboxed wrapper launches successfully."
else
echo "Error: sandboxed wrapper failed to launch." >&2
exit 1
fi