📋
Asana Logger

Доработки автозалива интеграций

Готово

⏱️ Время в статусах:

Backlog 00:09 (1x)
Заплановано 19:05 (1x)
В роботі 71:47 (1x)
Перевірка 72:03 (1x)
Готово 00:00 (1x)
Asana ID: 1213493195188916
👤 Исполнитель: Oleksii K
Проект: Kanban-дошка розробників
Срок: 2026-03-06
Создано: 2026-03-02 16:24:59
Обновлено: 2026-04-15 20:24:53
Завершено: 2026-03-09 09:30:51
Описание:


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. Ціль:
если я залью папку с папкой, оно должно исправить эту проблему на домене и предупредить где была ошибка, чтобы я подправил еще у себя

История изменений

changed 2026-03-09 11:30:58
Изменение: 👤 Исполнитель
Значение: Oleksii K
changed 2026-03-09 11:30:53
Изменение: 🏷️ Статус
Значение: Готово
changed 2026-03-06 11:27:03
Изменение: 🏷️ Статус
Значение: Перевірка
changed 2026-03-03 11:39:52
Изменение: 🏷️ Статус
Значение: В роботі
changed 2026-03-02 16:34:17
Изменение: 🏷️ Статус
Значение: Заплановано
changed 2026-03-02 16:34:12
Изменение: 👤 Исполнитель
Значение: Oleksandr Kyselov
added 2026-03-02 16:24:59
Изменение: 🏷️ Статус
Значение: Backlog