Skip to content

Commit 6470c39

Browse files
authored
Merge pull request #34 from oscript-library/feature/install-localy
Установка пакетов в локальный каталог
2 parents cdb2f7d + 9b1a656 commit 6470c39

File tree

5 files changed

+124
-84
lines changed

5 files changed

+124
-84
lines changed

packagedef

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
Описание.Имя("opm")
33
.Версия("0.8.0")
4+
.ЗависитОт("fs", "0.3")
45
.ЗависитОт("logos")
56
.ЗависитОт("cmdline")
67
.ЗависитОт("tempfiles")

src/Классы/ДиспетчерКомандПриложения.os

Lines changed: 50 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
Команда = Парсер.ОписаниеКоманды("install", "Выполнить установку. Если указано имя пакета, происходит установка из хаба или из файла. В обратном случае устанавливаются зависимости текущего пакета по файлу packagedef.");
5252
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-all", "Установить все пакеты, зарегистрированные в хабе");
5353
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-f", "Указать файл из которого нужно установить пакет");
54+
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-l", "Установить пакеты в локальный каталог oscript_modules");
5455
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяПакета", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета");
5556
Парсер.ДобавитьКоманду(Команда);
5657
КонецПроцедуры
@@ -72,14 +73,14 @@
7273
КонецПроцедуры
7374

7475
Процедура ДобавитьКомандуConfig(Знач Парсер)
75-
Команда = Парсер.ОписаниеКоманды("config", "Задать пользовательские настройки");
76-
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "-proxyusedefault","Использовать ПроксиПоУмолчанию (системные настройки)");
77-
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxyserver", "Адрес прокси");
78-
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxyport", "Порт прокси");
79-
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxyuser", "Пользователь прокси ");
80-
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxypass", "Пароль прокси");
81-
Парсер.ДобавитьКоманду(Команда);
82-
КонецПроцедуры
76+
Команда = Парсер.ОписаниеКоманды("config", "Задать пользовательские настройки");
77+
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "-proxyusedefault","Использовать ПроксиПоУмолчанию (системные настройки)");
78+
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxyserver", "Адрес прокси");
79+
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxyport", "Порт прокси");
80+
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxyuser", "Пользователь прокси ");
81+
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxypass", "Пароль прокси");
82+
Парсер.ДобавитьКоманду(Команда);
83+
КонецПроцедуры
8384

8485
Процедура ДобавитьКомандуList(Знач Парсер)
8586
Команда = Парсер.ОписаниеКоманды("list", "Вывести список пакетов");
@@ -95,7 +96,7 @@
9596
КонецПроцедуры
9697

9798
Процедура ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт
98-
99+
99100
ЗначенияПараметров = ПараметрыКоманды.ЗначенияПараметров;
100101
Если ПараметрыКоманды.Команда = "build" Тогда
101102
ВыполнитьСборку(ЗначенияПараметров["КаталогИсходников"], ЗначенияПараметров["-mf"], ЗначенияПараметров["-out"]);
@@ -114,19 +115,26 @@
114115
ИначеЕсли ПараметрыКоманды.Команда = "config" Тогда
115116
НастройкиПриложения.СохранитьНастройки(ЗначенияПараметров);
116117
ИначеЕсли ПараметрыКоманды.Команда = "list" Тогда
117-
ВывестиСписокПакетов(ЗначенияПараметров);
118+
ВывестиСписокПакетов(ЗначенияПараметров);
118119
ИначеЕсли ПараметрыКоманды.Команда = "help" Тогда
119120
ВывестиСправку(ЗначенияПараметров);
120121
КонецЕсли;
121-
122+
122123
КонецПроцедуры
123124

124125
/////////////////////////////////////////////////////////////////////////
125126
// Реализация команд
126127

