jeyroik / extas-installer-import
Allow to export/import defined extas-compatible entities
Installs: 5
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/jeyroik/extas-installer-import
Requires
Requires (Dev)
This package is auto-updated.
Last update: 2025-09-29 02:51:37 UTC
README
Описание
Пакет позволяет импортировать только нужные сущности из extas-совместимых пакетов.
Примечание: донорский пакет должен поддерживать экспорт (подробности см. ниже).
Настройка экспорта
Если пакет желает организовать установку каких-либо сущностей по требованию, то ему необходимо описать секцию экспорта.
extas.json
{
"name": "my/package",
"export": {
}
}
Содержание экспорта идентично содержанию extas.json, т.е. например, если в пакете подразумеваются плагины, которые необходимо установить в любом случае и плагины, которые можно устанавливать по желанию, то описание будет выглядеть примерно так:
extas.json
{
"name": "my/package",
"plugins": [
{
"class": "plugin/First",
"stage": "some.stage"
}
],
"export": {
"plugins": [
{
"class": "plugin/Second",
"stage": "any.stage",
"install_on": "install"
}
]
}
}
Внимание: для плагинов и расширений необходимо учитывать тот факт, что механизм импорта подключается на этапе установки (т.е. после инициализации). В связи с этим, для плагинов и расширений на экспорт, необходимо явно указывать стадию установки (install_on: install).
Настройка импорта
extas.json
{
"name": "my/package2",
"import": {
"from": {
"my/package": {
"plugins": "plugin/Second"
}
},
"parameters": {
"on_miss_package": {
"name": "on_miss_package",
"value": "continue"
},
"on_miss_section": {
"name": "on_miss_section",
"value": "throw"
}
}
}
}
fromв этом разделе указываются пакеты, из которых требуется произвести импорт.parametersпараметры импорта, определяют поведение в случаях, когда не найден пакет для импорта или запрашиваемая секция внутри него. Возможные значения:continue- просто перейти к следующему пакету/следующей секции,throw- выбросить ошибку, весь импорт прерывается.
Пакет предоставляет две стадии (они запускаются именно в следующем порядке):
extas.package.export.build.<section.name>- например,extas.package.export.build.pluginsдля плагинов.extas.package.export.build
Интерфейс стадий идентичный, его можно найти в src/interfaces/stages/IStagePackageExportBuild.
Данные стадии предназначены для интерпретации значения секций в разделе from. Таким образом, имеется возможность организовать свой формат.
Формат описания импорта из коробки
Из коробки пакет предоставляет механизм поиска сущностей по полю - extas\components\plugins\export\PluginExportByField.
Данный механизм позволяет в параметрах плагина указать поле и по нему фильтровать сущности:
{
"name": "my/package2",
"import": {
"from": {
"my/package": {
"plugins": "plugin/Second"
}
}
}
}
Из коробки плагин обрабатывает секции plugins и extensions. По вышеприведённому примеру, из пакета my/package будет импортирован только плагин с классом plugin/Second.
Также имеется возможность указать несколько сущностей:
{
"name": "my/package2",
"import": {
"from": {
"my/package": {
"plugins": ["plugin/Second", "plugin/Third"]
}
}
}
}
Пример описания плагина с указанием поля см. в extas.json данного пакета.