lnd/scripts/check-go-version-yaml.sh

76 lines
2.8 KiB
Bash
Raw Normal View History

#!/bin/bash
# Function to check if the YAML file contains the specified Go version after
# field 'go:'.
check_go_version_yaml() {
local yamlfile="$1"
local required_go_version="$2"
# Use grep to find lines with 'go:'. The grep exist status is ignored.
local go_lines=$(grep -i '^\s*go:\s*"[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?"' "$yamlfile" || true)
# Check if any lines specify the Go version.
if [ -n "$go_lines" ]; then
# Extract the Go version from the file's lines. Example matching strings:
# go: "1.21.0"
local extracted_go_version=$(echo "$go_lines" | sed -n 's/.*go: "\([^"]*\)".*/\1/p')
# Check if the extracted Go version matches the required version.
if [ "$extracted_go_version" != "$required_go_version" ]; then
echo "Error finding pattern 'go:': $yamlfile specifies Go version '$extracted_go_version', but required version is '$required_go_version'."
exit 1
else
echo "$yamlfile specifies Go version $required_go_version."
fi
fi
}
# Function to check if the YAML file contains the specified Go version after
# environment variable 'GO_VERSION:'.
check_go_version_env_variable() {
local yamlfile="$1"
local required_go_version="$2"
# Use grep to find lines with 'GO_VERSION:'. The grep exist status is
# ignored.
local go_lines=$(grep -i 'GO_VERSION:' "$yamlfile" || true)
# Check if any lines specify the Go version.
if [ -n "$go_lines" ]; then
# Extract the Go version from the file's lines. Example matching strings:
# GO_VERSION: "1.21.0"
# GO_VERSION: '1.21.0'
# GO_VERSION: 1.21.0
# GO_VERSION:1.21.0
# GO_VERSION:1.21.0
local extracted_go_version=$(echo "$go_lines" | sed -n 's/.*GO_VERSION[: ]*["'\'']*\([0-9.]*\).*/\1/p')
# Check if the extracted Go version matches the required version.
if [ "$extracted_go_version" != "$required_go_version" ]; then
echo "Error finding pattern 'GO_VERSION:': $yamlfile specifies Go version '$extracted_go_version', but required version is '$required_go_version'."
exit 1
else
echo "$yamlfile specifies Go version $required_go_version."
fi
fi
}
# Check if the target Go version argument is provided.
if [ $# -eq 0 ]; then
echo "Usage: $0 <target_go_version>"
exit 1
fi
target_go_version="$1"
# Search for YAML files in the current directory and its subdirectories.
yaml_files=$(find . -type f \( -name "*.yaml" -o -name "*.yml" \))
# Check each YAML file.
for file in $yaml_files; do
check_go_version_yaml "$file" "$target_go_version"
check_go_version_env_variable "$file" "$target_go_version"
done
echo "All YAML files pass the Go version check for Go version $target_go_version."