#!/bin/bash
# 检查到未定义的变量则停止执行并报错
set -u

# 检查参数数量
if [ "$#" -ne 1 ]; then
  echo "Error: Incorrect number of arguments"
  echo "Usage: $0 ZIP_FILE_PATH"
  exit 1
fi

ZIP_FILE_PATH=$1
SIMULATION_PATH="/home/cicv/work/pji_desktop/simulation"
UNZIP_DATA_PATH="/home/cicv/work/pji_desktop/tmp_download/simulation_zip/data"

# 检查zip文件是否存在
if [ -e "$ZIP_FILE_PATH" ]; then
  echo "The file exists: $ZIP_FILE_PATH"
else
  echo "The file does not exist: $ZIP_FILE_PATH"
  exit 1
fi

# 敏感目录列表
SENSITIVE_DIRS=(
  "/"
  "/bin"
  "/boot"
  "/dev"
  "/etc"
  "/home"
  "/lib"
  "/lib64"
  "/opt"
  "/proc"
  "/root"
  "/sbin"
  "/sys"
  "/tmp"
  "/usr"
  "/var"
  "/home/cicv"
)
# 判断某目录是否为敏感目录
is_sensitive_directory() {
  local dir="$1"

  for sensitive_dir in "${SENSITIVE_DIRS[@]}"; do
    if [[ "$dir" == "$sensitive_dir" ]]; then
      return 0 # 敏感目录
    fi
  done

  return 1 # 非敏感目录
}

# 清除历史文件
# 检查要删除的目录是否为空
if [[ -z "$UNZIP_DATA_PATH" ]]; then
  echo "Error: Variable UPDATE_DATA_PATH is not set or empty"
  exit 1
fi
# 检查要删除的目录是否为敏感目录
if is_sensitive_directory "$UNZIP_DATA_PATH"; then
    echo "Error: '$UNZIP_DATA_PATH' is a sensitive directory and can not be deleted!"
    exit 1
fi

echo "Starting deleting old files: $UNZIP_DATA_PATH..."
# 删除对应目录
sudo rm -rf "$UNZIP_DATA_PATH"
echo "Old files deleted: $UNZIP_DATA_PATH"

# 解压文件
echo "Starting decompressing zip file: $ZIP_FILE_PATH..."
## 解压zip文件
unzip -o "$ZIP_FILE_PATH" -d "$UNZIP_DATA_PATH" # -o表示覆盖现有文件
## 解压data目录
unzip -o "$UNZIP_DATA_PATH/data.zip" -d "$UNZIP_DATA_PATH/data" # -o表示覆盖现有文件
echo "Zip file decompressed: $ZIP_FILE_PATH"

# 复制文件到项目目录
## data目录
echo "Starting copying directory: $UNZIP_DATA_PATH/data to $SIMULATION_PATH/data/pjirobot/data..."
cp -r "$UNZIP_DATA_PATH/data" "$SIMULATION_PATH/data/pjirobot/data"
echo "Directory copy successfully"
## origin_map.bag
echo "Starting copying file: $UNZIP_DATA_PATH/origin_map.bag to $SIMULATION_PATH/data/map_bag..."
cp "$UNZIP_DATA_PATH/origin_map.bag" "$SIMULATION_PATH/data/map_bag"
echo "File copy successfully"
## map.world
echo "Starting copying file: $UNZIP_DATA_PATH/map.world to $SIMULATION_PATH/catkin_ws/src/SimulationEnvs/worlds..."
cp "$UNZIP_DATA_PATH/map.world" "$SIMULATION_PATH/catkin_ws/src/SimulationEnvs/worlds"
echo "File copy successfully"
## map.pgm
echo "Starting copying file: $UNZIP_DATA_PATH/map.pgm to $SIMULATION_PATH/catkin_ws/src/Navigation/map..."
cp "$UNZIP_DATA_PATH/map.pgm" "$SIMULATION_PATH/catkin_ws/src/Navigation/map"
echo "File copy successfully"
## map.yaml
echo "Starting copying file: $UNZIP_DATA_PATH/map.yaml to $SIMULATION_PATH/catkin_ws/src/Navigation/map..."
cp "$UNZIP_DATA_PATH/map.yaml" "$SIMULATION_PATH/catkin_ws/src/Navigation/map"
echo "File copy successfully"

echo "Data preparation done."