FROM ros:noetic-ros-base

# Make all apt operations non-interactive
ARG DEBIAN_FRONTEND=noninteractive
ENV DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC

# Base non-interactive setup to avoid prompts (tzdata, locales optional)
RUN apt-get update -qq && \
    apt-get install -y -qq --no-install-recommends tzdata ca-certificates locales && \
    ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \
    dpkg-reconfigure --frontend noninteractive tzdata && \
    locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 && \
    rm -rf /var/lib/apt/lists/*

# Install MoveIt and tools (no recommends to avoid keyboard-configuration)
RUN apt-get update -qq && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y -qq --no-install-recommends \
      ros-noetic-moveit \
      ros-noetic-moveit-resources-panda-moveit-config \
      ros-noetic-moveit-setup-assistant \
      ros-noetic-moveit-planners-ompl \
      ros-noetic-moveit-ros-visualization \
      ros-noetic-moveit-ros-move-group \
      ros-noetic-moveit-commander \
      ros-noetic-moveit-ros-planning-interface \
      ros-noetic-moveit-ros-warehouse \
      ros-noetic-moveit-ros-benchmarks \
      ros-noetic-moveit-ros-robot-interaction \
      ros-noetic-moveit-ros-perception \
      ros-noetic-moveit-fake-controller-manager \
      ros-noetic-moveit-simple-controller-manager \
      ros-noetic-moveit-ros-control-interface \
      ros-noetic-rviz \
      ros-noetic-rqt \
      ros-noetic-rqt-common-plugins \
      python3-rospkg \
      python3-catkin-tools \
      git \
      wget \
      curl \
      vim \
      nano \
    && rm -rf /var/lib/apt/lists/*

# Set up ROS environment for interactive shells
RUN echo "source /opt/ros/noetic/setup.bash" >> /root/.bashrc

# Workspace
WORKDIR /workspace

# Copy and install the SRMP Debian package
COPY ros-noetic-srmp-moveit_1.0.0_amd64.deb /workspace/
RUN dpkg -i /workspace/ros-noetic-srmp-moveit_1.0.0_amd64.deb || \
    (apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq -f && rm -rf /var/lib/apt/lists/*)

# Copy the user workspace
COPY srmp_user_ws/ /workspace/srmp_user_ws/

# Build the user workspace
WORKDIR /workspace/srmp_user_ws

# Fix CMake configuration to use installed library paths
RUN find src/ -name "CMakeLists.txt" -exec sed -i 's|/tmp/srmp_core_package/lib/libsearch.so|/opt/ros/noetic/lib/libsearch.so|g' {} \; && \
    find src/ -name "CMakeLists.txt" -exec sed -i 's|/tmp/srmp_core_package/lib/libmanipulation_planning.so|/opt/ros/noetic/lib/libmanipulation_planning.so|g' {} \; && \
    find src/ -name "CMakeLists.txt" -exec sed -i 's|/tmp/srmp_core_package/include|/opt/ros/noetic/include|g' {} \;

# Also fix any CMake config files that might have wrong paths
RUN find /opt/ros/noetic/share/ -name "*Config.cmake" -exec sed -i 's|/tmp/srmp_core_package/lib/libsearch.so|/opt/ros/noetic/lib/libsearch.so|g' {} \; 2>/dev/null || true && \
    find /opt/ros/noetic/share/ -name "*Config.cmake" -exec sed -i 's|/tmp/srmp_core_package/lib/libmanipulation_planning.so|/opt/ros/noetic/lib/libmanipulation_planning.so|g' {} \; 2>/dev/null || true && \
    find /opt/ros/noetic/share/ -name "*Config.cmake" -exec sed -i 's|/tmp/srmp_core_package/include|/opt/ros/noetic/include|g' {} \; 2>/dev/null || true

# Initialize and build the workspace
RUN /bin/bash -c "source /opt/ros/noetic/setup.bash && catkin_init_workspace src && catkin build"

# Verify the build succeeded
RUN ls -la devel/ && echo "Build verification:" && ls -la devel/lib/ | head -5

# Set up environment for the workspace
RUN echo "source /workspace/srmp_user_ws/devel/setup.bash" >> /root/.bashrc

# Create a startup script
RUN echo '#!/bin/bash\n\
echo "========================================="\n\
echo "  SRMP MoveIt Docker Container"\n\
echo "========================================="\n\
echo ""\n\
echo "SRMP libraries installed:"\n\
echo "  - Search library: /opt/ros/noetic/lib/libsearch.so"\n\
echo "  - Manipulation planning: /opt/ros/noetic/lib/libmanipulation_planning.so"\n\
echo ""\n\
echo "User workspace built at: /workspace/srmp_user_ws"\n\
echo "Available MoveIt configurations:"\n\
echo "  - panda_two_moveit_config"\n\
echo ""\n\
echo "To test SRMP:"\n\
echo "  roslaunch panda_two_moveit_config demo.launch"\n\
echo ""\n\
echo "To use RViz:"\n\
echo "  rviz"\n\
echo ""\n\
echo "Container is ready for use!"\n\
echo "========================================="\n\
exec "$@"' > /usr/local/bin/srmp-startup.sh && chmod +x /usr/local/bin/srmp-startup.sh

# Set the startup script as entrypoint
ENTRYPOINT ["/usr/local/bin/srmp-startup.sh"]
CMD ["bash"]
