如何向Laravel Envoy任务传递参数

7

我正在处理一个Laravel项目,我们使用docker-compose来搭建本地开发环境,我们试图缩短安装Composer依赖和使用Laravel/Envoy进行Artisan的命令。以下是我们迄今为止所做的示例:

@task('composer-require')
   docker-compose exec -u 1000 web composer require {{ $package }}
@endtask

使用方式如下:

envoy run composer-install --package=xxx/yyy

现在我们的 Envoy.blade.php 文件变得越来越大,因为我们必须把每个用法都作为一个任务,并且我们必须记住所有这些名称。

我想知道是否可能,如何将像这样的命令 envoy run composer install xxx/yyy 定义为只有一个名为 composer 的任务,然后传递 install xxx/yyy 部分?

对于我的英语表示抱歉。

1个回答

8
您可以像这样传递参数:envoy run deploy --command=require --package=laracasts/flash. 如果您愿意,还可以为--package--command设置默认值。在可能的情况下,请使用部署“故事”而不是一次运行一个任务。
@servers(['web' => '127.0.0.1'])

@setup
    $package = isset($package) ? $package : "laravel/envoy";
    $command = isset($command) ? $command : "require";
@endsetup

@story('deploy')
    composer
@endstory

@task('composer')
    echo "Running: composer {{ $command }} {{ $package }}.";
    composer {{ $command }} {{ $package }}
@endtask

@finished
    echo "Envoy deployment complete.\r\n";
@endfinished

1
这就是我实际在做的事情!我和泰勒·奥特维尔交谈后发现,使用类似于bash的东西来实现我的目标会更好。 - Ivan Vilanculo
@karl-hill 有没有办法将参数传递给 @ 任务函数?我正在尝试集中一些代码,而不是复制函数,并且在命令行中传递参数并不是我真正需要的。 - kp123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接