#!/usr/bin/bash for up_file in *.up.sql; do down_file="${up_file%.up.sql}.down.sql" quoted_text=$(sed -n '3s/[^"]*\("[^"]*"\).*/\1/p' "$up_file") first_line=$(head -n 1 "$up_file") if [[ "$first_line" != *".up.sql" ]]; then sed -i "1s/$/\.up\.sql/" "$up_file" fi head -n 3 "$up_file" > "$down_file" echo "DROP TABLE IF EXISTS ${quoted_text};" >> "$down_file" tail -n 1 "$up_file" >> "$down_file" done sed -i 's/\bCREATE\b/DROP/g' *.down.sql for file in *.sql; do [ -f "$file" ] || continue line3=$(sed -n '3p' "$file") len=${#line3} if [ "$len" -lt 64 ]; then needed=$((64 - len)) dashes=$(printf '%*s' "$needed" | tr ' ' '-') sed -i "3s/$/$dashes/" "$file" fi done for file in *.down.sql; do [ -f "$file" ] || continue first_line=$(head -n 1 "$file") if [[ "$first_line" == *".up.sql" ]]; then sed -i '1s/\.up\.sql$/\.down\.sql/' "$file" fi done