From 820d8eaa69e267d4ff41e042b65a9ee349c1d3f8 Mon Sep 17 00:00:00 2001 From: Julian Ospald Date: Fri, 4 Jan 2019 16:06:06 +0800 Subject: [PATCH] Improve error handling In most cases, when we run a subshell with our own function and assign the result to a variable, we also need to check that the variable is non-empty, since 'die' and 'edo' don't propagate to the parent shell. In some cases, non-emptiness is handled in other ways or is not fatal. --- ghcup | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/ghcup b/ghcup index f3bce34..623c530 100755 --- a/ghcup +++ b/ghcup @@ -743,9 +743,11 @@ get_download_url() { mytool=$1 myver=$2 myarch=$(get_arch) + [ -z "${myarch}" ] && die "failed to get architecture" mydistro=$(get_distro_alias "$(get_distro_name)") mydistrover=$(get_distro_ver) meta_file="$(get_meta_download_file)" + [ -z "${meta_file}" ] && die "failed to get meta file" # 1st try with full distro=ver @@ -785,6 +787,7 @@ get_tool_ver_from_tag() { mytag=$2 meta_file="$(get_meta_version_file)" + [ -z "${meta_file}" ] && die "failed to get meta file" awk " NF { @@ -1170,13 +1173,14 @@ install_ghc() { myghcver=$1 inst_location=$(get_ghc_location "$1") + [ -z "${inst_location}" ] && die "failed to get install location" download_url=$(get_download_url "ghc" "${myghcver}") - download_tarball_name=$(basename "${download_url}") - first_install=true - if [ -z "${download_url}" ] ; then die "Could not find an appropriate download for the requested GHC-${myghcver} on your system! Please report a bug at ${BUG_URL}" fi + download_tarball_name=$(basename "${download_url}") + first_install=true + status_message "Installing GHC-${myghcver} for $(get_distro_name) on architecture $(get_arch)" @@ -1261,6 +1265,7 @@ set_ghc() { myghcver=$1 inst_location=$(get_ghc_location "$1") + [ -z "${inst_location}" ] && die "failed to get install location" [ -e "${inst_location}" ] || die "GHC ${myghcver} not installed yet, use: ${SCRIPT} install ${myghcver}" @@ -1450,6 +1455,7 @@ install_cabal() { mycabalver=$1 myarch=$(get_arch) + [ -z "${myarch}" ] && die "failed to get architecture" inst_location=$BIN_LOCATION download_url=$(get_download_url "cabal-install" "${mycabalver}") download_tarball_name=$(basename "${download_url}") @@ -1509,6 +1515,7 @@ compile_ghc() { myghcver=$1 bootstrap_ghc=$2 inst_location=$(get_ghc_location "$1") + [ -z "${inst_location}" ] && die "failed to get install location" download_url="https://downloads.haskell.org/~ghc/${myghcver}/ghc-${myghcver}-src.tar.xz" download_tarball_name=$(basename "${download_url}") @@ -1903,4 +1910,5 @@ if ! is_sourced ; then done fi # is_sourced + # vim: tabstop=4 shiftwidth=4 expandtab