mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 01:43:16 +01:00
2a6e54016f
Implemented linter scripts to ensure consistency of the Go version specified in Dockerfiles and YAML files. These scripts verify that the Go version used across these files is uniform, enhancing maintainability and reducing configuration errors. This commit also introduces a `GO_VERSION` Makefile variable to control the Go version used throughout the project.
76 lines
2.8 KiB
Bash
Executable File
76 lines
2.8 KiB
Bash
Executable File
#!/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."
|