Skip to content

Commit b74491f

Browse files
committed
Добавил чтение переменной окружения для настрйки пути создания скриптов.
Исправленна документация. Добавленно чтение настроек opm.cfg с различных путей системных настроек и настроек пользователя.
1 parent 28aed55 commit b74491f

File tree

5 files changed

+90
-8
lines changed

5 files changed

+90
-8
lines changed

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,31 @@ OneScript Package Manager
2323
В настоящее время пакеты хранятся на двух серверах:
2424
- [hub.oscript.io](http://hub.oscript.io/download) - основной хаб пакетов
2525
- [hub.oscript.ru](http://hub.oscript.ru/download) - вторичный хаб пакетов. Используется, когда не удаётся получить данные с основного хаба
26+
27+
# Настройка
28+
29+
## Настройка путей установки скриптов
30+
Переменная окружения ```OSCRIPTBIN``` отвечает за переопеределение пути установки скриптов при глобальной установке. По умолчанию для linux считается "/usr/bin", а для windows КаталогПрограммы().
31+
При указании данной переменной можно переназначить путь для создания скриптов запуска различных пакетов. Возможно скачать архив, распаковать его и запуская oscript с указанием этих пременных тестировать работу автономной установки.
32+
- **linux**
33+
```
34+
OSCRIPTBIN=~/.local/bin opm update -all
35+
```
36+
- **windows**
37+
```
38+
set OSCRIPTBIN=c:\temp\
39+
opm update -all
40+
```
41+
42+
## Настройка прокси серевера для скачивания пакетов
43+
44+
Настройка производится с помощью создания служебного файла [opm.cfg](./tests/fixtures/opm.cfg) данный файл настроек можно расположить по таким путям (список приведен в порядке убывания приоритета):
45+
- ```./opm.cfg``` - текущий каталог запуска + /opm.cfg
46+
- каталог настроек пользователя
47+
- linux: ```~/.opm.cfg```, **внимание файла должен называться с точкой ```.opm.cfg```**
48+
- windows: ```%USERPROFILE%\opm.cfg```
49+
- системная настройка:
50+
- linux: ```/etc/opm.cfg```
51+
- windows: ```c:\ProgramData\opm.cfg```
52+
- OSCRIPT/lib/opm/opm.cfg - каталог установки opm, для совместимости.
53+

src/opm.os

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@
3636
МенеджерКомандПриложенияOpm.ПоказатьСправкуПоКомандам();
3737
Возврат 1;
3838
КонецЕсли;
39-
40-
НастройкиПриложенияOpm.УстановитьФайлНастроек(ОбъединитьПути(СтартовыйСценарий().Каталог, "opm.cfg"));
4139

4240
Если ТипЗнч(ПараметрыЗапуска) = Тип("Структура") Тогда
4341
// это команда

src/Классы/УстановкаПакета.os

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,9 @@
443443
КаталогУстановкиСкриптовЗапускаПриложений = Новый Файл(КаталогУстановкиСкриптовЗапускаПриложений).ПолноеИмя;
444444
ИначеЕсли мРежимУстановкиПакетов = РежимУстановкиПакетов.Глобально Тогда
445445
КаталогУстановкиСкриптовЗапускаПриложений = ?(ЭтоWindows, КаталогПрограммы(), "/usr/bin");
446+
Если НЕ ПустаяСтрока(GetEnvironmentVariable("OSCRIPTBIN")) Тогда
447+
КаталогУстановкиСкриптовЗапускаПриложений = GetEnvironmentVariable("OSCRIPTBIN");
448+
КонецЕсли;
446449
Иначе
447450
ВызватьИсключение "Неизвестный режим установки пакетов <" + мРежимУстановкиПакетов + ">";
448451
КонецЕсли;

src/Модули/КонстантыOpm.os

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
Перем ЛокальныйКаталогУстановкиПакетов Экспорт;
1111
Перем ИмяЛога Экспорт;
1212
Перем ВерсияПродукта Экспорт;
13+
Перем ИмяФайлаНастроек Экспорт;
1314

1415
///////////////////////////////////////////////////////////////
1516

@@ -24,3 +25,4 @@
2425
ЛокальныйКаталогУстановкиПакетов = "oscript_modules";
2526
ИмяЛога = "oscript.app.opm";
2627
ВерсияПродукта = "0.9.8";
28+
ИмяФайлаНастроек = "opm.cfg";

src/Модули/НастройкиПриложенияOpm.os

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,37 @@
1414
КонецПроцедуры
1515

1616
Функция Получить() Экспорт
17+
Перем МассивПутейНастроек;
1718

1819
Если мНастройки = Неопределено Тогда
19-
Попытка
20-
ПрочитатьФайлНастроек();
21-
Исключение
22-
Лог.Отладка("Чтение файла настроек:
23-
|" + ОписаниеОшибки());
20+
21+
МассивПутейНастроек = СписокФайловНастроек();
22+
Если Не ПустаяСтрока(мПутьФайлаНастроек) Тогда
23+
МассивПутейНастроек.Очистить();
24+
МассивПутейНастроек.Добавить(мПутьФайлаНастроек);
25+
КонецЕсли;
26+
27+
НастройкиНайденны = Ложь;
28+
Для каждого Элемент из МассивПутейНастроек Цикл
29+
Если НастройкиНайденны Тогда
30+
Прервать;
31+
КонецЕсли;
32+
мСтарыйПуть = мПутьФайлаНастроек;
33+
УстановитьФайлНастроек(Элемент);
34+
Попытка
35+
ПрочитатьФайлНастроек();
36+
НастройкиНайденны = Истина;
37+
Исключение
38+
Лог.Отладка("Чтение файла настроек " + мПутьФайлаНастроек+":
39+
|" + ОписаниеОшибки());
40+
41+
КонецПопытки;
42+
КонецЦикла;
43+
44+
Если НастройкиНайденны = Ложь Тогда
2445
УстановитьНастройкиПоУмолчанию();
25-
КонецПопытки;
46+
КонецЕсли;
47+
2648
КонецЕсли;
2749

2850
Возврат мНастройки;
@@ -167,4 +189,33 @@
167189
КонецПроцедуры
168190
//------------
169191

192+
// Возвращет массив путей, где может находиться файла настроек opm
193+
// Каталог opm (для совместимости), текущий каталог запуска, домашний каталог пользователя, системная настройка.
194+
Функция СписокФайловНастроек()
195+
Перем ИмяФайл;
196+
ИмяФайл = "opm.cfg";
197+
МассивФайлов = Новый Массив;
198+
//Текущий каталог
199+
МассивФайлов.Добавить(ОбъединитьПути(ТекущийКаталог(), ИмяФайл));
200+
//Настройки в профиле пользователя.
201+
ПутьКНастройкам = "";
202+
СИ = Новый СистемнаяИнформация();
203+
Если Найти(Нрег(СИ.ВерсияОС), Нрег("Windows")) > 0 Тогда
204+
ПутьКНастройкам = ОбъединитьПути(СИ.ПолучитьПеременнуюСреды(Врег("USERPROFILE")), ИмяФайл);
205+
ПутьКНастройкамСистемный = ОбъединитьПути(СИ.ПолучитьПеременнуюСреды(Врег("ALLUSERSPROFILE")), ИмяФайл);
206+
Иначе
207+
ПутьКНастройкам = ОбъединитьПути(СИ.ПолучитьПеременнуюСреды(Врег("HOME")), "."+ИмяФайл);
208+
ПутьКНастройкамСистемный = ОбъединитьПути("/etc", ИмяФайл);
209+
КонецЕсли;
210+
211+
МассивФайлов.Добавить(ПутьКНастройкам);
212+
МассивФайлов.Добавить(ПутьКНастройкамСистемный);
213+
214+
//Совместимость со старым поведением
215+
МассивФайлов.Добавить(ОбъединитьПути(СтартовыйСценарий().Каталог, ИмяФайл));
216+
217+
Возврат МассивФайлов;
218+
219+
КонецФункции
220+
170221
Лог = Логирование.ПолучитьЛог("oscript.app.opm");

0 commit comments

Comments
 (0)