loadsys/puphpet-release-composer-installer

此包已被废弃,不再维护。作者建议使用 phpfu/puphpet-installer 包。

提供与 `loadsys/puphpet-release` 兼容的 composer 自定义安装程序,通过 composer 将 PuPHPet.com vagrant box 添加到项目中。危险!会覆盖非供应商文件!请务必仔细阅读说明。

安装: 466

依赖: 0

建议: 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: 2022-02-01 12:44:34 UTC


README

Build Status

提供与 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包的结果。要使用它

  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. 在任一项目中创建一个功能分支,并将你的更改commit到分支中。(将更改提交到分支对于此过程非常重要:你想要测试的任何更改都必须已经存在于git索引中,而不仅仅是你的工作副本。)

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

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

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

    • 对puphpet-release或puphpet-release-composer-installer项目进行更改。
    • commit你的更改到你的工作分支。
    • 再次运行./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