RextPacker (сборщик дистрибутива)

Рецепт автоматически собирает дистрибутив Rext из кода сайта pmwiki.ru.

Что это делает?

Рецепт позволяет генерировать актуальный дистрибутив Rext автоматически, т.е. выпускать новый релиз системы нажатием одной кнопки. В принципе, он подойдет для создания "слепка" определенной части файловой системы любого сайта.

Рецепт разработан для внутренних нужд pmwiki.ru и свободно не распространяется. Свяжитесь с нами, если вы хотите приобрести его.

Демо

Внешнюю часть работы можно увидеть вот на этой странице Конфиг.

Техническая информация

Как это работает

Рецепт получает на вход массив, описывающий файловую систему, примерно вот такого формата:

 array(
    "path"  => "index.php",
    "content" => "<?php include('pmwiki.php');?>",
    "comments" => "добавьте '\$rextMaster = true;' перед include...",
  ),
 array(
    "path"  => "cookbook/ddmu.php",
    "content" => "",
    "comments" => "",
  ),
  array(
   "path"  => "pub/!phph/*",
    "content" => "",
    "comments" => "",
  ),

Далее он создает копию файловой системы текущего сайта в новой директории по следующему алгоритму:

  • если объект по пути "path" оказывается файлом, копирует его, причем…
    • …если заполнен ключ "content", вместо копирования, создает файл с этим содержанием;
  • в остальных случаях считает входные "path" директориями и копирует их целиком.

После завершения операции копирования, созданная директория архивируется в ZIP-файл.

Синтаксис

  • (:rextpacker:) выводит файловую систему в виде таблицы.
  • ?action=phRextIt инициирует действие. Все прочие настройки производятся на уровне PHP.

Служебная информация

Status
stable
Core
no
PHPcookbook
phRextPacker.php

Version
20210420

Changelog

  • 2021-04-20: добавлено сохранение дат модификаций исходных файлов

Todo:git

Продумать, куда лучше сохранять ZIP-архивы. И стоит ли вообще выкладывать это на Git.