40 lines
972 B
Bash
40 lines
972 B
Bash
#!/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 |