diff --git a/README.md b/README.md index 650c92b..0e3d8c4 100644 --- a/README.md +++ b/README.md @@ -23,3 +23,31 @@ OneScript Package Manager В настоящее время пакеты хранятся на двух серверах: - [hub.oscript.io](http://hub.oscript.io/download) - основной хаб пакетов - [hub.oscript.ru](http://hub.oscript.ru/download) - вторичный хаб пакетов. Используется, когда не удаётся получить данные с основного хаба + +# Настройка + +## Настройка путей установки скриптов +Переменная окружения ```OSCRIPTBIN``` отвечает за переопределение пути установки скриптов при глобальной установке. По умолчанию для linux считается "/usr/bin", а для windows КаталогПрограммы(). +При указании данной переменной можно переназначить путь для создания скриптов запуска различных пакетов. Возможно скачать архив, распаковать его и запуская oscript с указанием этих переменных тестировать работу автономной установки. +- **linux** +``` +OSCRIPTBIN=~/.local/bin opm update -all +``` +- **windows** +``` +set OSCRIPTBIN=c:\temp\ +opm update -all +``` + +## Настройка прокси-сервера для скачивания пакетов + +Настройка производится с помощью создания служебного файла [opm.cfg](./tests/fixtures/opm.cfg) данный файл настроек можно расположить по таким путям (список приведен в порядке убывания приоритета): + - ```./opm.cfg``` - текущий каталог запуска + /opm.cfg + - каталог настроек пользователя + - linux: ```~/.opm.cfg```, **внимание файла должен называться с точкой ```.opm.cfg```** + - windows: ```%USERPROFILE%\opm.cfg``` + - системная настройка: + - linux: ```/etc/opm.cfg``` + - windows: ```c:\ProgramData\opm.cfg``` +- OSCRIPT/lib/opm/opm.cfg - каталог установки opm, для совместимости. + diff --git a/src/opm.os b/src/opm.os index fe7d85a..426420c 100644 --- a/src/opm.os +++ b/src/opm.os @@ -36,8 +36,6 @@ МенеджерКомандПриложенияOpm.ПоказатьСправкуПоКомандам(); Возврат 1; КонецЕсли; - - НастройкиПриложенияOpm.УстановитьФайлНастроек(ОбъединитьПути(СтартовыйСценарий().Каталог, "opm.cfg")); Если ТипЗнч(ПараметрыЗапуска) = Тип("Структура") Тогда // это команда diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" index 8e64659..6d558ff 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" @@ -443,6 +443,9 @@ КаталогУстановкиСкриптовЗапускаПриложений = Новый Файл(КаталогУстановкиСкриптовЗапускаПриложений).ПолноеИмя; ИначеЕсли мРежимУстановкиПакетов = РежимУстановкиПакетов.Глобально Тогда КаталогУстановкиСкриптовЗапускаПриложений = ?(ЭтоWindows, КаталогПрограммы(), "/usr/bin"); + Если НЕ ПустаяСтрока(ПолучитьПеременнуюСреды("OSCRIPTBIN")) Тогда + КаталогУстановкиСкриптовЗапускаПриложений = ПолучитьПеременнуюСреды("OSCRIPTBIN"); + КонецЕсли; Иначе ВызватьИсключение "Неизвестный режим установки пакетов <" + мРежимУстановкиПакетов + ">"; КонецЕсли; diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" index be4ab24..31be4ab 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" @@ -10,6 +10,7 @@ Перем ЛокальныйКаталогУстановкиПакетов Экспорт; Перем ИмяЛога Экспорт; Перем ВерсияПродукта Экспорт; +Перем ИмяФайлаНастроек Экспорт; /////////////////////////////////////////////////////////////// @@ -24,3 +25,4 @@ ЛокальныйКаталогУстановкиПакетов = "oscript_modules"; ИмяЛога = "oscript.app.opm"; ВерсияПродукта = "0.9.8"; +ИмяФайлаНастроек = "opm.cfg"; \ No newline at end of file diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" index a6b0755..f708423 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" @@ -14,15 +14,38 @@ КонецПроцедуры Функция Получить() Экспорт + Перем МассивПутейНастроек; Если мНастройки = Неопределено Тогда - Попытка - ПрочитатьФайлНастроек(); - Исключение - Лог.Отладка("Чтение файла настроек: - |" + ОписаниеОшибки()); + + МассивПутейНастроек = СписокФайловНастроек(); + Если Не ПустаяСтрока(мПутьФайлаНастроек) Тогда + МассивПутейНастроек.Очистить(); + МассивПутейНастроек.Добавить(мПутьФайлаНастроек); + КонецЕсли; + + НастройкиНайдены = Ложь; + Для каждого Элемент из МассивПутейНастроек Цикл + мСтарыйПуть = мПутьФайлаНастроек; + УстановитьФайлНастроек(Элемент); + Если НЕ Новый Файл(Элемент).Существует() Тогда + Продолжить; + КонецЕсли; + Попытка + ПрочитатьФайлНастроек(); + НастройкиНайдены = Истина; + Прервать; + Исключение + Лог.Отладка("Чтение файла настроек " + мПутьФайлаНастроек+": + |" + ОписаниеОшибки()); + + КонецПопытки; + КонецЦикла; + + Если НЕ НастройкиНайдены Тогда УстановитьНастройкиПоУмолчанию(); - КонецПопытки; + КонецЕсли; + КонецЕсли; Возврат мНастройки; @@ -167,4 +190,33 @@ КонецПроцедуры //------------ +// Возвращает массив путей, где может находиться файла настроек opm +// Текущий каталог запуска, домашний каталог пользователя, системная настройка, каталог opm (для совместимости). +Функция СписокФайловНастроек() + Перем ИмяФайл; + ИмяФайл = КонстантыOpm.ИмяФайлаНастроек; + МассивФайлов = Новый Массив; + //Текущий каталог + МассивФайлов.Добавить(ОбъединитьПути(ТекущийКаталог(), ИмяФайл)); + //Настройки в профиле пользователя. + ПутьКНастройкам = ""; + СИ = Новый СистемнаяИнформация(); + Если Найти(Нрег(СИ.ВерсияОС), Нрег("Windows")) > 0 Тогда + ПутьКНастройкам = ОбъединитьПути(ПолучитьПеременнуюСреды(Врег("USERPROFILE")), ИмяФайл); + ПутьКНастройкамСистемный = ОбъединитьПути(ПолучитьПеременнуюСреды(Врег("ALLUSERSPROFILE")), ИмяФайл); + Иначе + ПутьКНастройкам = ОбъединитьПути(ПолучитьПеременнуюСреды(Врег("HOME")), "."+ИмяФайл); + ПутьКНастройкамСистемный = ОбъединитьПути("/etc", ИмяФайл); + КонецЕсли; + + МассивФайлов.Добавить(ПутьКНастройкам); + МассивФайлов.Добавить(ПутьКНастройкамСистемный); + + //Совместимость со старым поведением + МассивФайлов.Добавить(ОбъединитьПути(СтартовыйСценарий().Каталог, ИмяФайл)); + + Возврат МассивФайлов; + +КонецФункции + Лог = Логирование.ПолучитьЛог("oscript.app.opm"); \ No newline at end of file