127128
Процедура УстановитьПакет(Знач ЗначенияПараметров) Экспорт
128-
129+
129130
Установщик = Новый УстановкаПакета;
131+
132+
Если ЗначенияПараметров["-l"] Тогда
133+
Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Локально);
134+
Иначе
135+
Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Глобально);
136+
КонецЕсли;
137+
130138
Если ЗначенияПараметров["-all"] Тогда
131139
Установщик.УстановитьВсеПакетыИзОблака();
132140
ИначеЕсли ЗначенияПараметров["-f"] = Неопределено И ЗначенияПараметров["ИмяПакета"] = Неопределено Тогда
@@ -136,32 +144,32 @@
136144
Иначе
137145
Установщик.УстановитьПакетИзОблака(ЗначенияПараметров["ИмяПакета"]);
138146
КонецЕсли;
139-
147+
140148
КонецПроцедуры
141149

142150
Процедура ВыполнитьСборку(Знач КаталогИсходников, Знач ФайлМанифеста, Знач ВыходнойКаталог) Экспорт
143-
151+
144152
Сборщик = Новый СборщикПакета();
145153
Сборщик.СобратьПакет(КаталогИсходников, ФайлМанифеста, ВыходнойКаталог);
146-
154+
147155
КонецПроцедуры
148156

149157
Процедура ПодготовитьКаталогПроекта(Знач ВыходнойКаталог) Экспорт
150-
158+
151159
Сборщик = Новый СборщикПакета();
152160
Сборщик.ПодготовитьКаталогПроекта(ВыходнойКаталог);
153-
161+
154162
КонецПроцедуры
155163

156164
Процедура ВыполнитьЗадачу(Знач ИмяЗадачи, Знач ПараметрыЗадачи)
157165

158166
ИсполнительЗадач = Новый ИсполнительЗадач();
159167
ИсполнительЗадач.ВыполнитьЗадачу(ИмяЗадачи, ПараметрыЗадачи);
160-
168+
161169
КонецПроцедуры
162170

163171
Процедура ОбновитьПакет(Знач ЗначенияПараметров) Экспорт
164-
172+
165173
Установщик = Новый УстановкаПакета;
166174
Если ЗначенияПараметров["-all"] Тогда
167175
Установщик.ОбновитьУстановленныеПакеты();
@@ -170,14 +178,14 @@
170178
Иначе
171179
Установщик.ОбновитьПакетИзОблака(ЗначенияПараметров["ИмяПакета"]);
172180
КонецЕсли;
173-
181+
174182
КонецПроцедуры
175183

