SHA256
77 lines
2.4 KiB
Bash
77 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# OUTFILE:
|
|
# - если пустая строка ("") -> в файл НЕ пишем, только в буфер
|
|
# - если не пустая -> пишем в файл + (если есть wl-copy) копируем в буфер
|
|
OUTFILE="all_files.txt"
|
|
# OUTFILE=""
|
|
|
|
# === НАСТРОЙКА: перечисляй тут пути (каталоги и/или конкретные файлы) ===
|
|
# - Если путь указывает на ФАЙЛ: берём его ВСЕГДА, даже если это не .java
|
|
# - Если путь указывает на КАТАЛОГ: рекурсивно берём только *.java внутри
|
|
# - Пустые строки игнорируются
|
|
TARGETS=(
|
|
#"./src/main/java"
|
|
# "./server"
|
|
# /home/ai/work/SHiNE/SHiNE-server/shine-server-blockchain
|
|
"/home/ai/work/SHiNE/SHiNE-server/shine-server-blockchain"
|
|
"/home/ai/work/SHiNE/SHiNE-server/shine-server-db"
|
|
)
|
|
|
|
RED=$'\033[0;31m'
|
|
RESET=$'\033[0m'
|
|
|
|
warn_red() {
|
|
echo "${RED}WARN:${RESET} $*" >&2
|
|
}
|
|
|
|
# временные файлы
|
|
TMP_LIST="$(mktemp)"
|
|
TMP_OUT="$(mktemp)"
|
|
trap 'rm -f "$TMP_LIST" "$TMP_OUT"' EXIT
|
|
|
|
# собрать пути
|
|
for path in "${TARGETS[@]}"; do
|
|
path="$(printf '%s' "$path" | sed -e 's/^[[:space:]]\+//' -e 's/[[:space:]]\+$//')"
|
|
[[ -z "$path" ]] && continue
|
|
|
|
if [[ -f "$path" ]]; then
|
|
printf '%s\n' "$path" >> "$TMP_LIST"
|
|
elif [[ -d "$path" ]]; then
|
|
find "$path" -type f -name "*.java" >> "$TMP_LIST"
|
|
else
|
|
warn_red "Не найдено (пропускаю): $path"
|
|
fi
|
|
done
|
|
|
|
# склеиваем в TMP_OUT
|
|
sort -u "$TMP_LIST" | while IFS= read -r f; do
|
|
if [[ ! -f "$f" ]]; then
|
|
warn_red "Файл исчез (пропускаю): $f"
|
|
continue
|
|
fi
|
|
cat "$f" >> "$TMP_OUT"
|
|
echo >> "$TMP_OUT"
|
|
done
|
|
|
|
# если OUTFILE не пуст — пишем файл
|
|
if [[ -n "${OUTFILE:-}" ]]; then
|
|
: > "$OUTFILE"
|
|
cat "$TMP_OUT" > "$OUTFILE"
|
|
fi
|
|
|
|
# копирование в буфер (Wayland), если доступно
|
|
if command -v wl-copy >/dev/null 2>&1; then
|
|
wl-copy < "$TMP_OUT"
|
|
else
|
|
warn_red "wl-copy не найден — в буфер не скопировано."
|
|
fi
|
|
|
|
echo "Готово!"
|
|
if [[ -n "${OUTFILE:-}" ]]; then
|
|
echo "Все файлы собраны в $OUTFILE"
|
|
else
|
|
echo "OUTFILE пуст — в файл не писали, только буфер (если wl-copy доступен)"
|
|
fi
|