From 9e4fb1009f1c9e3433915c03e22c2af422e5c5fe Mon Sep 17 00:00:00 2001 From: Abdou Seck Date: Fri, 5 Jun 2020 16:33:14 -0400 Subject: [PATCH] fix(installation): Provide a backup git reference when tag can't be curl closes #423 If the parsed JSON data curled during a bash installation is not valid, use the repository's tag files as a backup. If those files don't exist somehow, then checkout the master branch and install it. --- install.sh | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 532728e3b6..c32f5126da 100755 --- a/install.sh +++ b/install.sh @@ -102,12 +102,30 @@ Path=${1:-rustlings/} echo "Cloning Rustlings at $Path..." git clone -q https://github.com/rust-lang/rustlings $Path +cd $Path + Version=$(curl -s https://api.github.com/repos/rust-lang/rustlings/releases/latest | ${PY} -c "import json,sys;obj=json.load(sys.stdin);print(obj['tag_name']);") CargoBin="${CARGO_HOME:-$HOME/.cargo}/bin" +if [[ -z ${Version} ]] +then + echo "The latest tag version could not be fetched remotely." + echo "Using the local git repository..." + Version=$(ls -tr .git/refs/tags/ | tail -1) + if [[ -z ${Version} ]] + then + echo "No valid tag version found" + echo "Rustlings will be installed using the master branch" + Version="master" + else + Version="tags/${Version}" + fi +else + Version="tags/${Version}" +fi + echo "Checking out version $Version..." -cd $Path -git checkout -q tags/$Version +git checkout -q ${Version} echo "Installing the 'rustlings' executable..." cargo install --force --path .