Version number fix

This commit is contained in:
2025-12-24 00:51:30 -06:00
parent b535946fa0
commit 399c2566d0
6 changed files with 52 additions and 52 deletions

View File

@@ -23,7 +23,7 @@
# INGROUP: GitHub.Actions.ContinuousIntegration
# REPO: https://github.com/mokoconsulting-tech/MokoStandards
# PATH: /.github/workflows/ci.yml
# VERSION: 01.00.00
# VERSION: 03.05.00
# BRIEF: Continuous integration governance workflow for standards enforcement.
# NOTE: Runs on every push. Auto-normalizes YAML tabs to two spaces before validation.
# ============================================================================

View File

@@ -23,7 +23,7 @@
# INGROUP: MokoStandards.Release
# REPO: https://github.com/mokoconsulting-tech/MokoStandards
# PATH: /.github/workflows/release_pipeline.yml
# VERSION: 01.02.00
# VERSION: 03.05.00
# BRIEF: Enterprise release pipeline enforcing dev to rc to version to main. Creates prerelease when rc is created. Creates full release when version is created and promotes to main while retaining the version branch.
# NOTE: Controls: strict branch gating, mandatory source branch deletion after promotion, key-only SFTP with verbose logs, ZIP-only distribution with overwrite, no checksum generation.
#

View File

@@ -20,7 +20,7 @@
# INGROUP: GitHub.Versioning.Branching
# REPO: https://github.com/mokoconsulting-tech/MokoStandards
# PATH: /.github/workflows/version_branch.yml
# VERSION: 01.00.00
# VERSION: 03.05.00
# BRIEF: Create a dev/<version> branch and align versions across governed files
# NOTE: Enterprise gates: required artifacts, namespace defense, deterministic reporting, control character guard

View File

@@ -24,7 +24,7 @@
# INGROUP: GitHub.Actions.Utilities
# REPO: https://github.com/mokoconsulting-tech/MokoStandards
# PATH: /scripts/fix_tabs.sh
# VERSION: 01.00.00
# VERSION: 03.05.00
# BRIEF: Utility script to replace tab characters with two spaces in YAML files.
# NOTE: Intended for local developer use. Not executed automatically in CI.
# ============================================================================

View File

