loadsys / puphpet-release-composer-installer
提供与 `loadsys/puphpet-release` 兼容的 composer 自定义安装程序,通过 composer 将 PuPHPet.com vagrant box 添加到项目中。危险!会覆盖非供应商文件!请务必仔细阅读说明。
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: 2022-02-01 12:44:34 UTC
README
提供与 loadsys/puphpet-release
兼容的 composer 自定义安装程序,通过 composer 将 PuPHPet.com vagrant box 添加到项目中。
你可能永远不会直接使用这个项目。我们使用它来处理我们的 loadsys/puphpet-release 包,将 PuPHPet 包的部分内容复制到消耗项目的必要位置。
⚠️ 重要警告
非常重要的一点是要指出,这个安装程序做了 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插件很困难,因为它至少涉及到2个其他项目: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
(注意此路径。) -
在任一项目中创建一个功能分支,并将你的更改
commit
到分支中。(将更改提交到分支对于此过程非常重要:你想要测试的任何更改都必须已经存在于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项目进行更改。
- commit你的更改到你的工作分支。
- 再次运行
./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