jeyroik/extas-installer-import

There is no license information available for the latest version (0.1.1) of this package.

Allow to export/import defined extas-compatible entities

0.1.1 2020-10-02 14:50 UTC

This package is auto-updated.

Last update: 2024-10-29 06:05:53 UTC


README

tests codecov.io Latest Stable Version Total Downloads Dependents

Описание

Пакет позволяет импортировать только нужные сущности из 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 данного пакета.