#!/bin/bash
set -e
#set -x

# an embedded copy of debify-archive-keyring_2019.01_all.deb
# encoded base64
DEBIFY_KEYRING_FILENAME=debify-archive-keyring_2019.01_all.deb
DEBIFY_KEYRING_DEB="ITxhcmNoPgpkZWJpYW4tYmluYXJ5ICAgMTU0NzE0NzAxMSAgMCAgICAgMCAgICAgMTAwNjQ0ICA0
ICAgICAgICAgYAoyLjAKY29udHJvbC50YXIuZ3ogIDE1NDcxNDcwMTEgIDAgICAgIDAgICAgIDEw
MDY0NCAgNTUyICAgICAgIGAKH4sIAAAAAAACA+2W3W7bIBTHc81T8AKxAX9H07RJkapdVIrWafcY
jh0Wx1hAJqVPP+J22hp13W6Sqdv5STYGfD7g+G87SRcXh0WqopjbyHk7X/Ms50UVzyyL41XFxYIW
iytw8EE6ShfO2vDSfb+bf6UkqbJj15kB/EXrX+b5r+tfiKf157xksf4M639xUggqlVNIg4s7ATrp
pz7RqYbWdMeldGprvsJpkCyQf1X/wdnhwu//l/RfZOW5/jPBUf/XYCPVTvawok8Vv9zB0ZmxJ5/B
eWPHFRWMNwnj5P3phgAqHFy0ksNAbqUZQzzArehajgYGurHKqh19o+fuu2nuJpOzb8mHMW74MIBe
3pn76IE35C56m2PsjVdk44x1JhxX1Own64IcA7k9DMEsT6FXtLMOTD+SNXjlzPRgeTMeNjf0MXka
k/fUdjRsga7ndX2fIvTTj7GYz5cYmmrTm1NOR+qjY09N8PQjDCA90PnLmEQr4+n0sFeEniQTF+zn
AE+CHjzoU4ZxRoaEvAb973XhD3v/F/WfxX/DM/2LrED9X4O60joXbdO0gufABGcVy2vV8oznQhY5
jY+0S/1WOki1Venzr4lUbeXYw2D7pL8nrCpL3goBGWs7gDrvMtAt60SeNW1dZ3/q007xot8GAk1V
tQ1r66aqW6YaXlXRk+hKXTLoRPmzw0drj78wCIIgCIIgCIIgCIIgCIIgCIIgyH/IN9/rHFwAKAAA
ZGF0YS50YXIueHogICAgIDE1NDcxNDcwMTEgIDAgICAgIDAgICAgIDEwMDY0NCAgMjg2MCAgICAg
IGAK/Td6WFoAAATm1rRGBMDrFYCgASEBFgAAAAAAAOdDHnbgT/8K410AFwu8HH0BlcAdSj55FcLM
JqNZOr4ECqvM1ygJBjHOnT9dNc9q3R/YVXCW3Pe4tctFisjJzXUcH+ULnBu/wUtEJSG0gBDv6iaP
HkShMqC5SSZGbuQ9Rw+3/MVKL6NHwWM8GDXxuqOJrEiXiNTYt3Ksh/Vo0MM+wHplUKibPZjanv0y
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
ArHEZ/sCAAAAAARZWg=="

SUDO=""
if [ ${UID} -ne 0 ];
then
  SUDO=`which sudo` || /bin/true
  if [ -z ${SUDO} ];
  then
     echo "Your system doesn't appear to have sudo installed"
     echo "Please run this script as root or with sudo"
     # FIXME: give example....
     # or run myself with su...
     exit 1
  fi
fi

if ! dpkg --list debify-archive-keyring >/dev/null 2>&1 ;
then
  PACKAGE=/tmp/${DEBIFY_KEYRING_FILENAME}
  echo "${DEBIFY_KEYRING_DEB}" | base64 -d > ${PACKAGE}
  echo "Installing required keyring ${PACKAGE} ..."
  ${SUDO} dpkg -i ${PACKAGE}
fi

SOURCES_LIST=/etc/apt/sources.list.d/debify.list
if [ -e ${SOURCES_LIST} ];
then
  echo "Found ${SOURCES_LIST}"
  echo "Not making any changes to sources.list"
  exit 0
fi

# which distribution?
RASPBIAN=""
if [ -e /etc/rpi-issue ];
then
  RASPBIAN="raspbian-"
fi
if [ ! -e /etc/apt/sources.list ];
then
  echo "/etc/apt/sources.list not found, is this a supported Linux system?"
  exit 1
fi
if grep raspbian /etc/apt/sources.list >/dev/null ;
then
  RASPBIAN="raspbian-"
fi
if [ ! -e /etc/debian_version ];
then
  echo "/etc/debian_version not found, is this a supported Linux system?"
  exit 1
fi
DEBIAN_VERSION=`head -1 /etc/debian_version | cut -f1 -d.`
case "${DEBIAN_VERSION}" in
  "9")
    CODENAME="stretch"
    ;;
  "10")
    CODENAME="buster"
    ;;
  "11")
    CODENAME="bullseye"
    ;;
  *)
    echo "Unrecognized value in /etc/debian_version:"
    cat /etc/debian_version
    echo ""
    echo "Please manually add the correct entry to ${SOURCES_LIST}"
    exit 1
    ;;
esac
URL=http://apt.debify.org/debify
SUITE=debify-${RASPBIAN}${CODENAME}
COMPONENTS="main contrib non-free"
FULL_APT_SPEC="${URL} ${SUITE} ${COMPONENTS}"
FULL_APT_BPO_SPEC="${URL} ${SUITE}-backports ${COMPONENTS}"
FULL_APT_SPEC_REDMINEUP="${URL} ${SUITE}-redmineup ${COMPONENTS}"

${SUDO} bash -c "cat >> ${SOURCES_LIST}" << EOF
deb ${FULL_APT_BPO_SPEC}
deb-src ${FULL_APT_BPO_SPEC}

deb ${FULL_APT_SPEC}
deb-src ${FULL_APT_SPEC}

#deb ${FULL_APT_SPEC_REDMINEUP}
#deb-src ${FULL_APT_SPEC_REDMINEUP}
EOF

${SUDO} apt update

