1
+ #! /bin/bash
2
+
3
+ # Вывод заголовка скрипта
4
+ printf " \nЗапущен скрипт, проверяющий, отличается ли текущая версия релиза от предыдущей.\n\n"
5
+
6
+ # Определение имени ветки с изменениями
7
+ FEATURE_BRANCH_NAME=" feature"
8
+
9
+ # Определение имени временной директории
10
+ TMP_FOLDER_NAME=" tmp"
11
+
12
+ # Определение начального числа ошибок
13
+ ERROR_COUNT=0
14
+
15
+ # Определения функций для проверки версий
16
+
17
+ function check_module_version {
18
+
19
+ printf " \nПроверяется версия модуля в следующем файле:\n"
20
+ echo " $1 "
21
+
22
+ # Избегание пробелов в аргументе
23
+ CURRENT_TAG_WITHOUT_V=$( echo " $CURRENT_TAG " | sed s/v//)
24
+ if [ " $( grep __version__ " $1 " | head -1) " == " __version__ = '$CURRENT_TAG_WITHOUT_V '" ]; then
25
+
26
+ printf " \nВерсия в этом файле совпадает с текущей.\n"
27
+
28
+ else
29
+
30
+ printf " \nВерсия в этом файле НЕ совпадает с текущей.\n"
31
+ ERROR_COUNT=$(( ERROR_COUNT+ 1 ))
32
+
33
+ fi
34
+
35
+ }
36
+
37
+ function run_version_checks {
38
+
39
+ check_module_version " setup.py"
40
+
41
+ }
42
+
43
+ # Переход на ветку master
44
+ git checkout -q master
45
+
46
+ # Сохранение тега последнего коммита на master в переменную
47
+ MASTER_TAG=" $( git describe --tags master) "
48
+
49
+ printf " Тег на master:\n"
50
+ echo $MASTER_TAG
51
+
52
+ # Переход на ветку изменений
53
+ git checkout -q $FEATURE_BRANCH_NAME
54
+
55
+ # Получение текущего тега
56
+ CURRENT_TAG=" $( grep -o " release\-v.*\-informational" README.md | grep -o " \-.*\-" | sed ' s/-//g' ) "
57
+
58
+ printf " \nТекущий тег из README.md:\n"
59
+ echo $CURRENT_TAG
60
+
61
+ # Проверка, изменился ли текущий тег
62
+ if [ $CURRENT_TAG == $MASTER_TAG ]; then
63
+
64
+ printf " \nТекущий тег и тег на master совпадают. Обновите текущий тег"
65
+ printf " \nв соответствии с установками Semantic Versioning.\n\n"
66
+
67
+ exit 1
68
+
69
+ fi
70
+
71
+ # Запуск указанных проверок
72
+ run_version_checks
73
+
74
+ # Избегание точек в текущем теге
75
+ CURRENT_TAG=" $( echo $CURRENT_TAG | sed ' s/v//' | sed ' s/\./\\./g' ) "
76
+
77
+ # Проверка, совпадает ли другой тег в README.md
78
+ if ! grep -q " releases/tag/v$CURRENT_TAG " README.md; then
79
+
80
+ printf " \nУказанные теги различаются в README.md.\n\n"
81
+
82
+ exit 1
83
+
84
+ fi
85
+
86
+ # Проверка числа ошибок
87
+ if [ " $ERROR_COUNT " -gt 0 ]; then
88
+
89
+ printf " \nЧисло ошибок: $ERROR_COUNT \n\n"
90
+ exit 1
91
+
92
+ else
93
+
94
+ printf " \nВсё в порядке.\n"
95
+
96
+ fi
0 commit comments