Команда PIE рада объявить о выпуске серии PHP Installer for Extensions 1.5, работа над которой велась около пяти месяцев. Была проделана значительная работа по внутренним улучшениям, что позволило нам реализовать несколько долгожданных функций для этого инструмента. Давайте рассмотрим некоторые из этих новинок!

Установка нескольких расширений

Теперь вы можете устанавливать несколько расширений одновременно, например:

$ pie install php-amqp/php-amqp:^2.2 girgias/csv
 

Это полезно при настройке Docker-образов. Опции конфигурации по-прежнему можно передавать, и они будут автоматически отфильтрованы в соответствующие опции  ./configure  для каждого расширения.

Внедрение выбора пакетов с помощью  --select=...  для автоматической установки

Когда вы запускаете  pie install  внутри PHP-проекта, в предыдущих версиях PIE вы могли использовать  --allow-non-interactive-project-install  для автоматического выбора пакетов для отсутствующих расширений. Однако этот подход был рискованным, так как не было гарантий, какой именно пакет будет выбран для отсутствующего расширения. Чтобы устранить этот риск, теперь при неинтерактивной/автоматической установке необходимо явно указывать выбор пакетов:

$ pie install \  
  --select=example_pie_extension=asgrim/example-pie-extension \  
  --select=redis=phpredis/phpredis
 

Это позволяет вам осознанно и явно принимать решения о том, какой пакет использовать для любых отсутствующих расширений.

Обновление всех ваших расширений PIE

$ pie upgrade
 

Это всё, что нужно теперь для автоматического обновления всех ваших расширений PIE в рамках ограничений, с которыми вы изначально устанавливали каждое расширение. Например:

  • вы устанавливаете  foo/bar:^1.1  с помощью PIE, и устанавливается последняя версия 1.1.5
  • позже для расширения  foo/bar  выходит новая версия 1.2.0
  • вы запускаете  pie upgrade , и  foo/bar  обновляется до 1.2.0, так как это соответствует исходному ограничению  ^1.1 .
  • впоследствии выходит совершенно новая версия  foo/bar  2.0.0
  • когда вы запускаете  pie upgrade ,  foo/bar  не будет обновлено, так как 2.0.0 не входит в ограничение  ^1.1 .

Масштабное обновление библиотеки Attestation

Некоторое время PIE использовал фреймворк Sigstore для проверки подлинности самого PIE. Основным механизмом для этого был вызов CLI-инструмента  gh , если он доступен, а если нет — переход к базовой реализации проверки Sigstore. После большой работы мы смогли реализовать большую часть набора тестов на соответствие Sigstore, достигнув 131 пройденного теста, 5 пропущенных (поскольку библиотека предназначена только для проверки) и 4 ожидаемых сбоев. Это была огромная задача, и мы считаем, что это самая полная PHP-реализация набора для проверки Sigstore. Теперь PIE может использовать эту более обширную проверку при выполнении обновлений. Кроме того, библиотека больше не привязана жестко к аттестациям GitHub и доверенному корневому сертификату, хотя оба они включены «из коробки» для удобства. Эта библиотека с открытым исходным кодом доступна всем по лицензии BSD-3-Clause на github.com/ThePHPF/attestation.

Краткий обзор других новых функций...

  • Опция  --no-dev  для  pie install  в PHP-проекте, позволяющая пропускать dev-расширения
  • Вы можете использовать  --suppress-download-url-method , чтобы исключить определенные методы загрузки по URL, даже если расширение их поддерживает.
  • Новая команда  pie search ...  для помощи в поиске пакетов, предоставляющих расширения.
  • Вы можете оптимистично проверять наличие установленных инструментов сборки с помощью  pie check-build-tools 
  • Поддержка плейсхолдеров для некоторых PECL-расширений, которые полагались на эту функцию

Как всегда, разработка PIE продолжается, и команда The PHP Foundation, работающая над PIE, стремится сделать управление расширениями PHP таким же простым, как пирог (as easy as PIE). Если у вас есть идеи или предложения, пожалуйста, присоединяйтесь к нам в GitHub Discussions, чтобы обсудить их. Если вы обнаружили ошибку, пожалуйста, сообщите о ней в нашем трекере GitHub Issues.