11#Использовать fluent
2+ #Использовать logos
3+
4+ Перем Лог ;
25
36///////////////////////////////////////////////////////////////////////////////////////////////////
47// Прикладной интерфейс
811 КомандаПриложения.Опция("q quiet" , Ложь , """ Тихий"" режим вывода без лишних сообщений." );
912 КомандаПриложения.Опция("r remote" , Ложь , "Вывести список пакетов в хабе" );
1013 КомандаПриложения.Опция("a all" , Ложь , "Вывести список всех пакетов установленных и доступных в хабе" );
14+ КомандаПриложения.Опция("p path" , Ложь , "Выводить путь к пакетам" );
1115
1216КонецПроцедуры
1317
1721 ВыводВсехПакетов = КомандаПриложения.ЗначениеОпции("all" );
1822 ВыводПакетовНаХабе = КомандаПриложения.ЗначениеОпции("remote" ) ИЛИ ВыводВсехПакетов;
1923 ВыводУстановленныхПакетов = НЕ КомандаПриложения.ЗначениеОпции("remote" ) ИЛИ ВыводВсехПакетов;
24+ ВыводитьПутьКПакетам = КомандаПриложения.ЗначениеОпции("path" );
2025
2126 Если ВыводВсехПакетов Тогда
2227
3035
3136 МенеджерПолучения = Новый МенеджерПолученияПакетов();
3237 ДоступныеПакеты = МенеджерПолучения.ПолучитьДоступныеПакеты();
33-
34- ПутьККаталогуПакетов = ПолучитьЗначениеСистемнойНастройки("lib.system" );
35- КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов(ПутьККаталогуПакетов);
38+
39+ КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов;
3640 УстановленныеПакеты = КэшУстановленныхПакетов.ПолучитьУстановленныеПакеты();
3741
3842 Если НЕ ТихийРежим Тогда
3943 Сообщить (ТекстСообщения);
4044 КонецЕсли ;
4145
4246 Пакеты = Новый ТаблицаЗначений();
43- Пакеты.Колонки.Добавить("ИмяПакета" );
44- Пакеты.Колонки.Добавить("ИменаСерверов" );
45- Пакеты.Колонки.Добавить("Версия" );
46- Пакеты.Колонки.Добавить("Выводить" );
47+ Пакеты.Колонки.Добавить("ИмяПакета" , , "Пакет" );
48+ Пакеты.Колонки.Добавить("ИменаСерверов" , , "Имена серверов" );
49+ Пакеты.Колонки.Добавить("Версия" , , "Версия" );
50+ Пакеты.Колонки.Добавить("Выводить" , , "" );
51+ Пакеты.Колонки.Добавить("КаталогПакета" , , ? (ВыводитьПутьКПакетам, "Каталог пакета" , "" ));
4752
4853 Для Каждого ДоступныйПакет Из ДоступныеПакеты Цикл
4954
6267 КонецЦикла ;
6368
6469 Для Каждого УстановленныйПакет Из УстановленныеПакеты Цикл
70+
6571 ИмяПакета = УстановленныйПакет.Ключ;
6672 ОписаниеПакета = УстановленныйПакет.Значение.МетаданныеПакета;
6773 Версия = "<НЕТ>" ;
6874 Если ТипЗнч (ОписаниеПакета) <> Тип ("Булево" ) Тогда
6975 Версия = ОписаниеПакета.Свойства().Версия;
7076 КонецЕсли ;
7177
72- ДобавленныйПакет = Пакеты.НайтиСтроки(Новый Структура("ИмяПакета" , ИмяПакета));
73- Если ДобавленныйПакет.Количество() Тогда
74- ДобавленныйПакет[0 ].Версия = Версия;
75- ДобавленныйПакет[0 ].Выводить = ИСТИНА ; // Пакет есть и на хабе и локально, стоит вывести
76- Продолжить ;
78+ ДобавленныйПакет = Пакеты.НайтиСтроки(Новый Структура("ИмяПакета" , ИмяПакета));
79+ Если ЗначениеЗаполнено (ДобавленныйПакет) Тогда
80+ ИнфоОПакете = ДобавленныйПакет[0 ];
81+ ИнфоОПакете.Выводить = Истина ; // Пакет есть и на хабе и локально, стоит вывести
82+ Иначе
83+ ИнфоОПакете = Пакеты.Добавить();
84+ ИнфоОПакете.ИмяПакета = ИмяПакета;
85+ ИнфоОПакете.Выводить = ВыводУстановленныхПакетов;
86+ ИнфоОПакете.ИменаСерверов = "Локальный" ;
7787 КонецЕсли ;
78-
79- ИнфоОПакете = Пакеты.Добавить();
80- ИнфоОПакете.ИмяПакета = ИмяПакета;
88+
8189 ИнфоОПакете.Версия = Версия;
82- ИнфоОПакете.ИменаСерверов = "Локальный" ;
83- ИнфоОПакете.Выводить = ВыводУстановленныхПакетов;
90+ ИнфоОПакете.КаталогПакета = УстановленныйПакет.Значение.КаталогПакета;
8491
8592 КонецЦикла ;
8693
94101
95102КонецПроцедуры
96103
97- Процедура ВывестиИнформациюОПакетах (Пакеты )
98-
99- ДлинаИмени = СтрДлина ("Пакет" );
100- ДлинаИменСерверов = СтрДлина ("Имена серверов" );
101- ДлинаВерсии = СтрДлина ("Версия" );
104+ Процедура ВывестиИнформациюОПакетах (Знач Пакеты )
105+
106+ Длины = Новый Массив;
107+ Для НомерКолонки = 0 По Пакеты.Колонки.Количество() - 1 Цикл
108+ Длины.Добавить(СтрДлина (Пакеты.Колонки[НомерКолонки].Заголовок));
109+ КонецЦикла ;
102110
103111 Для Каждого ИнфоОПакете Из Пакеты Цикл
104112
105113 Если НЕ ИнфоОПакете.Выводить Тогда
106114 Продолжить ;
107115 КонецЕсли ;
108116
109- ДлинаИмени = Макс (СтрДлина (ИнфоОПакете.ИмяПакета), ДлинаИмени);
110- ДлинаВерсии = Макс (СтрДлина (ИнфоОПакете.Версия), ДлинаВерсии);
111- ДлинаИменСерверов = Макс (СтрДлина (ИнфоОПакете.ИменаСерверов), ДлинаИменСерверов);
117+ Для НомерКолонки = 0 По Пакеты.Колонки.Количество() - 1 Цикл
118+
119+ Колонка = Пакеты.Колонки[НомерКолонки];
120+ Если ЗначениеЗаполнено (Колонка.Заголовок) Тогда
121+ Длины[НомерКолонки] = Макс (СтрДлина (ИнфоОПакете[Колонка.Имя]), Длины[НомерКолонки]);
122+ КонецЕсли ;
123+
124+ КонецЦикла ;
112125
113126 КонецЦикла ;
114127
115- ВывестиШапкуИнфо(ДлинаИмени , ДлинаВерсии , ДлинаИменСерверов );
128+ ВывестиШапкуИнфо(Пакеты , Длины );
116129 Для Каждого ИнфоОПакете Из Пакеты Цикл
117130
118131 Если НЕ ИнфоОПакете.Выводить Тогда
119132 Продолжить ;
120133 КонецЕсли ;
121134
122- ВывестиСтрокуИнфо(ДлинаИмени , ИнфоОПакете.ИмяПакета , ДлинаВерсии , ИнфоОПакете.Версия , ДлинаИменСерверов , ИнфоОПакете.ИменаСерверов );
135+ ВывестиСтрокуИнфо(ИнфоОПакете, Длины );
123136
124137 КонецЦикла ;
125- ВывестиШапкуИнфо(ДлинаИмени , ДлинаВерсии , ДлинаИменСерверов );
138+ ВывестиШапкуИнфо(Пакеты , Длины );
126139
127140КонецПроцедуры
128141
129- Процедура ВывестиШапкуИнфо (ДлинаИмени , ДлинаВерсии , ДлинаИменСерверов )
142+ Процедура ВывестиШапкуИнфо (Знач Пакеты , Знач Длины )
143+
144+ ПодстрокаРазделитель = " |" ;
145+
146+ ОбщаяДлина = 0 ;
147+ Для Каждого мДлина Из Длины Цикл
148+
149+ Если мДлина <> 0 Тогда
150+ ОбщаяДлина = ОбщаяДлина + мДлина + СтрДлина (ПодстрокаРазделитель);
151+ КонецЕсли ;
152+
153+ КонецЦикла ;
130154
131- ПустаяСтрока = " " ;
132- Сообщить (СтрЗаменить (Лев (ПустаяСтрока, ДлинаИмени + ДлинаВерсии + ДлинаИменСерверов + 6 ), " " , "-" ));
133- ВывестиСтрокуИнфо(ДлинаИмени, "Пакет" , ДлинаВерсии, "Версия" , ДлинаИменСерверов, "Имена серверов" );
134- Сообщить (СтрЗаменить (Лев (ПустаяСтрока, ДлинаИмени + ДлинаВерсии + ДлинаИменСерверов + 6 ), " " , "-" ));
155+ ПустаяСтрока = ШаблоннаяСтрока();
156+ СтрокаОтрез = СтрЗаменить (Лев (ПустаяСтрока, ОбщаяДлина), " " , "-" );
157+ Сообщить (СтрокаОтрез);
158+
159+ ПодстрокиСообщения = Новый Массив;
160+ Для НомерКолонки = 0 По Пакеты.Колонки.Количество() - 1 Цикл
161+
162+ Колонка = Пакеты.Колонки[НомерКолонки];
163+ Если ЗначениеЗаполнено (Колонка.Заголовок) Тогда
164+ КоличествоСимволовДобора = Длины[НомерКолонки] - СтрДлина (Колонка.Заголовок);
165+ ПодстрокиСообщения.Добавить(Колонка.Заголовок + Лев (ПустаяСтрока, КоличествоСимволовДобора));
166+ КонецЕсли ;
167+
168+ КонецЦикла ;
169+ Сообщить (СтрСоединить (ПодстрокиСообщения, ПодстрокаРазделитель));
170+ Сообщить (СтрокаОтрез);
135171
136172КонецПроцедуры
137173
138- Процедура ВывестиСтрокуИнфо (ДлинаИмени , ИмяПакета , ДлинаВерсии , Версия , ДлинаИменСерверов , ИменаСерверов )
174+ Процедура ВывестиСтрокуИнфо (Знач ИнфоОПакете , Знач Длины )
175+
176+ Пакеты = ИнфоОПакете.Владелец();
177+
178+ ПодстрокаРазделитель = " |" ;
179+
180+ ОбщаяДлина = 0 ;
181+ Для Каждого мДлина Из Длины Цикл
182+
183+ Если мДлина <> 0 Тогда
184+ ОбщаяДлина = ОбщаяДлина + мДлина + СтрДлина (ПодстрокаРазделитель);
185+ КонецЕсли ;
139186
140- ПустаяСтрока = " " ;
141- Шаблон = "%1" + Лев (ПустаяСтрока, ДлинаИмени - СтрДлина (ИмяПакета))
142- + " | %2" + Лев (ПустаяСтрока, ДлинаВерсии - СтрДлина (Версия))
143- + " | %3" + Лев (ПустаяСтрока, ДлинаИменСерверов - СтрДлина (ИменаСерверов));
144- Сообщить (СтрШаблон (Шаблон, ИмяПакета, Версия, ИменаСерверов));
187+ КонецЦикла ;
188+
189+ ПустаяСтрока = ШаблоннаяСтрока();
190+
191+ ПодстрокиСообщения = Новый Массив;
192+ Для НомерКолонки = 0 По Пакеты.Колонки.Количество() - 1 Цикл
145193
194+ Колонка = Пакеты.Колонки[НомерКолонки];
195+ Если ЗначениеЗаполнено (Колонка.Заголовок) Тогда
196+ ВыводимоеЗначение = Строка (ИнфоОПакете[Колонка.Имя]);
197+ КоличествоСимволовДобора = Длины[НомерКолонки] - СтрДлина (ВыводимоеЗначение);
198+ ПодстрокиСообщения.Добавить(ВыводимоеЗначение + Лев (ПустаяСтрока, КоличествоСимволовДобора));
199+ КонецЕсли ;
200+
201+ КонецЦикла ;
202+ Сообщить (СтрСоединить (ПодстрокиСообщения, ПодстрокаРазделитель));
203+
146204КонецПроцедуры
205+
206+ Функция ШаблоннаяСтрока ()
207+ Возврат " "
208+ + " "
209+ ;
210+ КонецФункции
211+
212+ Лог = Логирование.ПолучитьЛог(КонстантыOpm.ИмяЛога);
0 commit comments