From cfed349aa37495b07bea0f4fd26842c0ce496d17 Mon Sep 17 00:00:00 2001 From: "Valeriy V. Vorotyntsev" Date: Tue, 30 May 2023 00:59:38 +0300 Subject: [PATCH] Fix error messages in `check-release.sh` - `check_tag`: Report file name correctly. Use named variables. - Introduce `read_version` helper function. Simplify the implementation. - Show meaningful error message if `GITHUB_REF` is not set or its format is incorrect. --- .github/scripts/check-release.sh | 47 ++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/.github/scripts/check-release.sh b/.github/scripts/check-release.sh index b0b272226..d9cb128b5 100644 --- a/.github/scripts/check-release.sh +++ b/.github/scripts/check-release.sh @@ -1,24 +1,41 @@ -#!/bin/bash +#!/usr/bin/env bash +set -eu -o pipefail -# check_tag $current_tag $file_tag $file_name -function check_tag { - if [[ "$1" != "$2" ]]; then - echo "Error: the current tag does not match the version in Cargo.toml: found $2 - expected $1" - ret=1 - fi +check_tag() { + local expected=$1 + local actual=$2 + local filename=$3 + + if [[ $actual != $expected ]]; then + echo >&2 "Error: the current tag does not match the version in $filename: found $actual, expected $expected" + return 1 + fi } +read_version() { + grep '^version = ' | cut -d \" -f 2 +} + +if [[ -z "${GITHUB_REF:-}" ]]; then + echo >&2 "Error: GITHUB_REF is not set" + exit 1 +fi + +if [[ ! "$GITHUB_REF" =~ ^refs/tags/v[0-9]+\.[0-9]+\.[0-9]+(-[a-z0-9]+)?$ ]]; then + echo >&2 "Error: GITHUB_REF is not a valid tag: $GITHUB_REF" + exit 1 +fi + +current_tag=${GITHUB_REF#refs/tags/v} ret=0 -current_tag=${GITHUB_REF#'refs/tags/v'} -file_tag="$(grep '^version = ' Cargo.toml | cut -d '=' -f 2 | tr -d '"' | tr -d ' ')" -check_tag $current_tag $file_tag +toml_tag="$(cat Cargo.toml | read_version)" +check_tag "$current_tag" "$toml_tag" Cargo.toml || ret=1 -lock_file='Cargo.lock' -lock_tag=$(grep -A 1 'name = "meilisearch-auth"' $lock_file | grep version | cut -d '=' -f 2 | tr -d '"' | tr -d ' ') -check_tag $current_tag $lock_tag $lock_file +lock_tag=$(grep -A 1 '^name = "meilisearch-auth"' Cargo.lock | read_version) +check_tag "$current_tag" "$lock_tag" Cargo.lock || ret=1 -if [[ "$ret" -eq 0 ]] ; then - echo 'OK' +if (( ret == 0 )); then + echo 'OK' fi exit $ret