From 27864fad581bc9917cda40b690dbcbec22a00c6e Mon Sep 17 00:00:00 2001 From: Denozordec Date: Wed, 20 May 2026 14:57:18 +0700 Subject: [PATCH] fix(ci): make check-migrations-pair.sh POSIX sh compatible MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Убрана bash process substitution; скрипт работает под sh в Gitea runner (DEP-03). Co-authored-by: Cursor --- scripts/check-migrations-pair.sh | 45 +++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/scripts/check-migrations-pair.sh b/scripts/check-migrations-pair.sh index db34646..ffe06f2 100644 --- a/scripts/check-migrations-pair.sh +++ b/scripts/check-migrations-pair.sh @@ -11,21 +11,54 @@ list_nums() { ls "$dir" 2>/dev/null | sed -n 's/^\([0-9]\{6\}\)_.*\.up\.sql$/\1/p' | sort -u } +migration_only_in() { + # Prints numbers present in $1 but not in $2 (space-separated lists). + haystack="$2 " + for n in $1; do + case "$haystack" in + *" $n "*) ;; + *) echo "$n" ;; + esac + done +} + pg_nums="$(list_nums "$PG")" sql_nums="$(list_nums "$SQL")" if [ "$pg_nums" != "$sql_nums" ]; then echo "check-migrations-pair: postgres and sqlite migration numbers differ" >&2 - echo "postgres only:" >&2 - comm -23 <(printf '%s\n' "$pg_nums") <(printf '%s\n' "$sql_nums") >&2 || true - echo "sqlite only:" >&2 - comm -13 <(printf '%s\n' "$pg_nums") <(printf '%s\n' "$sql_nums") >&2 || true + only_pg="$(migration_only_in "$pg_nums" "$sql_nums")" + only_sql="$(migration_only_in "$sql_nums" "$pg_nums")" + if [ -n "$only_pg" ]; then + echo "postgres only:" >&2 + for n in $only_pg; do + echo " $n" >&2 + done + fi + if [ -n "$only_sql" ]; then + echo "sqlite only:" >&2 + for n in $only_sql; do + echo " $n" >&2 + done + fi exit 1 fi for n in $pg_nums; do - pg_up="$(ls "$PG"/${n}_*.up.sql 2>/dev/null | head -1)" - sql_up="$(ls "$SQL"/${n}_*.up.sql 2>/dev/null | head -1)" + pg_up="" + sql_up="" + for f in "$PG"/${n}_*.up.sql; do + if [ -f "$f" ]; then + pg_up="$f" + break + fi + done + for f in "$SQL"/${n}_*.up.sql; do + if [ -f "$f" ]; then + sql_up="$f" + break + fi + done if [ -z "$pg_up" ] || [ -z "$sql_up" ]; then echo "check-migrations-pair: missing .up.sql for $n" >&2 exit 1