#!/bin/bash
set -e

echo "====================================="
echo " ROS2 Humble Installer (fixed)"
echo "====================================="

# 0. 禁用失效的 docker-ce 源，否则 apt update 报 403 直接中断
if [ -f /etc/apt/sources.list.d/docker.list ]; then
    sudo mv /etc/apt/sources.list.d/docker.list \
            /etc/apt/sources.list.d/docker.list.bak
    echo "[INFO] bad docker.list disabled"
fi

# 1. 清理旧 ROS 源
sudo rm -f /etc/apt/sources.list.d/ros2.list
sudo apt-key del F42ED6FBAB17C654 2>/dev/null || true

# 2. 系统更新
sudo apt update -y

# 3. 【核心修复】强制降级 libicu70
sudo apt install -y -f \
    --allow-downgrades \
    libicu70=70.1-2

# 4. 锁定版本防止再次升级
sudo apt-mark hold libicu70

# 5. 语言环境
sudo apt install -y locales
sudo locale-gen en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

# 6. 工具依赖（含 gpg 转换密钥用）
sudo apt install -y curl gnupg2 lsb-release software-properties-common ca-certificates

# 7. 不连 github(被墙)，改用密钥服务器拿公钥
sudo rm -f /usr/share/keyrings/ros-archive-keyring.gpg
sudo gpg --batch --yes --keyserver hkp://keyserver.ubuntu.com:80 \
    --recv-keys F42ED6FBAB17C654
sudo gpg --batch --yes --export \
    -o /usr/share/keyrings/ros-archive-keyring.gpg F42ED6FBAB17C654

# 8. 用能访问的中科大 ROS2 镜像
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.ustc.edu.cn/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" \
    | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 9. 更新并安装 ROS2
sudo apt update -y
sudo apt install -y --no-install-recommends ros-humble-desktop

# 10. 开发工具
sudo apt install -y python3-colcon-common-extensions python3-rosdep python3-argcomplete

# 11. 环境变量（避免重复写入）
grep -qxF "source /opt/ros/humble/setup.bash" ~/.bashrc \
    || echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source /opt/ros/humble/setup.bash

echo "====================================="
echo " ✅ ROS2 Humble 安装成功！"
echo " 验证命令：echo \$ROS_DISTRO （应输出 humble）"
echo "====================================="
