Files
2026-08-17 00:58:13 +08:00

50 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
GORI_AGENT_ROOT="${GORI_AGENT_ROOT:-$HOME/.gori-agent}"
BIN_DIR="$GORI_AGENT_ROOT/bin"
INSTANCES_DIR="$GORI_AGENT_ROOT/instances"
PROFILE_FILE="${GORI_AGENT_PROFILE:-$HOME/.bashrc}"
umask 077
mkdir -p "$BIN_DIR" "$INSTANCES_DIR"
chmod 700 "$GORI_AGENT_ROOT" "$BIN_DIR" "$INSTANCES_DIR"
cat >"$BIN_DIR/gori-agent" <<EOF
#!/usr/bin/env bash
set -euo pipefail
export GORI_AGENT_ROOT="\${GORI_AGENT_ROOT:-$GORI_AGENT_ROOT}"
exec "$PROJECT_ROOT/gori-agent.sh" "\$@"
EOF
chmod 700 "$BIN_DIR/gori-agent"
PATH_BLOCK_START="# >>> gori-agent >>>"
PATH_BLOCK_END="# <<< gori-agent <<<"
if [[ -w "$PROFILE_FILE" ]]; then
PROFILE_TEMP="$(mktemp "${PROFILE_FILE}.gori-agent.XXXXXX")"
if ! awk -v start="$PATH_BLOCK_START" -v end="$PATH_BLOCK_END" '
$0 == start { if (skipping) exit 2; skipping = 1; next }
$0 == end { if (!skipping) exit 2; skipping = 0; next }
!skipping { print }
END { if (skipping) exit 2 }
' "$PROFILE_FILE" >"$PROFILE_TEMP"; then
rm -f "$PROFILE_TEMP"
echo "Malformed gori-agent block in $PROFILE_FILE" >&2
exit 1
fi
{
echo "$PATH_BLOCK_START"
echo "export GORI_AGENT_ROOT=\"$GORI_AGENT_ROOT\""
echo "export PATH=\"$BIN_DIR:\$PATH\""
echo "$PATH_BLOCK_END"
} >>"$PROFILE_TEMP"
chmod --reference="$PROFILE_FILE" "$PROFILE_TEMP"
mv "$PROFILE_TEMP" "$PROFILE_FILE"
fi
echo "Installed gori-agent to $BIN_DIR/gori-agent"
echo "Project root: $PROJECT_ROOT"
echo "Instances root: $INSTANCES_DIR"
echo "Run 'source $PROFILE_FILE' or open a new terminal, then use: gori-agent list"