Files
smom-dbis-138/scripts/automation/adopt-lib-top.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

102 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Adopt common library in top-N legacy scripts (no lib sourcing yet)
# Safe: inserts only a single line after first SCRIPT_DIR=...BASH_SOURCE occurrence.
# Verifies syntax, reverts on failure. Writes report to docs/SCRIPTS_ADOPTION_PLAN.md
set -euo pipefail
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)"
REPORT="$ROOT_DIR/docs/SCRIPTS_ADOPTION_PLAN.md"
LIMIT=30
APPLY=1
while [[ $# -gt 0 ]]; do
case "$1" in
--limit) LIMIT="$2"; shift 2;;
--dry-run) APPLY=0; shift;;
*) echo "Unknown arg: $1"; exit 1;;
esac
done
mkdir -p "$ROOT_DIR/docs"
tmp_list=$(mktemp)
{
cd "$ROOT_DIR"
while IFS= read -r -d '' f; do
# skip if already sourcing lib
if grep -q 'source "\$SCRIPT_DIR/\../lib/init\.sh"' "$f" 2>/dev/null; then
continue
fi
# require a SCRIPT_DIR with BASH_SOURCE
if grep -q 'BASH_SOURCE\[0\]' "$f" && grep -q '^SCRIPT_DIR=' "$f"; then
printf "%s\t%s\n" "$(wc -l < "$f")" "$f"
fi
done < <(find scripts -type f -name '*.sh' ! -path '*/lib/*' -print0)
} | sort -rn | head -n "$LIMIT" | cut -f2- > "$tmp_list"
mapfile -t CANDIDATES < "$tmp_list"
rm -f "$tmp_list"
changed=()
skipped=()
{
echo "# Scripts Adoption Plan"
echo
echo "Generated: $(date -Iseconds)"
echo
echo "Targeting top $LIMIT legacy scripts (no lib sourcing) to insert: \`source \"$SCRIPT_DIR/../lib/init.sh\"\` after the first \`SCRIPT_DIR=...BASH_SOURCE\` line."
echo
for f in "${CANDIDATES[@]}"; do
rel="${f#$ROOT_DIR/}"
echo "- [ ] $rel"
done
} > "$REPORT"
for f in "${CANDIDATES[@]}"; do
[ -e "$f" ] || continue
if [ "$APPLY" = "0" ]; then continue; fi
# backup
tmp="$(mktemp)"; cp "$f" "$tmp"
# inject after first SCRIPT_DIR line
awk -v root="$ROOT_DIR" 'BEGIN{ins=0} {
print
if (ins==0 && $0 ~ /^SCRIPT_DIR=/ && $0 ~ /BASH_SOURCE\[0\]/) {
print "source \"" root "/scripts/lib/init.sh\""
ins=1
}
}' "$f" > "$f.__new__"
mv "$f.__new__" "$f"
if ! bash -n "$f"; then
# revert
cp "$tmp" "$f"
rm -f "$tmp"
skipped+=("$f (syntax failed)")
continue
fi
rm -f "$tmp"
changed+=("$f")
done
# Append results
{
echo
echo "## Results"
echo
if [ ${#changed[@]} -gt 0 ]; then
echo "### Adopted (inserted lib/init):"
for c in "${changed[@]}"; do echo "- [x] ${c#$ROOT_DIR/}"; done
else
echo "No files changed."
fi
if [ ${#skipped[@]} -gt 0 ]; then
echo "\n### Skipped (manual review needed):"
for s in "${skipped[@]}"; do echo "- $s"; done
fi
} >> "$REPORT"
echo "Adoption pass complete. Report: $REPORT"