From edf409bdaa1ce3e4e924ec4188e49b813862967f Mon Sep 17 00:00:00 2001 From: Hana Date: Tue, 9 Jun 2026 16:00:57 +0900 Subject: [PATCH] Install binary with atomic replace --- scripts/install.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/scripts/install.sh b/scripts/install.sh index a83bf04..181aaef 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -6,11 +6,15 @@ BIN_NAME="${OPENSTOCK_BIN_NAME:-openstock}" ARCHIVE_URL="${OPENSTOCK_ARCHIVE_URL:-https://git.hananakick.cc/Autotrade/openstock/archive/main.tar.gz}" SOURCE_DIR="" TMP_DIR="" +TMP_TARGET="" cleanup() { if [ -n "$TMP_DIR" ] && [ -d "$TMP_DIR" ]; then rm -rf "$TMP_DIR" fi + if [ -n "$TMP_TARGET" ] && [ -e "$TMP_TARGET" ]; then + rm -f "$TMP_TARGET" + fi } trap cleanup EXIT @@ -53,8 +57,11 @@ mkdir -p "$INSTALL_DIR" cd "$SOURCE_DIR" cargo build --release -cp "$SOURCE_DIR/target/release/openstock" "$INSTALL_DIR/$BIN_NAME" -chmod 755 "$INSTALL_DIR/$BIN_NAME" +TMP_TARGET="$INSTALL_DIR/.$BIN_NAME.tmp.$$" +cp "$SOURCE_DIR/target/release/openstock" "$TMP_TARGET" +chmod 755 "$TMP_TARGET" +mv -f "$TMP_TARGET" "$INSTALL_DIR/$BIN_NAME" +TMP_TARGET="" echo "installed: $INSTALL_DIR/$BIN_NAME" echo "config: ${OPENSTOCK_CONFIG_DIR:-$HOME/.config/openstock}"