友好的PHP任务启动器。

资助包维护!
drupol

1.0.5 2019-08-13 03:11 UTC

README

Latest Stable Version GitHub stars Total Downloads Build Status Scrutinizer code quality Code Coverage License Say Thanks! Donate!

PHP Taskman

描述

Taskman是一个运行命令和任务的助手。它包含一些简单的默认任务。

它可以帮助你在日常工作中设置需要运行在项目中的重复性任务。

Taskman基于Robo,不依赖于任何框架。

要求

  • PHP >= 5.6

安装

composer require phptaskman/core

配置

Taskman可以通过不同的方式自定义

  1. 通过在运行命令时设置参数和选项。
  2. 通过在配置文件中提供默认值。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

可选包

使用方法

./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:foofoo: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.ymltaskman.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

贡献

请参阅 贡献指南