56 lines
1.7 KiB
Bash
Executable File
56 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eu
|
|
|
|
function github-rest-api {
|
|
local GITHUB_REST_API=$1
|
|
|
|
local GITHUB_API_HEADER_ACCEPT="Accept: application/vnd.github.v3+json"
|
|
|
|
curl -s $GITHUB_REST_API -H $GITHUB_API_HEADER_ACCEPT
|
|
}
|
|
|
|
function github-latest-release-tag {
|
|
local REPO_NAME=$1
|
|
|
|
# Grab the last two latest releases:
|
|
# (We skip the latest release if we haven't set release notes yet).
|
|
local RELEASE_API="https://api.github.com/repos/$REPO_NAME/releases?per_page=2"
|
|
|
|
# This gets the latest release info (as json) from github.
|
|
local RELEASE_JSON=$(github-rest-api $RELEASE_API)
|
|
|
|
# This pulls out the "body" from the json (i.e. the release notes)
|
|
local RELEASE_NOTES=$(echo $RELEASE_JSON | jq '.[0].body')
|
|
|
|
if [ "$RELEASE_NOTES" ]
|
|
then
|
|
# Return the latest release tag
|
|
echo $RELEASE_JSON | jq '.[0].tag_name'
|
|
else
|
|
# If there are no release notes in the latest release then we use the
|
|
# 2nd most latest version since we don't want to update the version until
|
|
# the release notes are set.
|
|
echo "Ignoring the latest release since the release notes have not been set."
|
|
echo "Using the previous release's version as latest."
|
|
|
|
# Return the 2nd most recent release tag
|
|
echo $RELEASE_JSON | jq '.[1].tag_name'
|
|
fi
|
|
}
|
|
|
|
function dagger-latest-release {
|
|
# Get the latest Dagger release tag, e.g. "dagger-2.31.2" or "dagger-2.32"
|
|
local DAGGER_RELEASE_TAG=$(github-latest-release-tag "google/dagger")
|
|
|
|
# Converts the "tag_name" to a version, e.g. "dagger-2.32" => "2.32"
|
|
echo $DAGGER_RELEASE_TAG | grep -oP "(?<=dagger-)\d+\.\d+(\.\d+)?"
|
|
}
|
|
|
|
type jq >/dev/null 2>&1 || {
|
|
echo >&2 "jq is not installed. Try 'sudo apt-get install jq'.";
|
|
exit 1;
|
|
}
|
|
|
|
dagger-latest-release
|