#!/bin/bash
# created by /usr/bin/deb2apptainer on lun. 09 déc. 2024 15:34:26 CET
# -f debian:buster -o /tmp/dadimodo -p /tmp/buster.sh -i /home/experiences/grades/farhie/src/dadimodo-apptainer/dadimodo -s /tmp/dadimodo.sh -n dadimodo python-numpy python-netcdf4 python-deap ipython
#
# build image dadimodo with
#
# Usage: build

apptainer build --ignore-fakeroot-command dadimodo.sif dadimodo.def

# handle of Desktop launchers
mkdir -p launchers/
mkdir -p icons/

# get .desktop files ----------------------------------------------------------
D=$(grep '\.desktop' file_list.txt) || echo "WARNING: No desktop file found."
# get the desktop files
D=$(echo "$D" | awk '{ print $6 }')

# we need to copy them back, as well as their icons, and change the Exec lines
for i in $D; do
  if [ ${i:0:1} == "." ] ; then
    i=$(echo "$i" | cut -c 2-)
  fi
  n=`basename $i`
  apptainer exec dadimodo.sif cat $i >> launchers/$n || echo "WARNING: Failed to get desktop launcher $i"
done

# get icon files --------------------------------------------------------------
D=$(grep 'icon' file_list.txt) || echo "WARNING: No icon file found."
# get the icon files
D=$(echo "$D" | awk '{ print $6 }')

# we need to copy the icon files back
for i in $D; do
  if [ ${i:0:1} == "." ] ; then
    i=$(echo "$i" | cut -c 2-)
  fi
  n=`basename $i`
  apptainer exec dadimodo.sif cp $i /tmp/  &> /dev/null || n= 
  if [ -f "/tmp/$n" ]; then
    mv /tmp/$n icons/$n
  fi
done

# adapt the Desktop launchers to insert 'run', set Icons=
for i in launchers/*; do
  if [ ! -f "$i" ]; then continue; fi
  I=$(grep 'Icon=' $i | cut -d = -f 2) || I=
  if [ ! -z "$I" ]; then
    n=`basename $I`
    if [ ! -f "icons/$n" ]; then
      # get closest file that match Icon name when initial name is not present as a file
      n1=( /$n* ) || n1=
      if [ ! -z "$n1" ]; then
        n=`basename ${n1[0]}`
      fi
    fi
    sed -i "s|Icon=.*|Icon=icons/$n|g" $i            || echo " "
  fi
  sed -i 's|Exec=|&apptainer run dadimodo.sif  -c |g' $i        || echo " "
  sed -i 's|Terminal=false|Terminal=true|g' $i || echo " "
  chmod a+x $i                                 || echo " "
done

# create a Terminal launcher
echo "[Desktop Entry]"       > launchers/dadimodo-terminal.desktop
echo "Type=Application"     >> launchers/dadimodo-terminal.desktop
echo "Name=dadimodo Terminal"  >> launchers/dadimodo-terminal.desktop
echo "Terminal=true"        >> launchers/dadimodo-terminal.desktop
echo "Exec=apptainer run dadimodo.sif "            >> launchers/dadimodo-terminal.desktop
chmod a+x                      launchers/dadimodo-terminal.desktop

