-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclang-format_all_tree.sh
More file actions
87 lines (74 loc) · 3.1 KB
/
clang-format_all_tree.sh
File metadata and controls
87 lines (74 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/bin/bash
# Проверяем, установлен ли clang-format
if ! command -v clang-format &> /dev/null; then
echo "Ошибка: clang-format не установлен. Пожалуйста, установите его сначала."
exit 1
fi
# Путь к файлу .clang-format в текущей директории
CLANG_FORMAT_FILE=".clang-format"
# Путь к исходному файлу .clang-format
SOURCE_CLANG_FORMAT="../materials/linters/.clang-format"
# Проверяем наличие .clang-format в текущей папке
if [ ! -f "$CLANG_FORMAT_FILE" ]; then
echo "Файл .clang-format не найден в текущей директории."
# Проверяем наличие исходного файла
if [ -f "$SOURCE_CLANG_FORMAT" ]; then
echo "Копирую .clang-format из $SOURCE_CLANG_FORMAT..."
cp "$SOURCE_CLANG_FORMAT" "$CLANG_FORMAT_FILE"
if [ $? -ne 0 ]; then
echo "Ошибка при копировании .clang-format"
exit 1
fi
else
echo "Ошибка: исходный файл $SOURCE_CLANG_FORMAT не найден."
exit 1
fi
fi
# Ищем все файлы .c и .h в текущей директории и поддиректориях
files=$(find . -type f \( -name "*.c" -o -name "*.h" \))
if [ -z "$files" ]; then
echo "Не найдено файлов .c или .h для проверки."
exit 0
fi
echo "Проверка форматирования файлов с помощью clang-format..."
has_errors=0
for file in $files; do
# Проверяем, нужно ли форматирование
if ! clang-format --style=file --dry-run --Werror "$file" &> /dev/null; then
echo "Ошибка форматирования в файле: $file"
has_errors=1
fi
done
if [ $has_errors -eq 0 ]; then
echo "Все файлы соответствуют clang-format."
exit 0
else
echo ""
echo "Найдены файлы, не соответствующие clang-format:"
for file in $files; do
if ! clang-format --style=file --dry-run --Werror "$file" &> /dev/null; then
echo " $file"
fi
done
echo ""
read -p "Хотите автоматически отформатировать эти файлы? (y/n): " choice
case "$choice" in
y|Y)
echo "Форматирование файлов..."
for file in $files; do
if ! clang-format --style=file --dry-run --Werror "$file" &> /dev/null; then
clang-format --style=file -i "$file"
echo "Отформатирован: $file"
fi
done
echo "Форматирование завершено."
;;
n|N)
echo "Форматирование отменено. Файлы остались без изменений."
;;
*)
echo "Неверный ввод. Форматирование отменено."
;;
esac
exit 1
fi