Files
goldenChart/ta4j-master/scripts/validate-central-metadata.sh
T
2026-05-23 15:11:48 +09:00

107 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# =============================================================================
# validate-central-metadata.sh
#
# Validates Maven Central-required metadata before release publication.
# Uses Maven's evaluated effective model values (no XML parsing dependency).
#
# Usage:
# scripts/validate-central-metadata.sh
#
# =============================================================================
for tool in mvn; do
command -v "$tool" >/dev/null 2>&1 || {
echo "Error: required tool '$tool' not found" >&2
exit 1
}
done
declare -a ERRORS=()
add_error() {
local message="$1"
ERRORS+=("$message")
echo "::error::$message"
}
module_label() {
local module="$1"
if [[ "$module" == "ta4j-parent" ]]; then
echo "ta4j-parent (root)"
else
echo "$module"
fi
}
evaluate_expression() {
local module="$1"
local expression="$2"
local -a cmd=(mvn -q)
if [[ "$module" == "ta4j-parent" ]]; then
cmd+=(-N)
else
cmd+=(-pl "$module")
fi
cmd+=(help:evaluate "-Dexpression=${expression}" -DforceStdout)
local output
if ! output="$("${cmd[@]}" 2>&1)"; then
add_error "$(module_label "$module"): failed to evaluate '${expression}'"
return 1
fi
local value
value="$(printf '%s\n' "$output" | sed '/^[[:space:]]*$/d' | tail -n1 | tr -d '\r')"
printf '%s' "$value"
}
is_missing_value() {
local value="$1"
[[ -z "$value" || "$value" == "null object or invalid expression" ]]
}
check_required() {
local module="$1"
local expression="$2"
local field_name="$3"
local value
if ! value="$(evaluate_expression "$module" "$expression")"; then
return
fi
if is_missing_value "$value"; then
add_error "$(module_label "$module"): missing required '${field_name}' (${expression})"
fi
}
validate_module() {
local module="$1"
check_required "$module" "project.name" "name"
check_required "$module" "project.description" "description"
check_required "$module" "project.url" "url"
check_required "$module" "project.licenses[0].name" "licenses[0].name"
check_required "$module" "project.scm.connection" "scm.connection"
check_required "$module" "project.scm.url" "scm.url"
check_required "$module" "project.developers[0].id" "developers[0].id"
check_required "$module" "project.developers[0].name" "developers[0].name"
}
echo "Validating Maven Central metadata prerequisites..."
for module in ta4j-parent ta4j-core ta4j-examples; do
validate_module "$module"
done
if [[ ${#ERRORS[@]} -gt 0 ]]; then
echo "Maven Central metadata validation failed with ${#ERRORS[@]} issue(s)." >&2
exit 1
fi
echo "Maven Central metadata validation passed for ta4j-parent, ta4j-core, ta4j-examples."