From 719bbf10952b551dc6e7e17b78a3066380fd0a80 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 12 Feb 2018 23:49:54 +0100 Subject: [PATCH] Reorganize functions + misc stuff --- install_yunohost | 209 +++++++++++++++++++++++++---------------------- 1 file changed, 110 insertions(+), 99 deletions(-) diff --git a/install_yunohost b/install_yunohost index 569cf1f..33bfa5d 100755 --- a/install_yunohost +++ b/install_yunohost @@ -15,8 +15,112 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -YUNOHOST_LOG="/var/log/yunohost-installation.log" -THIS_MACHINE_RELEASE="$(lsb_release -c | awk '{print $2}')" +set -u + +# Globals + +readonly YUNOHOST_LOG="/var/log/yunohost-installation.log" +readonly THIS_MACHINE_RELEASE="$(lsb_release -c | awk '{print $2}')" + +############################################################################### +# Main functions # +############################################################################### + +function usage() { + print " +Usage : + `basename $0` [-a] [-d ] [-h] + +Options : + -a Enable automatic mode. No questions are asked. + This does not perform the post-install step. + -d Choose the distribution to install ('stable', 'testing', 'unstable'). + Defaults to 'stable' + -h Prints this help and exit +" +} + +function parse_options() +{ + AUTOMODE=0 + DISTRIB=stable + BUILD_IMAGE=0 + + while getopts ":aid:h" option; do + case $option in + a) + AUTOMODE=1 + export DEBIAN_FRONTEND=noninteractive + ;; + d) + DISTRIB=$OPTARG + ;; + i) + # This hidden option will allow to build generic image for Rpi/Olimex + BUILD_IMAGE=1 + ;; + h) + usage + exit 0 + ;; + :) + usage + exit 1 + ;; + \?) + usage + exit 1 + ;; + esac + done +} + +function main() +{ + parse_options + + step ensure_root || die "This script must be run as root" + + if is_raspbian ; then + step ensure_pi_logout || die "The user pi should be logged out" + fi + + step upgrade_system || die "Unable to update the system" + step installscript_dependencies || die "Unable to install dependencies to install script" + step create_custom_config || die "Creating custom configuration file /etc/yunohost/yunohost.conf failed" + step confirm_installation || die "Installation cancelled at your request" + step setup_package_source || die "Setting up deb package sources failed" + step apt_update || die "Error caught during 'apt-get update'" + step register_debconf || die "Unable to insert new values into debconf database" + step workaround_avahi_installation || die "Unable to install workaround for avahi installation" + step install_yunohost_packages || die "Installation of Yunohost packages failed" + step restart_services || die "Error caught during services restart" + + if is_raspbian ; then + step del_user_pi || die "Unable to delete user pi" + step change_hostname || die "Unable to change hostname" + step setup_firstboot || die "Unable to setup firstboot" + fi + + if [[ "$BUILD_IMAGE" == "1" ]] ; then + step clean_image || die "Unable to clean image" + fi + + if is_raspbian ; then + # Reboot should be done before postinstall to be able to run iptables rules + reboot + fi + + step post_install || die "Post-installation failed" + + # Success ! + success + exit 0 +} + +############################################################################### +# Helpers # +############################################################################### function print() { printf "%s\n" "$*"; @@ -89,6 +193,10 @@ function is_raspbian() { return 0 } +############################################################################### +# Installation steps # +############################################################################### + function apt_get_wrapper() { if [[ "$AUTOMODE" == "0" ]] ; then @@ -406,101 +514,4 @@ Do you want to try again now? return 0 } -function usage() { - print " -Usage : - `basename $0` [-a] [-d ] [-h] - -Options : - -a Enable automatic mode. No questions are asked. - This does not perform the post-install step. - -d Choose the distribution to install ('stable', 'testing', 'unstable'). - Defaults to 'stable' - -h Prints this help and exit -" -} - -# Treat unset variables as an error when performing -# parameter expansion. An error message will be written -# to the standard error, and a non-interactive shell will exit. -set -u - -function parse_options() -{ - AUTOMODE=0 - DISTRIB=stable - BUILD_IMAGE=0 - - while getopts ":aid:h" option; do - case $option in - a) - AUTOMODE=1 - export DEBIAN_FRONTEND=noninteractive - ;; - d) - DISTRIB=$OPTARG - ;; - i) - # This hidden option will allow to build generic image for Rpi/Olimex - BUILD_IMAGE=1 - ;; - h) - usage - exit 0 - ;; - :) - usage - exit 1 - ;; - \?) - usage - exit 1 - ;; - esac - done -} - -function main() -{ - parse_options - - step ensure_root || die "This script must be run as root" - - if is_raspbian ; then - step ensure_pi_logout || die "The user pi should be logged out" - fi - - step upgrade_system || die "Unable to update the system" - step installscript_dependencies || die "Unable to install dependencies to install script" - step create_custom_config || die "Creating custom configuration file /etc/yunohost/yunohost.conf failed" - step confirm_installation || die "Installation cancelled at your request" - step setup_package_source || die "Setting up deb package sources failed" - step apt_update || die "Error caught during 'apt-get update'" - step register_debconf || die "Unable to insert new values into debconf database" - step workaround_avahi_installation || die "Unable to install workaround for avahi installation" - step install_yunohost_packages || die "Installation of Yunohost packages failed" - step restart_services || die "Error caught during services restart" - - if is_raspbian ; then - step del_user_pi || die "Unable to delete user pi" - step change_hostname || die "Unable to change hostname" - step setup_firstboot || die "Unable to setup firstboot" - fi - - if [[ "$BUILD_IMAGE" == "1" ]] ; then - step clean_image || die "Unable to clean image" - fi - - if is_raspbian ; then - # Reboot should be done before postinstall to be able to run iptables rules - reboot - fi - - step post_install || die "Post-installation failed" - - # Success ! - success - exit 0 -} - main