goldenChat base source add
This commit is contained in:
+106
@@ -0,0 +1,106 @@
|
||||
#!/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."
|
||||
Reference in New Issue
Block a user