Skip to content

Commit dd84a56

Browse files
authored
Добавление опции -o, --output (Stivo182#5)
1 parent bf0335e commit dd84a56

14 files changed

+365
-60
lines changed

.bsl-language-server.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"listOfIncorrectFirstSymbol": ";|,\\s*\\S+"
66
},
77
"Typo": {
8-
"userWordsToIgnore": "Обновлятор,Парсинга,парсинге"
8+
"userWordsToIgnore": "Обновлятор,Парсинга,парсинге,Дто,Десериализатор"
99
}
1010
}
1111
}

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ opm install
3737

3838
**Синтаксис:**
3939
```bash
40-
depos check [--packagedef <путь>] [-d|--deprecated] [-f|--filter <фильтр>] [-t|--target <тип>]
40+
depos check [--packagedef <путь>] [-d|--deprecated] [-f|--filter <фильтр>] [-t|--target <тип>] [-o|--output <файл>]
4141
```
4242

4343
| Опция | Описание |
@@ -46,6 +46,7 @@ depos check [--packagedef <путь>] [-d|--deprecated] [-f|--filter <фильт
4646
| -d, --deprecated | Показывать только устаревшие пакеты. |
4747
| -f, --filter <фильтр> | Фильтр пакетов по именам (через запятую или пробел), шаблону (`*`, `?`) или регулярному выражению. |
4848
| -t, --target <тип> | Тип целевой версии (_по умолчанию_: `latest`): <br>- `latest` - последняя доступная версия пакета.<br>- `minor` - последняя минорная или патч-версия в пределах основной версии.<br>- `patch` - последняя патч-версия в пределах минорной версии. |
49+
| -o, --output <файл> | Экспорт результатов проверки в JSON-файл. |
4950

5051
**Примеры использования:**
5152

@@ -56,7 +57,7 @@ depos check
5657
# Указание конкретного манифеста
5758
depos check --packagedef /path/to/my-project/packagedef
5859

59-
# Проверка только до минорных весрий
60+
# Проверка только до минорных версий
6061
depos check --target minor
6162

6263
# Показать только устаревшие пакеты
@@ -94,7 +95,7 @@ depos check -f '/^autumn-.*$/'
9495
9596
**Синтаксис:**
9697
```bash
97-
depos upgrade [--packagedef <путь>] [--backup] [-f|--filter <фильтр>] [-t|--target <тип>]
98+
depos upgrade [--packagedef <путь>] [--backup] [-f|--filter <фильтр>] [-t|--target <тип>] [-o|--output <файл>]
9899
```
99100

100101
| Опция | Описание |
@@ -103,6 +104,7 @@ depos upgrade [--packagedef <путь>] [--backup] [-f|--filter <фильтр>]
103104
| --backup | Создать резервную копию файла `packagedef` перед изменением. |
104105
| -f, --filter <фильтр> | Фильтр пакетов по именам (через запятую или пробел), шаблону (`*`, `?`) или регулярному выражению. |
105106
| -t, --target <тип> | Тип целевой версии (_по умолчанию_: `latest`): <br>- `latest` - последняя доступная версия пакета.<br>- `minor` - последняя минорная или патч-версия в пределах основной версии.<br>- `patch` - последняя патч-версия в пределах минорной версии. |
107+
| -o, --output <файл> | Экспорт отчета об обновлениях в JSON-файл. |
106108

107109
**Примеры использования:**
108110

packagedef

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
.ЗависитОт("semver", "1.0.0")
1818
.ЗависитОт("coloratos", "0.3.0")
1919
.ЗависитОт("fs", "1.2.0")
20+
.ЗависитОт("jason", "0.3.0")
2021
.РазработкаЗависитОт("asserts")
2122
.РазработкаЗависитОт("1testrunner")
2223
.РазработкаЗависитОт("coverage")

src/cmd/Классы/КомандаCheck.os

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@
4040
)
4141
Перем _ТипВерсии; // Строка, Неопределено
4242

43+
&Опция(Имя = "o output", Описание = "Экспорт результатов проверки в JSON-файл")
44+
&ТСтрока
45+
Перем _ИмяФайлаВывода; // Строка
46+
4347
#КонецОбласти
4448

4549
#Область ОписаниеПеременных
@@ -103,8 +107,15 @@
103107
Возврат;
104108
КонецЕсли;
105109

106-
_КонсольныйВыводЗависимостей.ВывестиКакПроверенные(ЦелевыеЗависимости, ИсходныеЗависимости);
107-
ВывестиКоличествоОбновлений(КоличествоОбновлений(ЦелевыеЗависимости, ИсходныеЗависимости));
110+
ИзмененияЗависимостей = ЦелевыеЗависимости.ВычислитьИзменения(ИсходныеЗависимости);
111+
112+
_КонсольныйВыводЗависимостей.ВывестиКакПроверенные(ИзмененияЗависимостей);
113+
ВывестиКоличествоОбновлений(КоличествоОбновлений(ИзмененияЗависимостей));
114+
115+
Если ЗначениеЗаполнено(_ИмяФайлаВывода) Тогда
116+
Экспортер = Новый ЭкспортерИзмененийЗависимостей();
117+
Экспортер.Записать(ИзмененияЗависимостей, _ИмяФайлаВывода);
118+
КонецЕсли;
108119

