diff --git a/install.sh b/install.sh index cfee8d0..9b4b488 100755 --- a/install.sh +++ b/install.sh @@ -21,14 +21,26 @@ chmod 700 "$BIN_DIR/gori-agent" PATH_BLOCK_START="# >>> gori-agent >>>" PATH_BLOCK_END="# <<< gori-agent <<<" -if [[ -w "$PROFILE_FILE" ]] && ! grep -q "$PATH_BLOCK_START" "$PROFILE_FILE"; then +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 "" echo "$PATH_BLOCK_START" echo "export GORI_AGENT_ROOT=\"$GORI_AGENT_ROOT\"" echo "export PATH=\"$BIN_DIR:\$PATH\"" echo "$PATH_BLOCK_END" - } >>"$PROFILE_FILE" + } >>"$PROFILE_TEMP" + chmod --reference="$PROFILE_FILE" "$PROFILE_TEMP" + mv "$PROFILE_TEMP" "$PROFILE_FILE" fi echo "Installed gori-agent to $BIN_DIR/gori-agent"