phptaskman / core
友好的PHP任务启动器。
Requires
- php: >= 7.1.3
- ext-json: *
- consolidation/robo: ^1.4.10
- phptaskman/core-tasks: ^1.1
Requires (Dev)
- codeception/codeception: ^3
- drupol/php-conventions: ^1.5.8
Suggests
- phptaskman/changelog: Provides commands to generate a changelog.
- phptaskman/drupal: Provides Drupal related commands.
- phptaskman/package: Provides commands to create a package out of your sources.
- phptaskman/travis: Provides commands to execute commands from a Travis file.
This package is auto-updated.
Last update: 2024-08-28 23:55:12 UTC
README
PHP Taskman
描述
Taskman是一个运行命令和任务的助手。它包含一些简单的默认任务。
它可以帮助你在日常工作中设置需要运行在项目中的重复性任务。
Taskman基于Robo,不依赖于任何框架。
要求
- PHP >= 5.6
安装
composer require phptaskman/core
配置
Taskman可以通过不同的方式自定义
- 通过在运行命令时设置参数和选项。
- 通过在配置文件中提供默认值。Taskman将按指定顺序读取以下文件。较后文件中的选项将覆盖较前文件中的选项
- Taskman提供的默认值。此文件位于Taskman存储库中的
config/default.yml
。 taskman.yml.dist
- 项目特定默认值。此文件应放置在依赖于Taskman的项目根目录中。使用此文件声明默认选项,这些选项在常规情况下应与您的应用程序一起工作。应将此文件提交到项目中。taskman.yml
- 项目特定用户覆盖。此文件也位于依赖于Taskman的项目根目录中。此文件可用于使用针对用户本地环境的特定值覆盖选项。将此文件添加到.gitignore
中是一种良好的做法,以防止意外提交到项目存储库。- 存储在环境变量中的用户提供的全局覆盖。这些可以用于定义适用于所有使用Taskman的项目特定配置,例如数据库凭据和GitHub访问令牌。以下位置将被检查,并使用第一个找到的位置
$PHPTASKMAN_CONFIG
$XDG_CONFIG_HOME/phptaskman/taskman.yml
$HOME/.config/phptaskman/taskman.yml
- Taskman提供的默认值。此文件位于Taskman存储库中的
可选包
-
phptaskman/drupal 为您的Drupal环境提供命令。
-
phptaskman/package 提供从源生成包的命令。
-
phptaskman/travis 提供执行
.travis.yml
文件中部分内容的命令。
使用方法
./vendor/bin/taskman
然后运行一个命令
./vendor/bin/taskman [NAME-OF-THE-COMMAND]
文档
文档不是最新的,这是一个持续进行的工作。
Taskman将运行命令。命令包含一个或多个任务。
可以使用YAML或通过代码定义命令或任务。
在taskman.yml.dist
文件中具有一些任务的自定义命令示例
commands: foo:foo: - ls -la - { task: "mkdir", dir: "foo" } - ls -la - { task: "run", command: "foo:remove" } foo:remove: - rm -rf foo - ls -la
如您所见,定义了2个自定义命令:foo:foo
和foo:remove
。
这些命令包含任务,foo:foo
包含4个任务,foo:remove
包含2个任务。
任务可以是字符串或结构良好的数组。
在YAML中公开自定义任务
让我们使用相同的示例并在YAML文件中添加一个自定义任务。
tasks: baz: - ls -la commands: foo:foo: - ls -la - { task: "mkdir", dir: "foo" } - ls -la - { task: "run", command: "foo:remove" } foo:remove: - rm -rf foo - { task: "baz" }
Taskman默认支持一些任务,并由phptaskman/core-tasks包提供。
在YAML中公开自定义命令
Taskman 允许您使用 YAML 文件(taskman.yml.dist 或 taskman.yml)来暴露新命令。命令可以相互引用,这使得实现复杂场景变得相对简单。
- 在您的项目中创建一个
taskman.yml
或taskman.yml.dist
文件,并开始添加命令
commands:
hello-world:
- echo "Hello"
- echo "world !"
- { task: "mkdir", dir: "foo" }
datetime:
- date -u
Taskman 会自动查找您的包依赖中的此类文件。
这意味着您可以为包含自定义命令的 taskman.yml
文件创建自定义 Packagist 包。
高级自定义命令
您还可以定义与自定义命令一起的命令选项。
commands: setup:behat: description: Write a short description of your task here. help: Write a short help text here. # When you need to define command options, the list of tasks should be # placed under the 'tasks' key... tasks: - { task: "process", source: "behat.yml.dist", destination: "behat.yml" } # Add preconditions that are going to be evaluated before running the command. # If one of these preconditions does not return 0, the command is not run. preconditions: - test -f .env # ...and option definitions are under the 'options' key. options: # The option name, without the leading double dash ('--'). webdriver-url: # Optional. If this key is present, the input option value is assigned # to this configuration entry. This a key feature because in this way # you're able to override configuration values, making it very helpful # in CI flows. config: behat.webdriver_url # Optional. You can provide a list of shortcuts to the command, without # adding the dash ('-') prefix. shortcut: - wdu - wurl # The mode of this option. See the Symfony `InputOption::VALUE_*` # constants. Several options can be combined. # @see \Symfony\Component\Console\Input\InputOption::VALUE_NONE # @see \Symfony\Component\Console\Input\InputOption::VALUE_REQUIRED # @see \Symfony\Component\Console\Input\InputOption::VALUE_OPTIONAL # @see \Symfony\Component\Console\Input\InputOption::VALUE_IS_ARRAY mode: 4 # Optional. A description for this option. This is displayed when # asking for help. E.g. `./vendor/bin/run setup:behat --help`. description: 'The webdriver URL.' # Optional. A default value when an optional option is not present in # the input. default: null
定义全局命令选项
您可以定义可应用于任何命令的全局选项。
globals: options: env: description: Environment default: dev commands: test:command: tasks: - echo "Running on environment ${options.env}"
现在,您可以运行命令并动态地更改命令选项的值
./bin/console test:command --env=prod
贡献
请参阅 贡献指南。