.github/scripts/is-latest-release.sh
#!/bin/sh

# Used in our CIs to publish the latest Docker image.

# Checks if the current tag ($GITHUB_REF) corresponds to the latest release tag on GitHub
# Returns "true" or "false" (as a string).

GITHUB_API='https://api.github.com/repos/meilisearch/meilisearch/releases'
PNAME='meilisearch'

# FUNCTIONS

# Returns the version of the latest stable version of Meilisearch by setting the $latest variable.
get_latest() {
    # temp_file is needed because the grep would start before the download is over
    temp_file=$(mktemp -q /tmp/$PNAME.XXXXXXXXX)
    latest_release="$GITHUB_API/latest"

    if [ $? -ne 0 ]; then
        echo "$0: Can't create temp file."
        exit 1
    fi

    if [ -z "$GITHUB_PAT" ]; then
        curl -s "$latest_release" > "$temp_file" || return 1
    else
        curl -H "Authorization: token $GITHUB_PAT" -s "$latest_release" > "$temp_file" || return 1
    fi

    latest="$(cat "$temp_file" | grep '"tag_name":' | cut -d ':' -f2 | tr -d '"' | tr -d ',' | tr -d ' ')"

    rm -f "$temp_file"
    return 0
}

# MAIN
current_tag="$(echo $GITHUB_REF | tr -d 'refs/tags/')"
get_latest

if [ "$current_tag" != "$latest" ]; then
    # The current release tag is not the latest
    echo "false"
else
    # The current release tag is the latest
    echo "true"
fi

exit 0