109120
КонецПроцедуры
110121

@@ -120,20 +131,15 @@
120131

121132
КонецПроцедуры
122133

123-
Функция КоличествоОбновлений(ЦелевыеЗависимости, ИсходныеЗависимости)
134+
Функция КоличествоОбновлений(ИзмененияЗависимостей)
124135

125136
Количество = 0;
126-
ТаблицаИсходные = ИсходныеЗависимости.ВТаблицу();
127-
128-
Для Каждого СтрокаЦелевая Из ЦелевыеЗависимости.ВТаблицу() Цикл
129-
130-
СтрокаИсходная = ТаблицаИсходные.Найти(СтрокаЦелевая.ИмяПакета, "ИмяПакета");
131-
ИсходнаяВерсия = ?(СтрокаИсходная = Неопределено, "", СтрокаИсходная.МинимальнаяВерсия);
132137

133-
Если ЗначениеЗаполнено(ИсходнаяВерсия) И СтрокаЦелевая.МинимальнаяВерсия <> ИсходнаяВерсия Тогда
138+
Для Каждого СтрокаИзменения Из ИзмененияЗависимостей Цикл
139+
Если ЗначениеЗаполнено(СтрокаИзменения.МинимальнаяВерсияДо)
140+
И СтрокаИзменения.МинимальнаяВерсияДо <> СтрокаИзменения.МинимальнаяВерсияПосле Тогда
134141
Количество = Количество + 1;
135142
КонецЕсли;
136-
137143
КонецЦикла;
138144

139145
Возврат Количество;

src/cmd/Классы/КомандаDoctor.os

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
#Использовать coloratos
2+
#Использовать "../../core"
3+
#Использовать "../../internal"
24

35
#Область Опции
46

src/cmd/Классы/КомандаUpgrade.os

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
#Использовать coloratos
2+
#Использовать "../../core"
3+
#Использовать "../../internal"
24

35
#Область Опции
46

@@ -38,6 +40,10 @@
3840
&ПоУмолчанию(Ложь)
3941
Перем _СохранятьКопию; // Булево
4042

43+
&Опция(Имя = "o output", Описание = "Экспорт отчета об обновлениях в JSON-файл (.json)")
44+
&ТСтрока
45+
Перем _ИмяФайлаВывода; // Строка
46+
4147
#КонецОбласти
4248

4349
#Область ОписаниеПеременных
@@ -102,7 +108,9 @@
102108
Возврат;
103109
КонецЕсли;
104110

105-
_КонсольныйВыводЗависимостей.ВывестиКакОбновленные(ЦелевыеЗависимости, ИсходныеЗависимости);
111+
ИзмененияЗависимостей = ЦелевыеЗависимости.ВычислитьИзменения(ИсходныеЗависимости);
112+
113+
_КонсольныйВыводЗависимостей.ВывестиКакОбновленные(ИзмененияЗависимостей);
106114

107115
ОбновляторЗависимостей
108116
.СохранятьКопию(_СохранятьКопию)
@@ -111,4 +119,9 @@
111119
Консоль.ВывестиСтроку(" ");
112120
ЦветнойВывод.ВывестиСтроку("Выполните (opm install|#color=Желтый) для установки новых версий пакетов.");
113121

122+
Если ЗначениеЗаполнено(_ИмяФайлаВывода) Тогда
123+
Экспортер = Новый ЭкспортерИзмененийЗависимостей();
124+
Экспортер.Записать(ИзмененияЗависимостей, _ИмяФайлаВывода);
125+
КонецЕсли;
126+
114127
КонецПроцедуры

src/core/Классы/ЗависимостиПакета.os

