loadsys / cakephp-shell-scripts

可重用 CakePHP 项目外壳脚本。

安装:39,860

依赖者: 0

建议者: 0

安全: 0

星标: 17

关注者: 10

分支: 1

开放问题: 5

语言:Shell

3.3.0 2017-09-28 19:22 UTC

README

Packagist Version Software License Total Downloads

这个脚本集合旨在为常见项目任务提供一致性和快捷方式。以下列出了关键工具及其描述。这些脚本与Loadsys CakePHP App Skeleton高度兼容。

  • 这是master分支,与3.x.x版本一起,仅适用于 Cake 3 项目。

  • cake-2.x分支和2.x.x版本是为使用 composer 的 Cake 2.x 项目设计的(仍然支持 git 子模块)。

  • 以下列出的大多数脚本可以接受第一个参数-h来输出使用信息。

  • 大多数脚本设计为以很少或没有参数运行;尽可能猜测合理的默认值。

  • 大多数脚本设计为在非零退出代码下优雅地失败。

需求

以下依赖项假定在目标系统上可用,并通过默认的$PATH可用。

  • bash
  • composer
  • curl
  • git
  • mail
  • mysql
  • mysqldump
  • php (建议 v5.6)
  • realpath (在 OS X 上默认不可用)
  • readlink
  • zip

此外,一些脚本还期望安装额外的工具,这些工具应作为您的项目中的 composer 依赖项安装:

  • bin/phpcs
  • bin/phpunit
  • bin/phpdoc
  • bin/cake (由目标项目安装)

如果这些项不可用,某些脚本可能无法按预期运行。

重要提示:此包的早期版本会自动通过 composer 安装 CakePHPPHP_CodeSnifferPHPUnitphpDocumentorPHP-ParserPHPMetrics。现在应将这些工具添加到项目的 composer.json 中,如下所示。

安装

警告:这些脚本目前仅与 Cake 3.x 兼容。不要尝试在其他任何内容上使用它们。

您的项目composer.json文件应包含类似以下内容:

{
	"require": {
		"loadsys/cakephp-shell-scripts": "~3.0",
		"cakephp/cakephp": "~3.3",
		"phpunit/phpunit": "~4.1",
		"phpdocumentor/phpdocumentor": "~2.0",
		"loadsys/loadsys_codesniffer": "~3.0",
		"nikic/php-parser": "~0.9",
		"phpmetrics/phpmetrics": "^1.10"
	},
	"config": {
		"bin-dir": "bin"
	}
}

然后运行composer install以将此存储库拉入您的项目。在项目根目录中应创建一个bin/文件夹,其中包含从此包中所有脚本的符号链接。

注意: bin-dir是非标准的,可能与安装“二进制文件”的其他 composer 包发生冲突。捆绑的脚本都期望位于PROJECT_ROOT/bin中,因此如果您的项目不包含bin-dir设置,则不要期望任何内容都能正常工作。

贡献改进

警告:我们欢迎外部贡献,但如果它们不影响我们对这些工具的使用,则可能会被拒绝。在发送拉取请求之前,请考虑这一点。

目前没有方便的方法来设置围绕此存储库的测试框架。

  1. 最好的做法是将此存储库(或其分支)克隆到现有和稳定项目的bin/文件夹中,以便您有东西可以测试。
  2. 根据需要修改脚本,并将其提交到主题分支。
  3. 如果您已添加新脚本,请确保它们是可执行的,并运行 ./composer-binaries 来自动更新 composer.json 文件(您应该使用 PHP 5.4+ 以正确使用 JSON_PRETTY_PRINT 标志)。
  4. 运行 composer validate 来对 json 文件进行语法检查。
  5. 提交您分支的 pull request。

重要脚本

bin/cache-clear

使用新的 ConsoleShell 遍历您应用中配置的所有缓存,并清除每个缓存。

bin/codesniffer-run

封装对 PHPCodeSniffer 的调用,以便可以从 Vagrant VM 内部或外部调用。还检查 phpcs 的 installed_paths 配置,并在 CakePHP 和 Loadsys 编码标准尚未存在的情况下注入必要的路径。

bin/coverage-ensure

从您的 phpunit.xml[.dist] 文件中读取由 phpunit 运行生成的 clover.xml 文件的位置,然后检查您的代码覆盖率。接受一个整数命令行参数,表示所需的最低百分比,如果您的覆盖率不足,则返回非零退出状态。旨在在自动化测试运行期间使用,如 Travis。

bin/db-backup

使用 config/app.php 中定义的默认数据库凭据,在本地 backups/ 文件夹中创建数据库的 ZIPed mysqldump。非常有用,因为它不需要指定数据库凭据。它还会报告 ZIP 大小,以帮助您随着时间的推移保持心理账户。

可以在执行危险操作(如代码部署和数据库迁移)之前手动使用一次备份,或者自动使用(如在 Vagrant VM 关闭脚本中,以保留内部数据库并防止 vagrant destroy。)

bin/db-login

一个简单的快捷脚本,使用在 config/app.php 中定义的 [Datasources][default] 键为您启动一个命令行 mysql 会话。在生产环境中运行手动数据查询进行故障排除时非常方便。

还正确处理了 I/O 重定向,所以您在通常运行 mysql --user=user -ppass --host=host --port=3306 database_name < import.sql 时,可以改为运行 bin/db-login < import.sql,而无需担心连接凭据。非常适合脚本和配置。

bin/deploy

自动化了应用于应用的只读副本(如预发布或生产)的所有步骤,以从存储库中提取新代码并更新本地运行的副本。它执行以下任务:

  • 检查本地工作副本,以确保自签出的提交以来没有做出任何更改,这可能会阻止自动提取或合并。
  • 备份活动数据库(虽然粗糙,但适用于小型应用)。
  • 从远程存储库提取和合并代码。
  • 应用迁移(如果存在)。
  • 清除 Cake 缓存目录。
  • 复制环境特定的配置(如果存在)。
  • 更新 git 子模块和/或 composer 依赖项。
  • 确保文件所有权和写权限仍然正确。
  • 向用户显示新活动提交的日志,并可选地生成通知电子邮件。

bin/docs-generate

封装对 phpDocumentor 的调用,以便可以从 Vagrant VM 内部或外部调用,但始终在内部执行。

bin/tests-run

旨在作为从您的宿主机器执行 phpunit 的便利方法,如果是从 Vagrant 内部调用,它将执行测试。

它也可以接受部分文件名作为参数,并直接运行相应的测试用例。这种使用方式旨在与文件监视器搭配使用,例如 kickergruntefsw。当源文件或其对应的测试用例文件发生变化时,可以自动在虚拟机内执行该单个文件的测试。

许可证

MIT

免责声明:我们自用这些工具,但这并不意味着它们在您的特定情况下一定会工作。此存储库是公开的,以防它对其他人有用(并且对我们来说很方便),但它 不受支持 并且 可能随时更改。如果问题或贡献不会对我们产生影响,可能会被忽略。警告过您了!

版权

版权所有 © 2015 Loadsys Web Strategies