84 lines
2.4 KiB
Bash
84 lines
2.4 KiB
Bash
![]() |
#!/bin/bash
|
||
|
|
||
|
# Agent 4: ENV Migrator
|
||
|
# Migrates ENV references to config accessors in a specific file
|
||
|
# Usage: ./04_migrate_env.sh path/to/file.nu
|
||
|
|
||
|
if [ $# -eq 0 ]; then
|
||
|
echo "Usage: $0 <file_path>"
|
||
|
echo "Example: $0 core/nulib/servers/utils.nu"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
FILE_PATH="$1"
|
||
|
|
||
|
if [ ! -f "$FILE_PATH" ]; then
|
||
|
echo "β Error: File $FILE_PATH not found"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
echo "π Launching ENV Migrator Agent for: $FILE_PATH"
|
||
|
|
||
|
# Create knowledge bundle for agent
|
||
|
KNOWLEDGE=$(cat << 'EOF'
|
||
|
# ENV Migration Mappings
|
||
|
|
||
|
## Replace These:
|
||
|
$env.PROVISIONING β (get-base-path)
|
||
|
$env.PROVISIONING_DEBUG β (is-debug-enabled)
|
||
|
$env.PROVISIONING_PROVIDERS_PATH β (get-providers-path)
|
||
|
$env.PROVISIONING_TASKSERVS_PATH β (get-taskservs-path)
|
||
|
$env.PROVISIONING_TOOLS_PATH β (get-tools-path)
|
||
|
$env.PROVISIONING_TEMPLATES_PATH β (get-templates-path)
|
||
|
|
||
|
## Keep These (Runtime State):
|
||
|
$env.PROVISIONING_ARGS # Command arguments - DO NOT CHANGE
|
||
|
$env.PROVISIONING_OUT # Output redirection - DO NOT CHANGE
|
||
|
$env.NOW # Timestamps - DO NOT CHANGE
|
||
|
$env.CURRENT_* # Context variables - DO NOT CHANGE
|
||
|
|
||
|
## Migration Pattern:
|
||
|
Before: if $env.PROVISIONING_DEBUG { ... }
|
||
|
After: if (is-debug-enabled) { ... }
|
||
|
|
||
|
Before: let path = $env.PROVISIONING_PROVIDERS_PATH
|
||
|
After: let path = (get-providers-path)
|
||
|
|
||
|
## Add Import:
|
||
|
Add: use ../lib_provisioning/config/accessor.nu *
|
||
|
(At top of file if not already present)
|
||
|
EOF
|
||
|
)
|
||
|
|
||
|
# Create backup
|
||
|
cp "$FILE_PATH" "$FILE_PATH.backup"
|
||
|
echo "π Created backup: $FILE_PATH.backup"
|
||
|
|
||
|
# Launch Claude Code agent
|
||
|
claude-code task \
|
||
|
--description "Migrate ENV references in $FILE_PATH" \
|
||
|
--prompt "$KNOWLEDGE
|
||
|
|
||
|
TARGET FILE: $FILE_PATH
|
||
|
TASK: Replace ENV variables with config accessor functions
|
||
|
REQUIREMENTS:
|
||
|
1. Keep PROVISIONING_ARGS, PROVISIONING_OUT, NOW, CURRENT_* as ENV
|
||
|
2. Add config accessor import if needed
|
||
|
3. Preserve all functionality
|
||
|
4. Test syntax after changes
|
||
|
|
||
|
OUTPUT: Report what was migrated + syntax validation result" \
|
||
|
--type "general-purpose"
|
||
|
|
||
|
# Validate the migration
|
||
|
echo "π§ͺ Testing syntax..."
|
||
|
if nu --ide-check "$FILE_PATH" 2>/dev/null; then
|
||
|
echo "β
Migration syntax validation passed for $FILE_PATH"
|
||
|
rm "$FILE_PATH.backup"
|
||
|
|
||
|
# Update migration state
|
||
|
echo "$(date): Migrated ENV references in $FILE_PATH" >> .migration/state/migrations_applied.log
|
||
|
else
|
||
|
echo "β Migration syntax validation failed! Restoring backup..."
|
||
|
mv "$FILE_PATH.backup" "$FILE_PATH"
|
||
|
fi
|