@@ -24,7 +24,7 @@
# INGROUP: Date.Normalization
# REPO: https://github.com/mokoconsulting-tech/MokoStandards
# PATH: /scripts/update_dates.sh
# VERSION: 01.00.01
# VERSION: 03.05.00
# BRIEF: Normalize release dates across manifests and CHANGELOG using a single authoritative UTC date.
# NOTE: Repo-controlled script only. CI-fatal on malformed inputs. Outputs a JSON report to stdout.
@@ -34,50 +34,50 @@ TODAY_UTC="${1:-}"
VERSION="${2:-}"
usage() {
echo "ERROR: Usage: update_dates.sh <YYYY-MM-DD> <VERSION>" >&2
echo "ERROR: Usage: update_dates.sh <YYYY-MM-DD> <VERSION>" >&2
}
if [ -z "${TODAY_UTC}" ] || [ -z "${VERSION}" ]; then
usage
exit 1
usage
exit 1
fi
# Validate date format strictly
if ! echo "${TODAY_UTC}" | grep -Eq '^[0-9]{4}-[0-9]{2}-[0-9]{2}$'; then
echo "ERROR: Invalid date format. Expected YYYY-MM-DD, got '${TODAY_UTC}'" >&2
exit 1
echo "ERROR: Invalid date format. Expected YYYY-MM-DD, got '${TODAY_UTC}'" >&2
exit 1
fi
# Validate version format strictly
if ! echo "${VERSION}" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "ERROR: Invalid version format. Expected X.Y.Z, got '${VERSION}'" >&2
exit 1
echo "ERROR: Invalid version format. Expected X.Y.Z, got '${VERSION}'" >&2
exit 1
fi
# Cross-platform sed in-place helper (GNU and BSD)
# - Ubuntu runners use GNU sed, but this keeps local execution deterministic.
sed_inplace() {
local expr="$1"
local file="$2"
local expr="$1"
local file="$2"
if sed --version >/dev/null 2>&1; then
sed -i -E "${expr}" "${file}"
else
sed -i '' -E "${expr}" "${file}"
fi
if sed --version >/dev/null 2>&1; then
sed -i -E "${expr}" "${file}"
else
sed -i '' -E "${expr}" "${file}"
fi
}
echo "Normalizing dates to ${TODAY_UTC} for version ${VERSION}"
# Update CHANGELOG.md heading date
if [ ! -f CHANGELOG.md ]; then
echo "ERROR: CHANGELOG.md not found" >&2
exit 1
echo "ERROR: CHANGELOG.md not found" >&2
exit 1
fi
if ! grep -Eq "^## \[${VERSION}\]" CHANGELOG.md; then
echo "ERROR: CHANGELOG.md does not contain heading for version [${VERSION}]" >&2
exit 1
echo "ERROR: CHANGELOG.md does not contain heading for version [${VERSION}]" >&2
exit 1
fi
# Use a delimiter that will not collide with the pattern (the heading starts with "##")
@@ -88,44 +88,44 @@ XML_SCANNED=0
XML_TOUCHED=0
while IFS= read -r -d '' FILE; do
XML_SCANNED=$((XML_SCANNED + 1))
XML_SCANNED=$((XML_SCANNED + 1))
BEFORE_HASH=""
AFTER_HASH=""
BEFORE_HASH=""
AFTER_HASH=""
# Best-effort content hash for change detection without external deps.
if command -v sha256sum >/dev/null 2>&1; then
BEFORE_HASH="$(sha256sum "${FILE}" | awk '{print $1}')"
fi
# Best-effort content hash for change detection without external deps.
if command -v sha256sum >/dev/null 2>&1; then
BEFORE_HASH="$(sha256sum "${FILE}" | awk '{print $1}')"
fi
# Use # delimiter because XML does not include # in these tags.
sed -i "s#<creationDate>[^<]*</creationDate>#<creationDate>${TODAY_UTC}</creationDate>#g" "${FILE}" || true
sed -i "s#<date>[^<]*</date>#<date>${TODAY_UTC}</date>#g" "${FILE}" || true
sed -i "s#<buildDate>[^<]*</buildDate>#<buildDate>${TODAY_UTC}</buildDate>#g" "${FILE}" || true
# Use # delimiter because XML does not include # in these tags.
sed -i "s#<creationDate>[^<]*</creationDate>#<creationDate>${TODAY_UTC}</creationDate>#g" "${FILE}" || true
sed -i "s#<date>[^<]*</date>#<date>${TODAY_UTC}</date>#g" "${FILE}" || true
sed -i "s#<buildDate>[^<]*</buildDate>#<buildDate>${TODAY_UTC}</buildDate>#g" "${FILE}" || true
if [ -n "${BEFORE_HASH}" ]; then
AFTER_HASH="$(sha256sum "${FILE}" | awk '{print $1}')"
if [ "${BEFORE_HASH}" != "${AFTER_HASH}" ]; then
XML_TOUCHED=$((XML_TOUCHED + 1))
fi
fi
if [ -n "${BEFORE_HASH}" ]; then
AFTER_HASH="$(sha256sum "${FILE}" | awk '{print $1}')"
if [ "${BEFORE_HASH}" != "${AFTER_HASH}" ]; then
XML_TOUCHED=$((XML_TOUCHED + 1))
fi
fi
done < <(
find . -type f -name "*.xml" \
-not -path "./.git/*" \
-not -path "./.github/*" \
-not -path "./dist/*" \
-not -path "./node_modules/*" \
-print0
find . -type f -name "*.xml" \
-not -path "./.git/*" \
-not -path "./.github/*" \
-not -path "./dist/*" \
-not -path "./node_modules/*" \
-print0
)
# JSON report to stdout (workflow can capture or include in summary)
printf '{"today_utc":"%s","version":"%s","changelog":"%s","xml_scanned":%s,"xml_touched":%s}
' \
"${TODAY_UTC}" \
"${VERSION}" \
"CHANGELOG.md" \
"${XML_SCANNED}" \
"${XML_TOUCHED}"
"${TODAY_UTC}" \
"${VERSION}" \
"CHANGELOG.md" \
"${XML_SCANNED}" \
"${XML_TOUCHED}"
echo "Date normalization complete."

View File

@@ -24,7 +24,7 @@
# INGROUP: GitHub.Actions.CI
# REPO: https://github.com/mokoconsulting-tech/MokoStandards
# PATH: /scripts/validate_tabs.sh
# VERSION: 01.00.00
# VERSION: 03.05.00
# BRIEF: CI validator that blocks tab characters in YAML files and enforces two-space indentation policy.
# NOTE: YAML is indentation sensitive; tabs are noncompliant. This validator fails the job when any tab is detected.
# ============================================================================