Files
smom-dbis-138/scripts/automation/generate-scripts-incubator.sh
defiQUG 1fb7266469 Add Oracle Aggregator and CCIP Integration
- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control.
- Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities.
- Created .gitmodules to include OpenZeppelin contracts as a submodule.
- Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment.
- Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks.
- Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring.
- Created scripts for resource import and usage validation across non-US regions.
- Added tests for CCIP error handling and integration to ensure robust functionality.
- Included various new files and directories for the orchestration portal and deployment scripts.
2025-12-12 14:57:48 -08:00

138 lines
4.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Generate scripts inventory and command index (local-only)
# Outputs:
# - docs/SCRIPTS_INVENTORY.md
# - docs/COMMANDS_INDEX.md
set -euo pipefail
set +e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)"
source "/home/intlc/projects/smom-dbis-138/scripts/lib/init.sh"
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
source "$ROOT_DIR/scripts/lib/init.sh"
set -e
QUIET=0
LIMIT=30
while [[ $# -gt 0 ]]; do
case "$1" in
--quiet) QUIET=1; shift ;;
--limit) LIMIT="$2"; shift 2 ;;
*) echo "Unknown arg: $1"; exit 1 ;;
esac
done
DOC_INV="$ROOT_DIR/docs/SCRIPTS_INVENTORY.md"
DOC_CMD="$ROOT_DIR/docs/COMMANDS_INDEX.md"
mkdir -p "$ROOT_DIR/docs"
emit() { if [ $QUIET -eq 0 ]; then echo -e "$@"; fi }
ensure_azure_cli || true
# Collect scripts list (exclude lib)
mapfile -t ALL_SCRIPTS < <(cd "$ROOT_DIR" && find scripts -type f -name '*.sh' ! -path '*/lib/*' | sort)
total_count=${#ALL_SCRIPTS[@]}
emit "Found $total_count shell scripts (excluding scripts/lib)."
# Build per-file metrics
tmp_metrics=$(mktemp)
{
printf "path\tlines\tsubdir\thas_lib\thas_color_vars\thas_manual_az\tcalls\n"
for f in "${ALL_SCRIPTS[@]}"; do
lines=$(wc -l < "$f" | tr -d ' ')
rel=${f#"$ROOT_DIR/"}
subdir=$(echo "$rel" | awk -F'/' '{print ($2? $2 : "root")}')
if grep -qE '^SCRIPT_DIR=.*BASH_SOURCE' "$f" && grep -q 'source\s\+"\$SCRIPT_DIR/\.\./lib/init\.sh"' "$f"; then
has_lib=1
else
has_lib=0
fi
if grep -qE '^[[:space:]]*(RED|GREEN|YELLOW|BLUE|CYAN|NC)=' "$f"; then
color=1
else
color=0
fi
if grep -qE '(^|[[:space:]])(command -v[[:space:]]+az|az[[:space:]]+account[[:space:]]+(show|set))' "$f"; then
manaz=1
else
manaz=0
fi
calls=$(grep -hoE 'scripts/[A-Za-z0-9_./-]+\.sh' "$f" | sort -u | tr '\n' ' ' || true)
printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\n" "$rel" "$lines" "$subdir" "$has_lib" "$color" "$manaz" "$calls"
done
} > "$tmp_metrics"
# Generate SCRIPTS_INVENTORY.md
{
echo "# Scripts Inventory"
echo
echo "Generated: $(date -Iseconds)"
echo
echo "Total scripts (excluding scripts/lib): $total_count"
echo
echo "## By directory"
echo
awk -F"\t" 'NR>1{c[$3]++} END{for(k in c){printf "- %s: %d\n", k, c[k]} }' "$tmp_metrics"
echo
echo "## Top ${LIMIT} scripts by line count"
echo
echo "| # | Script | Lines | Uses lib | Color vars | Manual az checks |"
echo "|---:|:------|------:|:--------:|:----------:|:----------------:|"
awk -F"\t" 'NR>1{print $0}' "$tmp_metrics" | sort -t$'\t' -k2,2nr | head -n "$LIMIT" |
nl -w2 -s' | ' |
awk -F"\t" '{printf "%s | `%s` | %s | %s | %s | %s |\n", $1, $2, $3, ($4?"yes":"no"), ($5?"yes":"no"), ($6?"yes":"no")}'
echo
echo "## Library adoption status"
echo
total=$(awk 'END{print NR-1}' "$tmp_metrics")
with=$(awk -F"\t" 'NR>1&&$4==1{c++} END{print c+0}' "$tmp_metrics")
echo "- With lib/init.sh: $with / $total"
echo "- Without lib/init.sh: "$((total-with))
echo
echo "## Script call graph (edges)"
echo
echo "Format: caller -> callee"
awk -F"\t" 'NR>1 && $7!=""{ split($7,a," "); for(i in a){print "- " $1 " -> " a[i]} }' "$tmp_metrics"
} > "$DOC_INV"
# Generate COMMANDS_INDEX.md from Makefile
{
echo "# Commands Index (Makefile → Script Map)"
echo
echo "Generated: $(date -Iseconds)"
echo
echo "| Target | Script |"
echo "|:------ |:-------|"
awk '
BEGIN{t=""}
/^[A-Za-z0-9_.-]:/ { next }
/^[A-Za-z0-9_.-]+:/ { split($0,a,":"); t=a[1]; next }
/^[\t]/ {
if ($0 ~ /scripts\/.*\.sh/) {
match($0, /scripts\/[A-Za-z0-9_\/.+-]+\.sh([^ ]*)?/, m);
if (m[0] != "") { gsub(/^\t+/,"",$0); printf "| %s | \`%s\` |\n", t, m[0]; }
}
}
' "$ROOT_DIR/epakefile" 2>/dev/null || true
awk '
BEGIN{t=""}
/^[A-Za-z0-9_.-]+:/ { split($0,a,":"); t=a[1]; next }
/^[\t]/ {
if ($0 ~ /scripts\/.*\.sh/) {
match($0, /scripts\/[A-Za-z0-9_\/.+-]+\.sh([^ ]*)?/, m);
if (m[0] != "") { gsub(/^\t+/,"",$0); printf "| %s | \`%s\` |\n", t, m[0]; }
}
}
' "$ROOT_DIR/Makefile"
} > "$DOC_CMD"
emit "Wrote: $DOC_INV"
emit "Wrote: $DOC_CMD"
rm -f "$tmp_metrics"
exit 0