phpfu/puphpet-installer

提供与 `loadsys/puphpet-release` 兼容的 composer 自定义安装器,通过 composer 将 PuPHPet.com 的 vagrant box 添加到项目中。危险!会覆盖非供应商文件!非常严重,请不要使用此工具,或者仔细阅读 README 文件。

安装: 65

依赖者: 2

建议者: 0

安全: 0

星标: 2

关注者: 7

分支: 1

开放问题: 3

类型:composer-plugin

0.0.5 2015-04-21 19:24 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:25:59 UTC


README

Build Status

提供与 loadsys/puphpet-release 兼容的 composer 自定义安装器,通过 composer 将 PuPHPet.com 的 vagrant box 添加到项目中。

你很可能不需要直接使用此项目。我们使用它来复制 PuPHPet 包的部分内容到消费项目的必要位置,以用于我们的 loadsys/puphpet-release 包。

⚠️ 重要警告

非常重要的一点是指出,此安装器执行的是 composer 明确指出不应该执行的操作。我们仅因为使用的工具(vagrant 和 puphpet)没有其他实际选择,才破坏了这一非常良好和明智的规则。再次强调:你不应该做这个安装器做的事情。很可能有更好的方法。

如果你使用此安装器,它将覆盖你项目中现有的(重要的!)文件。如果你已经自定义了 Vagrantfile,那么在 composer require 使用此安装器的项目时,你的 Vagrantfile 文件和 puphpet/ 文件夹将无预警地被覆盖。请不要抱怨。这就是此安装器设计要做的,并且已经对你进行了充分的风险警告。

使用方法

要使用此安装器与另一个 composer 包,请将以下代码块添加到你的包的 composer.json 文件中

    "type": "puphpet-release",
    "require": {
        "loadsys/puphpet-release-composer-installer": "*"
    },

Composer 安装后操作

此安装器负责执行 loadsys/puphpet-release 包的 composer install 后操作。

当此包通过 composer 包含在其他项目中时,安装器将触发一系列额外操作,以解决 puphpet 默认设置与 Vagrant 要求之间的某些不兼容性(例如,将 Vagrantfile 放在项目根目录而不是 composer 安装的 /vendors/loadsys/puphpet-release/release/ 文件夹中。)

  • 将 Vagrantfile 复制到消费项目的根目录。
  • 将 puphpet/ 文件夹复制到消费项目的根目录。
  • 将消费项目的 /puphpet.yaml 复制到正确的位置,作为 /puphpet/config.yaml
  • 尝试确保消费项目的 /.gitignore 文件包含适当的条目来忽略 /Vagrantfile/puphpet/,如果存在的话。

未解决的问题

  • 我们是否总是覆盖 Vagrantfile 和 puphpet/ 文件夹?
  • 如果文件/ 或 exec-*/ 文件夹有自定义,我们该怎么办?我们甚至应该尝试检测这些吗?(比较包的 release/ 文件夹与项目根目录中的版本?)
  • 我们应该尝试验证目标项目的 config.yaml 文件是否包含所有预期的(强制性的)键,随着规范的上游变化。我们可以为它编写/维护一个“单元测试”和/或比较工具吗?毕竟只是 YAML。
  • 如果我们没有可以复制的 /puphpet.yaml 文件怎么办?虚拟机肯定不会使用完全“默认”选项正确工作。也许提示用户生成一个?

贡献

运行单元测试

  • composer install
  • vendor/bin/phpunit

手动测试安装器输出

测试这个 composer 插件很困难,因为它涉及到至少其他两个项目:loadsys/puphpet-release 以及你想要从中消费的项目。这个项目包含一个 tests/integration/ 目录,该目录已设置用于测试此安装程序以及测试将 loadsys/puphpet-release 包包含在消费者项目中的结果。要使用它

  1. 检出此项目: git clone git@github.com:loadsys/puphpet-release-composer-installer.git

  2. 在某处检出 puphpet-release 项目的副本以进行工作。 git clone git@github.com:loadsys/puphpet-release.git(注意此路径。)

  3. 在任意一个项目中创建一个功能分支,并将你的更改提交到分支。(提交更改对于此过程非常重要:你希望测试的所有更改必须已存在于 git 索引中,而不仅仅是你的工作副本中。)

  4. 运行 ./tests/integration/simulate-composer-install.sh

    脚本将提示你输入任何必要的信息,为使用重置 build/ 目录,为你编写适当的 "composer.json" 更改,并在 build/ 目录中为你执行 composer install 命令,你可以在其中查看结果。

    • build/ 文件夹应最终包含一个 Vagrantfilepuphpet/ 文件夹。
    • 示例 build/puphpet.yaml 文件应已复制到 build/puphpet/config.yaml
    • 示例 .gitignore 文件应已“安全”更新,以包括对“根”项目文件夹(build/)的新添加。
  5. 从现在起,过程将循环以下步骤

    • 对 puphpet-release 或 puphpet-release-composer-installer 项目进行更改。
    • 将更改提交到你的工作分支。
    • 再次运行 ./tests/integration/simulate-composer-install.sh
    • 检查 build/ 目录中的结果。
    • 重复。
  6. 一旦你对结果满意,推送你的分支并提交一个 PR。

运行集成测试

模拟脚本还包括一系列功能测试,用于验证安装程序的运行结果。使用 -t 标志来启用它们。

  • ./tests/integration/simulate-composer-install.sh -t [puphpet-release-branchname] # 发布项目分支名称默认为 master

脚本将报告任何错误并在失败时退出非零。

许可

MIT。特别是,所有 PuPHPet 的工作都属于原始作者。此项目仅为我们自己的方便而设。

版权

© Loadsys Web Strategies 2015