#!/bin/bash set -e . /usr/share/debconf/confmodule db_capb backup # allow to go back, for that we implement that STATE loop debug() { [ "${DEBCONF_DEBUG:-}" != "developer" ] || echo -e "D: $*" >&2 } db_settitle neurodebian-repository/title if [ "$1" = "configure" ]; then # Must have been called in preinst state, so no nd-aptenable # tool is yet installed, thus delay asking questions to # whenever will be called in postinst state which nd-aptenable 1>/dev/null 2>&1 || exit 0 fi # Create temporary directory which will be reused export ND_AE_TEMPDIR=$(mktemp -d) trap "rm -rf \"$ND_AE_TEMPDIR\"" TERM INT EXIT neurodebian_releases="auto" # This implements a simple state machine so the back button can be handled. # taken from debconf demo example STATE=1 while [ "$STATE" != 0 -a "$STATE" != 8 ]; do case $STATE in 1) export neurodebian_releases="$(ND_IFS=', ' nd-aptenable --print-releases)" debug "releases: $neurodebian_releases" db_subst neurodebian-repository/release releases "$neurodebian_releases" db_input medium neurodebian-repository/release || true ;; 2) export neurodebian_mirrors="$(ND_IFS=', ' nd-aptenable --print-mirrors)" debug "mirrors: $neurodebian_mirrors" db_subst neurodebian-repository/mirror mirrors "$neurodebian_mirrors" db_input medium neurodebian-repository/mirror || true mirror_selection_ret="$RET" debug "mirror select return: <$mirror_selection_ret>" ;; 3) db_input medium neurodebian-repository/flavor || true ;; 4) db_input medium neurodebian-repository/components || true ;; 5) db_input low neurodebian-repository/overwrite || true ;; 6) db_input low neurodebian-repository/suffix || true ;; 7) db_input medium neurodebian-repository/run-update-note || true ;; esac if db_go; then case $STATE in 2) db_metaget neurodebian-repository/mirror value selected_mirror="$RET" # TODOs: # - handle custom # - separate out alias from url debug "selected mirror: $selected_mirror" if [ "$selected_mirror" = "best" ] && ! which netselect &>/dev/null; then if [ "$mirror_selection_ret" = "30 question skipped" ]; then # if the question was not even shown, we would # not get a chance to specify mirror, thus # better just fail altogether and demand intervention db_input high neurodebian-repository/netselect-cannot-be-used exit 1 else db_input high neurodebian-repository/netselect-not-found continue; fi fi esac STATE=$(($STATE + 1)) else STATE=$(($STATE - 1)) fi done db_stop