#!/bin/bash # NAC模块升级机制集成脚本 # 为所有NAC模块添加升级框架依赖 set -e echo "===== NAC模块升级机制集成脚本 =====" echo "开始时间: $(date)" echo "" # 模块列表 MODULES=( "nac-acc-1400" "nac-acc-1410" "nac-acc-1594" "nac-acc-1643" "nac-acc-1644" "nac-ai-compliance" "nac-ai-valuation" "nac-api-server" "nac-bridge-contracts" "nac-bridge-ethereum" "nac-cbpp" "nac-cbpp-l0" "nac-cbpp-l1" "nac-cee" "nac-cli" "nac-constitution-clauses" "nac-constitution-macros" "nac-constitution-state" "nac-contract-deployer" "nac-cross-chain-bridge" "nac-csnp" "nac-csnp-l0" "nac-csnp-l1" "nac-deploy" "nac-ftan" "nac-integration-tests" "nac-ma-rcm" "nac-monitor" "nac-lens" "nac-lens" "nac-nvm" "nac-rwa-exchange" "nac-sdk" "nac-serde" "nac-test" "nac-uca" "nac-udm" "nac-vision-cli" "nac-vision-wallet" "nac-wallet-cli" "nac-wallet-core" "nac-webdev-init" ) # 计数器 TOTAL=${#MODULES[@]} SUCCESS=0 FAILED=0 SKIPPED=0 echo "总共需要处理 $TOTAL 个模块" echo "" for MODULE in "${MODULES[@]}"; do echo "处理模块: $MODULE" # 检查模块是否存在 if [ ! -d "$MODULE" ]; then echo " ⚠️ 模块不存在,跳过" ((SKIPPED++)) continue fi # 检查是否有Cargo.toml if [ ! -f "$MODULE/Cargo.toml" ]; then echo " ⚠️ 没有Cargo.toml,跳过" ((SKIPPED++)) continue fi # 添加依赖 echo " 📦 添加nac-upgrade-framework依赖..." if grep -q "nac-upgrade-framework" "$MODULE/Cargo.toml"; then echo " ✅ 依赖已存在" else # 在[dependencies]后添加依赖 if grep -q "^\[dependencies\]" "$MODULE/Cargo.toml"; then sed -i '/^\[dependencies\]/a nac-upgrade-framework = { path = "../nac-upgrade-framework" }' "$MODULE/Cargo.toml" echo " ✅ 依赖已添加" else echo " ⚠️ 没有[dependencies]节,跳过" ((SKIPPED++)) continue fi fi # 创建upgrade.rs文件(如果不存在) if [ ! -f "$MODULE/src/upgrade.rs" ]; then echo " 📝 创建upgrade.rs..." cat > "$MODULE/src/upgrade.rs" << 'EOF' //! 模块升级实现 use nac_upgrade_framework::{ traits::Upgradeable, UpgradeData, UpgradeRecord, Version, Result, UpgradeError, }; // 注意:需要在主结构体中添加以下字段: // - version: Version // - upgrade_history: Vec // // 并实现 do_upgrade 方法来执行实际的升级逻辑 // 使用宏快速实现Upgradeable trait: // nac_upgrade_framework::impl_upgradeable!(YourStruct, "module-name", Version::new(1, 0, 0)); EOF echo " ✅ upgrade.rs已创建" else echo " ℹ️ upgrade.rs已存在" fi ((SUCCESS++)) echo " ✅ 完成" echo "" done echo "===== 集成完成 =====" echo "成功: $SUCCESS" echo "失败: $FAILED" echo "跳过: $SKIPPED" echo "总计: $TOTAL" echo "完成时间: $(date)"