Как стать автором
Обновить

Комментарии 22

А какие-нибудь требования к путям есть? Если ставить из ~/project всё равно попадет в /usr/share/php/PEAR/project или куда там у кого попадает?
угу, всё попадает в PEAR и легкодоступно оттуда. А самое главное, можно с пакетом поставлять консольную утилиту, которая будет доступна по всей системе. Опять таки, примеры из статьи: PHPUnit, Docblox.
А есть у вас конкретный пример созданного репозитория, чтобы потестировать можно было?
Ну в смысле PEAR-канала я имел в виду. Утро понедельника. =)
Да, вчера тестировал. Всё ок. Потому и про большие буквы написал )

Не хотел пиариться в статье, но вот: davertmik.github.com/pear/
Ух-ты! Это что-то типа Behat?
Угу, но без Gherkin

github.com/DavertMik/Codeception

Тесты пишутся с помощью PHP DSL. В последней версии уже даже юнит-тесты писать можно.
Интересная статья, спасибо. Но, ИМХО, все равно как то сложно. + мне не совсем понятно как в pear-е решается задача отслеживания всех нужных текущему проекту (который не будет непосредственно публиковаться в pear-е) библиотек и их версий.

Поэтому, не так давно думал вместо pear-а приспособить ivy (http://ant.apache.org/ivy/) — паковать классы ant-ом в phar-ы и публиковать в ivy-репозитории. Если учесть универсальность ant-а и возможность написания новых задач для него даже на самом PHP (не без граблей, к сожалению), то должно получиться гораздо удобнее (ИМХО) pear-а (все phar-ы будут храниться где-то в проекте).
Эта секция специально опущена, ибо отслеживание там ужасное. Потому лучше везде указывать stable и no dependencies. Стабильный PEAR-пакет может вполне отказаться устанавливаться, если ссылается на пакет менее стабильный. И тут уже начинаются пляски с бубном: нужно установить вручную специфичные версии пакетов, а тогда уже ставить основной.

Сейчас для установки зависимостей практичнее использовать composer.

Лично я реализовывал установку всех зависимых библиотек вручную, самим пакетом.
Т.е. с консоли запускается команда codecept install — она всё устанавливает.
> Сейчас для установки зависимостей практичнее использовать composer.

Чем больше программирую на PHP, тем больше убеждаюсь в том, что это путь вечного велосипедостроения. Ivy, ИМХО, более практичен — т.к. универсальный и может использовать и для других языков (т.е. в последствии не придется переучиваться на что-то другое).
Есть такое. А до руби с их бандлером тут вообще далеко.

Но как бы composer он поддерживается symfony-сообществом, так что рано или поздно может превратиться из велосипеда в добротный автомобиль.
Заинтересовала функция Pearfarm_PackageSpec::create(...)->addGitFiles()
Pearfarm каким-то образом в курсе насчёт git и умеет работать с репозиторием?
Было бы понятно, если бы вызывалась функция вроде ->addAllFilesFromCurrentDir(), но упоминание git на этом этапе смутило.
Всё предельно просто. Вот код этой функции:

  public function addGitFiles()
  {
    $result = NULL;
    $output = array();
    $lastLine = exec("cd {$this->options[self::OPT_BASEDIR]} && git ls-files", $output, $result);
    if ($result != 0) throw( new Exception("Error ($result) running git ls-files: " . join("\n", $output)) );

    $this->addFilesSimple($output);

    return $this;
  }
Кому и это слишком сложно могут воспользоваться http://pearhub.org. Он умеет автоматичеки создавать pear-канал из svn или git репозитория.
Конечно, его я тоже пробовал. Но опять таки, немного доверия к сторонним сервисам, плюс релиз для моего репозитория он так и не смог создать. Хотя я ему 4 тега создал всех видов.

Кроме того, я совсем не понял, как настраивать отдельные пункты package.xml, как например, установку запускаемых файлов.

Вообщем, идея хороша, но реализация пока не того уровня.
Почему пакет создается не через `pear package`, а через стороннюю тулзу?
Вопрос снимается.
А я уже полответа гневного настрочил )))

Короче, вот манифест пакета, который сгенерен вот этой тулзой.
github.com/Codeception/Codeception/blob/master/package.xml

Вручную писать его — никакого смысла.
Запустив `pear package` сразу все прояснилось. Мой первый пакет будет из 1 файла и 1 зависимости, так что в моем случаем возможно и руками создать не проблема.

Не совсем согласен с вариантом выбора места на github для «корня» канала, но это позже опишу в топике.
FYI: Создание канала на github.com и первого пакета заняло полтора часа включая приготовление кальяна и открытия «напитков» ;) Единственное неудобства что Pirum, что Pearfarm находятся в каком-то пререлизном состоянии с набором ограничений, но тем не менее работают.

P. S.
PEAR на первый взгляд не хватает удобных родных и простых консольных инструментов для сборки / релиза пакетов.
PEAR, как и все костыли вокруг него ужасно костыльны. Тут спорить не буду. Рад, что время скрашивалось кальяном )

Если чо, сейчас дико пиарят Composer getcomposer.org/ как альтернативу пиру.
Пока тоже сыровато, но по крайней мере плясок с бубном требует меньше.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации