-
Notifications
You must be signed in to change notification settings - Fork 31
Рефакторинг для дальнейшей допилки под либу #98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Странное описание коммита |
|
@artbear Да изменений там немного. В основном переименования |
…джерПолученияПакетов. Добавлен класс СерверПакетов для получения пакетов с сервера
… возможность указывать настройки через процедуры
|
@artbear @nixel2007 Коллеги, я закончил с тем минимум изменений, которые необходим для работы gitsync и опм, рассмотрите изменения |
|
Вся функциональсть соблюдена, апи сохранено. |
src/cmd/Классы/КомандаOpm_List.os
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Пакеты
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Это был такой коммент уже? Сейчас УстановленныеПакеты.ПакетУстановлен проверяет версию.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да оставил оригинал и не трогал, логику данного блока
src/cmd/Классы/КомандаOpm_Install.os
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Можешь обрисовать разницу между новым модулем и классом, который вызывается из этого модуля? Когда какой нужно использовать и чем они "глобально" отличаются?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
УстановкаПакета - отвечает только за установку (без зависимостей)
МенеджерУстановкиПакетов - обвязка над классом УстановкаПакета и установка зависимостей, здесь предполагается определение куда и как ставить пакет и его зависимости.
РаботаСПакетами - соединение классов МенеджерПолученияПакетов и МенеджерУстановкиПакетов, реализация предопределенных функций установки пакетов для вызова из приложения и реализация части общих функций, для классов, обеспечивает кеш класса МенеджерУстановкиПакетов при установки множества пакетов из Хаба
МенеджерПолученияПакетов - обеспечивает кеш и получение пакетов с СервераПакетов, при чем кеш храниться для каждого сервера отдельно (например, есть сервер dev - пакетов, для этого можно просто его добавить в конфиг.
Использование по вкусу - Можно через РаботаСПакетами, если не требуется тонкой настройки куда и что ставить. Класс МенеджерУстановкиПакетов - для тонкой настройки установки.
@artbear @nixel2007
src/cmd/Классы/КомандаOpm_Update.os
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Почему бы в РаботаСПакетами.ОбновитьУстановленныеПакеты не задефолтить второй параметр?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Сделал. Логично.
src/cmd/Классы/КомандаOpm_Update.os
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Я не могу найти эту процедуру в модуле РаботаСПакетами. Потерялась?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Корректно переименовал! -:)
src/cmd/Классы/КомандаOpm_Update.os
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Аналогично - почему бы не задефолтить параметр?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Сделал. Логично.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Что-то я не совсем въезжаю в новый (?) кэш пакетов в разрезе серверов. Зачем он заполняется и где используется?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Это что-то типа кэширования содержимого libData.txt, чтобы не делать лишний запрос при разрешении зависимостей?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Пояснения по кешу пакетов:
Реализовано 2 уровня кеша пакетов и кеш Серверов пакетов:
ИндексКешаПакетов - обеспечивает кеш пакетов в рамках серверов ( далее будет и версий, когда можно будет получать с сервера не только наименование пакета, а и доступные версии). Формат значения из кеша Соответвие, где ключ ИмяСервера (из ИндексСерверовПакетов, Значение строка (доступных версий) формата 1.0.0 1.0.2 - пока никак не используется.
ИндексДоступныхПакетов - глобальный кеш всех пакетов формата ключ имя пакета + версия (сейчас только имя пакета) , пример opm или opm@1.0.0 - значение булево - всегда истина, переменная обеспечивает быструю провеку, что пакет доступен, без инициализации подключения к сервееру
ИндексСерверовПакетов - кеш серверов пакетов, вида Имя - класс СерверПакета
Обеспечивает быстрый доступ классу СерверПакета, при множественном обращении
Зеркала обеспечиваются, методом добавления новых серверов модуль НастройкиOpm процедура ДобавитьСерверПакетов
Пример основного сервера и его зеркала
// Сервера пакетов по умолчанию
ДобавитьСерверПакетов("ОсновнойСерверПакетов", КонстантыOpm.СерверУдаленногоХранилища, КонстантыOpm.ПутьВХранилище, 80, 0);
ДобавитьСерверПакетов("ЗапаснойСерверПакетов", КонстантыOpm.СерверЗапасногоХранилища, КонстантыOpm.ПутьВЗапасномХранилище, 80, 1);
НО можно добавить например, еще и дев-канал вот так
ДобавитьСерверПакетов("ОсновнойСерверПакетов", КонстантыOpm.СерверУдаленногоХранилища, "dev-channel/", 80, 2);
Приоритеты серверов пока не работаю. Доделаю, позже когда основную идею примут.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/cc @artbear @nixel2007
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nixel2007 Для разрешения зависимостей, пока ничего не делал, т.к. нельзя сейчас получить зависимости не скачав пакет
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
развей мои сомнения - кэш живет только на момент запуска текущего экземпляра опм? никакого сброса на диск нет и проблем с инвалидацией, как следствие, тоже нет?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да только на время работы, чтобы меньше делать http запросов
| Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Локально); | ||
|
|
||
| Установщик.УстановитьПакетИзАрхива(ФайлПакетаВерсии1.ПолноеИмя); | ||
| Установщик.УстановитьПакетИзАрхива(ФайлПакетаВерсии1.ПолноеИмя, Истина); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Почему ЭтоЗависимыйПакет = Истина?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
При локальной установки данный флаг отвечает за установку в oscript_modules
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Чего требовал данный тест-кейс, а именно установки в oscript_modules
|
Ну, @khorevaa, давай попробуем. |
Много переименовай.
Глобально:
Работа с пакетамиМенеджерУстановкиПакетовУстановкаПакетаОстальные изменения связаны только с изменениями в текущих классах или перенаправления на новые классы.