|
4 | 4 | Перем Лог;
|
5 | 5 | Перем КомандыПлагина;
|
6 | 6 | Перем ВызватьОшибку;
|
| 7 | +Перем ПрефиксЗадачи; |
| 8 | +Перем МинимальноеКоличествоЗадач; |
| 9 | +Перем МаксимальноеКоличествоЗадач; |
7 | 10 |
|
8 | 11 | #Область Интерфейс_плагина
|
9 | 12 |
|
|
67 | 70 |
|
68 | 71 | Процедура ПриРегистрацииКомандыПриложения(ИмяКоманды, КлассРеализации) Экспорт
|
69 | 72 |
|
70 |
| - Лог.Отладка("Ищю команду <%1> в списке поддерживаемых", ИмяКоманды); |
| 73 | + Лог.Отладка("Ищу команду <%1> в списке поддерживаемых", ИмяКоманды); |
71 | 74 | Если КомандыПлагина.Найти(ИмяКоманды) = Неопределено Тогда
|
72 | 75 | Возврат;
|
73 | 76 | КонецЕсли;
|
|
77 | 80 | КлассРеализации.Опция("C error-comment", Ложь, "[*check-comments] флаг вызова ошибки при отсутствии текста комментария")
|
78 | 81 | .Флаговый();
|
79 | 82 |
|
| 83 | + КлассРеализации.Опция("task-prefix", "", "[*check-comments] Префикс задачи.") |
| 84 | + .ВОкружении("GITSYNC_TASK_PREFIX") |
| 85 | + .Обязательный(Ложь); |
| 86 | + |
| 87 | + КлассРеализации.Опция("min-task-count", 0, СтрШаблон("[*check-comments] Минимальное количество упоминаний задач")) |
| 88 | + .ТЧисло() |
| 89 | + .Обязательный(Ложь); |
| 90 | + |
| 91 | + КлассРеализации.Опция("max-task-count", 0, СтрШаблон("[*check-comments] Максимальное количество упоминаний задач")) |
| 92 | + .ТЧисло() |
| 93 | + .Обязательный(Ложь); |
| 94 | + |
80 | 95 | КонецПроцедуры
|
81 | 96 |
|
82 | 97 | Процедура ПриПолученииПараметров(ПараметрыКоманды) Экспорт
|
83 | 98 |
|
84 | 99 | ВызватьОшибку = ПараметрыКоманды.Параметр("error-comment", Ложь);
|
85 | 100 |
|
86 | 101 | ВызватьОшибку = Булево(ВызватьОшибку);
|
87 |
| - |
88 | 102 | Лог.Отладка("Получаю параметр <error-comment> значение <%1>", ВызватьОшибку);
|
89 |
| - |
| 103 | + |
| 104 | + ПрефиксЗадачи = ПараметрыКоманды.Параметр("task-prefix", ""); |
| 105 | + Лог.Отладка("Получаю параметр <task-prefix> значение <%1>", ПрефиксЗадачи); |
| 106 | + |
| 107 | + МинимальноеКоличествоЗадач = ПараметрыКоманды.Параметр("min-task-count", 0); |
| 108 | + Лог.Отладка("Получаю параметр <min-task-count> значение <%1>", МинимальноеКоличествоЗадач); |
| 109 | + |
| 110 | + МаксимальноеКоличествоЗадач = ПараметрыКоманды.Параметр("max-task-count", 0); |
| 111 | + Лог.Отладка("Получаю параметр <max-task-count> значение <%1>", МаксимальноеКоличествоЗадач); |
| 112 | + |
90 | 113 | КонецПроцедуры
|
91 | 114 |
|
92 | 115 | Процедура ПередОбработкойВерсииХранилища(СтрокаВерсии, СледующаяВерсия) Экспорт
|
93 | 116 |
|
94 |
| - Если ПустаяСтрока(СтрокаВерсии.Комментарий) Тогда |
95 |
| - СтрокаОшибки = СтрШаблон("Нашли следующую версию <%1> от автора <%2>, а комментарий не задан!", |
96 |
| - СледующаяВерсия, |
97 |
| - СтрокаВерсии.Автор); |
98 |
| - Лог.КритичнаяОшибка(СтрокаОшибки); |
| 117 | + ПроверитьЗаполненностьКомментария(СтрокаВерсии, СледующаяВерсия); |
| 118 | + |
| 119 | + ПроверитьКомментарийНаНаличиеУпоминанийЗадач(СтрокаВерсии, СледующаяВерсия); |
| 120 | + |
| 121 | +КонецПроцедуры |
| 122 | + |
| 123 | +Процедура ПроверитьЗаполненностьКомментария(СтрокаВерсии, СледующаяВерсия) |
99 | 124 |
|
| 125 | + Если Не ПустаяСтрока(СтрокаВерсии.Комментарий) Тогда |
| 126 | + Возврат; |
| 127 | + КонецЕсли; |
| 128 | + |
| 129 | + СтрокаОшибки = СтрШаблон("Версия <%1> от автора <%2>: комментарий не задан", |
| 130 | + СледующаяВерсия, |
| 131 | + СтрокаВерсии.Автор); |
| 132 | + Лог.КритичнаяОшибка(СтрокаОшибки); |
| 133 | + |
| 134 | + Если ВызватьОшибку Тогда |
| 135 | + |
| 136 | + ВызватьИсключение СтрокаОшибки; |
| 137 | + |
| 138 | + КонецЕсли; |
| 139 | + |
| 140 | +КонецПроцедуры |
| 141 | + |
| 142 | +Процедура ПроверитьКомментарийНаНаличиеУпоминанийЗадач(СтрокаВерсии, СледующаяВерсия) |
| 143 | + |
| 144 | + Если ПустаяСтрока(ПрефиксЗадачи) Или ПустаяСтрока(СтрокаВерсии.Комментарий) Тогда |
| 145 | + Возврат; |
| 146 | + КонецЕсли; |
| 147 | + |
| 148 | + РВ = Новый РегулярноеВыражение(СтрШаблон("%1-%2", ПрефиксЗадачи, "\d")); |
| 149 | + Совпадения = РВ.НайтиСовпадения(СтрокаВерсии.Комментарий); |
| 150 | + КоличествоВхождений = Совпадения.количество(); |
| 151 | + |
| 152 | + Если КоличествоВхождений < МинимальноеКоличествоЗадач Тогда |
| 153 | + СтрокаОшибки = СтрШаблон("Версия <%1> от автора <%2>: количество упоминаний задач %3 (%4) меньше требуемого (%5)", |
| 154 | + СледующаяВерсия, |
| 155 | + СтрокаВерсии.Автор, ПрефиксЗадачи, КоличествоВхождений, МинимальноеКоличествоЗадач); |
| 156 | + |
| 157 | + Лог.КритичнаяОшибка(СтрокаОшибки); |
| 158 | + |
100 | 159 | Если ВызватьОшибку Тогда
|
101 | 160 |
|
102 | 161 | ВызватьИсключение СтрокаОшибки;
|
103 | 162 |
|
104 | 163 | КонецЕсли;
|
105 |
| - |
| 164 | + |
106 | 165 | КонецЕсли;
|
| 166 | + |
| 167 | + Если КоличествоВхождений > МаксимальноеКоличествоЗадач Тогда |
| 168 | + СтрокаОшибки = СтрШаблон("Версия <%1> от автора <%2>: количество упоминаний задач %3 (%4) больше требуемого (%5)", |
| 169 | + СледующаяВерсия, |
| 170 | + СтрокаВерсии.Автор, ПрефиксЗадачи, КоличествоВхождений, МаксимальноеКоличествоЗадач); |
| 171 | + |
| 172 | + Лог.КритичнаяОшибка(СтрокаОшибки); |
| 173 | + |
| 174 | + Если ВызватьОшибку Тогда |
107 | 175 |
|
108 |
| -КонецПроцедуры |
| 176 | + ВызватьИсключение СтрокаОшибки; |
109 | 177 |
|
| 178 | + КонецЕсли; |
| 179 | + |
| 180 | + КонецЕсли; |
| 181 | + |
| 182 | +КонецПроцедуры |
110 | 183 | #КонецОбласти
|
111 | 184 |
|
112 | 185 | Процедура Инициализация()
|
|
0 commit comments