phpfu / puphpet-installer
提供与 `loadsys/puphpet-release` 兼容的 composer 自定义安装器,通过 composer 将 PuPHPet.com 的 vagrant box 添加到项目中。危险!会覆盖非供应商文件!非常严重,请不要使用此工具,或者仔细阅读 README 文件。
Requires
- composer-plugin-api: 1.0.0
- symfony/filesystem: ~2.6
Requires (Dev)
- composer/composer: 1.0.*@dev
- phpunit/phpunit: ~4.1
This package is not auto-updated.
Last update: 2024-09-14 18:25:59 UTC
README
提供与 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
包包含在消费者项目中的结果。要使用它
-
检出此项目:
git clone git@github.com:loadsys/puphpet-release-composer-installer.git
-
在某处检出 puphpet-release 项目的副本以进行工作。
git clone git@github.com:loadsys/puphpet-release.git
(注意此路径。) -
在任意一个项目中创建一个功能分支,并将你的更改提交到分支。(提交更改对于此过程非常重要:你希望测试的所有更改必须已存在于 git 索引中,而不仅仅是你的工作副本中。)
-
运行
./tests/integration/simulate-composer-install.sh
脚本将提示你输入任何必要的信息,为使用重置 build/ 目录,为你编写适当的 "composer.json" 更改,并在 build/ 目录中为你执行
composer install
命令,你可以在其中查看结果。- build/ 文件夹应最终包含一个
Vagrantfile
和puphpet/
文件夹。 - 示例
build/puphpet.yaml
文件应已复制到build/puphpet/config.yaml
。 - 示例
.gitignore
文件应已“安全”更新,以包括对“根”项目文件夹(build/
)的新添加。
- build/ 文件夹应最终包含一个
-
从现在起,过程将循环以下步骤
- 对 puphpet-release 或 puphpet-release-composer-installer 项目进行更改。
- 将更改提交到你的工作分支。
- 再次运行
./tests/integration/simulate-composer-install.sh
。 - 检查 build/ 目录中的结果。
- 重复。
-
一旦你对结果满意,推送你的分支并提交一个 PR。
运行集成测试
模拟脚本还包括一系列功能测试,用于验证安装程序的运行结果。使用 -t
标志来启用它们。
./tests/integration/simulate-composer-install.sh -t [puphpet-release-branchname]
# 发布项目分支名称默认为master
。
脚本将报告任何错误并在失败时退出非零。
许可
MIT。特别是,所有 PuPHPet 的工作都属于原始作者。此项目仅为我们自己的方便而设。
版权
© Loadsys Web Strategies 2015