jigarius/phpake

Phpake 是为 PHP 编写的类似 make 的实用工具。

1.0.0 2022-10-15 19:27 UTC

This package is auto-updated.

Last update: 2024-09-15 23:44:42 UTC


README

Phpake 是为 PHP 编写的类似 make 的实用工具。它读作 fake,因为第二个 p 和单词 elephpant 中的第二个 p 一样,是不发音的。

我发现编写 Makefile 非常具有挑战性,因为语法与 shell 语法相似,但又有所不同。当我使用 Ruby 时,我使用 rake,它很棒,因为它使用 Ruby 语法。当我使用 PHP 时,我经常怀念有一个类似的工具,它易于安装、易于使用,并允许使用完整的 PHP 语法。因此,Phpake 应运而生。

欢迎使用它,并希望您喜欢它。

~ Jigarius

安装

可以使用 composer 轻松安装 Phpake,无论是项目内部还是系统全局。

全局安装

要在您的系统上全局安装 Phpake,请使用以下命令

composer global require jigarius/phpake

现在,为了在系统上的任何位置运行 phpake,需要将 Composer 的 vendor/bin 目录包含在 PATH 变量中。

项目安装

要在特定项目中安装 Phpake,请运行以下命令

composer require jigarius/phpake

然后您应该能够使用 composer exec phpake 运行它。

使用方法

要使用 Phpake,首先创建一个 Phpakefile 来定义一些任务。每个任务都是一个简单的 PHP 函数。您可以在 Phpakefile 部分中了解更多关于创建 Phpakefile 的信息。

以下是一些常见的 Phpake 命令。您需要从包含 Phpakefile 的目录中运行它们。

  • phpake - 显示可用的命令列表。
  • phpake hello-world - 运行由 function hello_world() 定义的命令。
  • phpake hello-human Bunny Wabbit - 将 2 个参数传递给任务。
  • phpake hello-group --help - 显示任务的帮助文本。

Phpakefile

一个 Phpakefile 包含了可以由 Phpake 执行的任务的定义。以下小节是关于定义此类任务的。一个 Phpake 任务定义是一个简单的 PHP 函数(一个任务回调)。以下是一些示例

简单任务

这是一个不接收输入并打印一些输出的简单任务。只需确保函数名称不与任何现有函数冲突即可。

/**
 * Say hello world.
 */
function hello_world() {
  echo 'Hello world' . PHP_EOL;
}

然后您可以使用 phpake hello-world 执行此任务。您还可以使用 PHP 命名空间组织函数。

常规参数

如果您的任务需要从用户那里获取一些输入,只需在函数定义中引入一个或多个参数即可。

function hello_human($fname, $lname = NULL) {
  // Do something
}

由于 $lname 有默认值,因此它被视为可选参数。

特殊参数

Phpake 是使用 Symfony Console 构建的,它提供了一些特殊参数,可以帮助您进一步丰富您的应用程序。如果您的任务具有这些特殊名称之一,它将具有特殊行为。有关这些对象的更多信息,请参阅 Symfony Console 文档。

$input

Symfony Console 输入对象。

$output

Symfony Console 输出对象,它使得生成格式化良好、色彩丰富的输出变得更容易。

function hello_joey($output) {
  $output->writeln('Hello <info>Joey</info>!');
}

<info></info> 中包含的文本将以颜色显示。

$command

正在执行的 Symfony 控制台命令的名称。它看起来像任务函数名,但有细微差别。

  • 对于 function hello_world(),命令变为 hello-world
  • 如果定义在命名空间中,它变为 namespace:hello-world

$rest

通常存在可以接受无限数量参数的任务。这些可以使用 $rest 参数来处理。它必须定义为函数的最后一个参数。

function hello_group(string $you, string $rest) {
  // Do something.
}

如果将 NULL 默认值分配给 $rest,则它变为可选的,否则它需要一个或多个值。

辅助函数

假设你有一个帮助其他任务但本身不是命令的函数。这样的函数也可以放在 Phpakefile 中。然而,为了让 Phpake 不将它们误认为是命令,函数名必须以下划线开头。例如,名为 _foo() 的函数不会产生名为 phpake foo 的命令,因为函数名以下划线开头。

开发

此项目使用 Docker 化的开发环境。像其他基于 docker-compose 的项目一样运行项目。

在首次开发时,

  • 使用 git clone 克隆仓库
  • 进入克隆的仓库
  • 构建 Docker 镜像:docker compose build
  • 启动容器:docker compose up -d

在初始设置之后,你可以使用以下命令

  • docker compose start:启动项目的容器
  • make ssh:在项目的容器内启动 shell
    • 你将大部分时间都花在这里
    • phpake 命令应该可用
  • docker compose stop:完成时停止项目的容器
  • 查看 Makefile 了解更多有用的命令

链接