Harden remove.sh: fix fallback data-loss risk, prevent remove.sh clobbering, and ensure macOS compatibility
This commit is contained in:
@@ -106,6 +106,11 @@ if ! check_assets_present "."; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create metadata directory and initialize manifest before copying
|
||||
mkdir -p .mam
|
||||
MANIFEST_FILE=".mam/install_manifest.txt"
|
||||
touch "$MANIFEST_FILE"
|
||||
|
||||
# Copy ONLY runtime assets into the target, never overwriting an existing
|
||||
# target file. We merge per-file (POSIX find + an explicit "[ ! -e ]" guard)
|
||||
# instead of `cp -n`: `cp -n` is non-portable and now prints a deprecation
|
||||
@@ -117,6 +122,7 @@ if ! check_assets_present "."; then
|
||||
if [ ! -e "$dest" ]; then
|
||||
mkdir -p "$(dirname "$dest")"
|
||||
cp "$STAGE_DIR/.agents/$rel" "$dest" || { echo "❌ Error: Failed to copy $rel" >&2; exit 1; }
|
||||
echo "$dest" >> "$MANIFEST_FILE"
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -125,16 +131,19 @@ if ! check_assets_present "."; then
|
||||
for doc in AGENT.md AGENT.ko.md MESSAGING.md BOOTSTRAP.md BOOTSTRAP.ko.md INSTRUCTION.md; do
|
||||
if [ -f "$STAGE_DIR/$doc" ] && [ ! -e "$doc" ]; then
|
||||
cp "$STAGE_DIR/$doc" . || { echo "❌ Error: Failed to copy $doc" >&2; exit 1; }
|
||||
echo "$doc" >> "$MANIFEST_FILE"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -f "$STAGE_DIR/deploy/remove.sh" ] && [ ! -e "remove.sh" ]; then
|
||||
cp "$STAGE_DIR/deploy/remove.sh" remove.sh || { echo "❌ Error: Failed to copy remove.sh" >&2; exit 1; }
|
||||
chmod +x remove.sh
|
||||
echo "remove.sh" >> "$MANIFEST_FILE"
|
||||
fi
|
||||
|
||||
if [ -f "$STAGE_DIR/.env.example" ] && [ ! -e ".env.example" ]; then
|
||||
cp "$STAGE_DIR/.env.example" . || { echo "❌ Error: Failed to copy .env.example" >&2; exit 1; }
|
||||
echo ".env.example" >> "$MANIFEST_FILE"
|
||||
fi
|
||||
|
||||
rm -rf "$STAGE_DIR"
|
||||
@@ -225,6 +234,11 @@ TMUX_SERVER_NAME=default
|
||||
EOF
|
||||
chmod 0600 "$ENV_FILE"
|
||||
echo "✅ Config file .env initialized with chmod 0600."
|
||||
|
||||
# Record the newly created .env in the manifest
|
||||
mkdir -p .mam
|
||||
touch .mam/install_manifest.txt
|
||||
echo "$ENV_FILE" >> .mam/install_manifest.txt
|
||||
else
|
||||
echo "ℹ️ $ENV_FILE already exists. Skipping config override."
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user