Skip to content

Commit

Permalink
fix(installation): Provide a backup git reference when tag can't be curl
Browse files Browse the repository at this point in the history
closes rust-lang#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.
  • Loading branch information
AbdouSeck committed Jun 5, 2020
1 parent 53e63be commit b1c5e5b
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 .
Expand Down

0 comments on commit b1c5e5b

Please sign in to comment.