Oleksii K
Доработки автозалива интеграций
Готово⏱️ Время в статусах:
1. Бізнес-задача:
при заливе интеграций, очень редко, но вылазит такой момент, что у нас папка проклы находится в папке. Нужно при автоматическом заливе проверять такое, чтобы index.php находился только в главной папке
т.е было залито
/home/auto/web/qebiceu.org/public_html/zyfrona_it_1_form/zyfrona_it_1_form/index.php
а должно
/home/auto/web/qebiceu.org/public_html/zyfrona_it_1_form/index.php
подправлял ошибку через вот такой код, но он проверяет только 1 уровень, может для подстраховки стоит добавить еще 1-2
DOMAINS=(
zypawyy.org
)
ok=()
bad=()
for domain in "${DOMAINS[@]}"; do
base="/home/auto/web/$domain/public_html"
if [ ! -d "$base" ]; then
echo "MISS: $domain (no dir: $base)"
bad+=("$domain")
continue
fi
echo "=== DOMAIN: $domain ==="
cd "$base" || { echo "FAIL: $domain (cd error)"; bad+=("$domain"); continue; }
# flatten: outer/* where outer contains exactly one item, and it is a dir
# (excluding wp-admin/wp-content/wp-includes at top-level)
if find . -maxdepth 1 -type d \
! -name '.' \
! -name 'wp-admin' \
! -name 'wp-content' \
! -name 'wp-includes' \
-exec bash -c '
outer="$1"
mapfile -t items < <(find "$outer" -mindepth 1 -maxdepth 1)
# exactly one child and it must be a directory
if [ "${#items[@]}" -ne 1 ] || [ ! -d "${items[0]}" ]; then
exit 0
fi
inner="${items[0]}"
shopt -s dotglob nullglob
inner_items=("$inner"/*)
if [ "${#inner_items[@]}" -eq 0 ]; then
echo "SKIP (empty): $outer -> $(basename "$inner")"
exit 0
fi
echo "MOVE: $outer <- $(basename "$inner")"
mv -n "$inner"/* "$outer"/
rmdir "$inner" 2>/dev/null || true
' _ {} \; ; then
ok+=("$domain")
else
echo "FAIL: $domain (find/move error)"
bad+=("$domain")
fi
echo
done
echo "========== SUMMARY =========="
echo "OK: ${#ok[@]}"
if [ "${#ok[@]}" -gt 0 ]; then
printf '%s\n' "${ok[@]}" | sed 's/^/ - /'
fi
echo
echo "BAD: ${#bad[@]}"
if [ "${#bad[@]}" -gt 0 ]; then
printf '%s\n' "${bad[@]}" | sed 's/^/ - /'
fi
2. Проблема:
если кто-то случайно забыл убрать папку из папки, то баер будет лить в пустоту. Убрать человеческий фактор
3. Ціль:
если я залью папку с папкой, оно должно исправить эту проблему на домене и предупредить где была ошибка, чтобы я подправил еще у себя
История изменений
Готово
Перевірка
В роботі
Заплановано
Oleksandr Kyselov
Backlog