Lines changed: 54 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@
5252
//
5353
// Параметры:
5454
// Зависимости - ТаблицаЗначений - Таблица с данными о зависимостях пакетов:
55-
// * ИмяПакета - Строка - Имя пакета
56-
// * ДляРазработки - Булево - Признак зависимости для разработки
57-
// * МинимальнаяВерсия - Строка - Минимально допустимая версия
55+
// * ИмяПакета - Строка - Имя пакета
56+
// * ДляРазработки - Булево - Признак зависимости для разработки
57+
// * МинимальнаяВерсия - Строка - Минимально допустимая версия
5858
// * МаксимальнаяВерсия - Строка - Максимально допустимая версия
5959
//
6060
// Возвращаемое значение:
@@ -108,10 +108,10 @@
108108
// Добавляет новую зависимость в коллекцию.
109109
//
110110
// Параметры:
111-
// ИмяПакета - Строка - Имя пакета
112-
// МинимальнаяВерсия - Строка - Минимально допустимая версия
111+
// ИмяПакета - Строка - Имя пакета
112+
// МинимальнаяВерсия - Строка - Минимально допустимая версия
113113
// МаксимальнаяВерсия - Строка - Максимально допустимая версия
114-
// ДляРазработки - Булево - Признак зависимости для разработки
114+
// ДляРазработки - Булево - Признак зависимости для разработки
115115
//
116116
// Возвращаемое значение:
117117
// ЭтотОбъект - Для поддержки цепочки вызовов.
@@ -123,8 +123,8 @@
123123
// Добавляет новую зависимость для разработки.
124124
//
125125
// Параметры:
126-
// ИмяПакета - Строка - Имя пакета
127-
// МинимальнаяВерсия - Строка - Минимально допустимая версия
126+
// ИмяПакета - Строка - Имя пакета
127+
// МинимальнаяВерсия - Строка - Минимально допустимая версия
128128
// МаксимальнаяВерсия - Строка - Максимально допустимая версия
129129
//
130130
// Возвращаемое значение:
@@ -138,9 +138,9 @@
138138
//
139139
// Возвращаемое значение:
140140
// ТаблицаЗначений:
141-
// * ИмяПакета - Строка - Имя пакета
142-
// * ДляРазработки - Булево - Признак зависимости для разработки
143-
// * МинимальнаяВерсия - Строка - Минимально допустимая версия
141+
// * ИмяПакета - Строка - Имя пакета
142+
// * ДляРазработки - Булево - Признак зависимости для разработки
143+
// * МинимальнаяВерсия - Строка - Минимально допустимая версия
144144
// * МаксимальнаяВерсия - Строка - Максимально допустимая версия
145145
Функция ВТаблицу() Экспорт
146146
Возврат _Зависимости.Скопировать();
@@ -155,6 +155,49 @@
155155
Возврат _Зависимости.Количество() = 0;
156156
КонецФункции
157157

158+
// Вычисляет изменения в зависимостях по сравнению с другой коллекцией
159+
// и формирует таблицу с результатами.
160+
//
161+
// Параметры:
162+
// Зависимости - ЗависимостиПакета - Коллекция исходных зависимостей для сравнения.
163+
//
164+
// Возвращаемое значение:
165+
// ТаблицаЗначений:
166+
// * ИмяПакета - Строка - Имя пакета
167+
// * ДляРазработки - Булево - Признак зависимости для разработки
168+
// * МинимальнаяВерсияДо - Строка - Версия в исходной коллекции
169+
// * МинимальнаяВерсияПосле - Строка - Версия в текущей коллекции
170+
// * МаксимальнаяВерсия - Строка - Максимальная версия
171+
Функция ВычислитьИзменения(Зависимости) Экспорт
172+
173+
ТаблицаИсходная = Зависимости.ВТаблицу();
174+
ТипСтрока = Новый ОписаниеТипов("Строка");
175+
176+
Результат = Новый ТаблицаЗначений();
177+
Результат.Колонки.Добавить("ИмяПакета", ТипСтрока);
178+
Результат.Колонки.Добавить("ДляРазработки", Новый ОписаниеТипов("Булево"));
179+
Результат.Колонки.Добавить("МинимальнаяВерсияДо", ТипСтрока);
180+
Результат.Колонки.Добавить("МинимальнаяВерсияПосле", ТипСтрока);
181+
Результат.Колонки.Добавить("МаксимальнаяВерсия", ТипСтрока);
182+
183+
Для Каждого СтрокаТекущая Из _Зависимости Цикл
184+
185+
СтрокаРезультата = Результат.Добавить();
186+
СтрокаРезультата.ИмяПакета = СтрокаТекущая.ИмяПакета;
187+
СтрокаРезультата.ДляРазработки = СтрокаТекущая.ДляРазработки;
188+
СтрокаРезультата.МинимальнаяВерсияПосле = СтрокаТекущая.МинимальнаяВерсия;
189+
СтрокаРезультата.МаксимальнаяВерсия = СтрокаТекущая.МаксимальнаяВерсия;
190+
191+
СтрокаСопоставляемая = ТаблицаИсходная.Найти(СтрокаТекущая.ИмяПакета, "ИмяПакета");
192+
Если Не СтрокаСопоставляемая = Неопределено Тогда
193+
СтрокаРезультата.МинимальнаяВерсияДо = СтрокаСопоставляемая.МинимальнаяВерсия;
194+
КонецЕсли;
195+
КонецЦикла;
196+
197+
Возврат Результат;
198+
199+
КонецФункции
200+
158201
#КонецОбласти
159202

160203
#Область СлужебныеПроцедурыИФункции

0 commit comments

Comments
 (0)