176184
Процедура СоздатьСкриптЗапуска(Знач ИмяСкрипта, Знач Каталог, Знач ИмяФайлаЗапуска) Экспорт
177185
Если ИмяСкрипта = Неопределено Тогда
178186
ВызватьИсключение "Не указано имя файла скрипта";
179187
КонецЕсли;
180-
188+
181189
ФайлСкрипта = Новый Файл(ИмяСкрипта);
182190
ПолноеИмяСкрипта = ФайлСкрипта.ПолноеИмя;
183191
Если Не ФайлСкрипта.Существует() Тогда
@@ -188,15 +196,15 @@
188196
ПолноеИмяСкрипта = ФайлСкрипта.ПолноеИмя;
189197
КонецЕсли;
190198
КонецЕсли;
191-
199+
192200
Если Не ФайлСкрипта.ЭтоФайл() Тогда
193201
ВызватьИсключение "Указанный скрипт """ + ПолноеИмяСкрипта + """ не является файлом";
194202
КонецЕсли;
195-
203+
196204
Если Каталог = Неопределено Тогда
197205
Каталог = КаталогПрограммы();
198206
КонецЕсли;
199-
207+
200208
ФайлКаталога = Новый Файл(Каталог);
201209
Каталог = ФайлКаталога.ПолноеИмя;
202210
Если ФайлКаталога.Существует() Тогда
@@ -209,34 +217,34 @@
209217
ВызватьИсключение "Не удалось создать каталог """ + Каталог + """";
210218
КонецЕсли;
211219
КонецЕсли;
212-
220+
213221
ИмяСкриптаЗапуска = ?(ИмяФайлаЗапуска = Неопределено, ФайлСкрипта.ИмяБезРасширения, ИмяФайлаЗапуска);
214222
Установщик = Новый УстановкаПакета;
215223
Установщик.СоздатьСкриптЗапуска(ИмяСкриптаЗапуска, ПолноеИмяСкрипта, Каталог);
216-
224+
217225
КонецПроцедуры
218226

219227
Процедура ВывестиСписокПакетов(Знач ЗначенияПараметров)
220228

221229
ТихийРежим = ЗначенияПараметров["-q"];
222-
230+
223231
Если ЗначенияПараметров["-remote"] Тогда
224232
ТекстСообщения = СтрШаблон("Пакеты в хабе:");
225233
КэшПакетовВХабе = Новый КэшПакетовХаба();
226234
УстановленныеПакеты = КэшПакетовВХабе.ПолучитьПакетыХаба();
227235
Иначе
228-
236+
229237
ПутьККаталогуПакетов = ПолучитьЗначениеСистемнойНастройки("lib.system");
230238
ТекстСообщения = СтрШаблон("Пакеты в системном каталоге библиотек <%1>:", ПутьККаталогуПакетов);
231-
239+
232240
КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов();
233241
УстановленныеПакеты = КэшУстановленныхПакетов.ПолучитьУстановленныеПакеты();
234242
КонецЕсли;
235-
243+
236244
Если НЕ ТихийРежим Тогда
237-
Сообщить(ТекстСообщения);
245+
Сообщить(ТекстСообщения);
238246
КонецЕсли;
239-
247+
240248
Для Каждого УстановленныйПакет Из УстановленныеПакеты Цикл
241249
СтрокаСообщения = УстановленныйПакет.Ключ;
242250
Если ТипЗнч(УстановленныйПакет.Значение) = Тип("ОписаниеПакета") Тогда
@@ -257,14 +265,14 @@
257265
КонецПроцедуры
258266

259267
Процедура ВывестиСправкуПоКомандам() Экспорт
260-
268+
261269
Парсер = Новый ПарсерАргументовКоманднойСтроки;
262270
ДобавитьОписанияКоманд(Парсер);
263-
271+
264272
ВозможныеКоманды = Парсер.СправкаВозможныеКоманды();
265273
Сообщить("OneScript Package Manager
266274
|Возможные команды:");
267-
275+
268276
МаксШирина = 0;
269277
Поле = " ";
270278
Для Каждого Команда Из ВозможныеКоманды Цикл
@@ -273,27 +281,27 @@
273281
МаксШирина = ТекШирина;
274282
КонецЕсли;
275283
КонецЦикла;
276-
284+
277285
Для Каждого Команда Из ВозможныеКоманды Цикл
278286
Сообщить(" " + Лев(Команда.Команда + Поле, МаксШирина + 2) + "- " + Команда.Пояснение);
279287
КонецЦикла;
280-
288+
281289
Сообщить("Наберите opm help <команда>, чтобы вывести справку по команде");
282-
290+
283291
КонецПроцедуры
284292

285293
Процедура ВывестиСправкуПоКоманде(Знач ИмяКоманды)
286-
294+
287295
Парсер = Новый ПарсерАргументовКоманднойСтроки;
288296
ДобавитьОписанияКоманд(Парсер);
289-
297+
290298
ВозможныеКоманды = Парсер.СправкаВозможныеКоманды();
291299
ОписаниеКоманды = ВозможныеКоманды.Найти(ИмяКоманды, "Команда");
292300
Если ОписаниеКоманды = Неопределено Тогда
293301
Сообщить("Команда отсуствует: " + ИмяКоманды);
294302
Возврат;
295303
КонецЕсли;
296-
304+
297305
Сообщить("" + ОписаниеКоманды.Команда + " - " + ОписаниеКоманды.Пояснение);
298306
Сообщить("Параметры:");
299307
Для Каждого СтрПараметр Из ОписаниеКоманды.Параметры Цикл
@@ -303,7 +311,7 @@
303311
Сообщить(СтрШаблон(" %1 - %2", СтрПараметр.Имя, СтрПараметр.Пояснение));
304312
КонецЕсли;
305313
КонецЦикла;
306-
314+
307315
КонецПроцедуры
308316

309317
/////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)