如何从另一个调用 ddev web 命令

How to call a ddev web command from another one

正如 中的回答 shell .ddev/commands/web 中的脚本非常棒。

是否也可以调用另一个命令? 喜欢

#!/bin/bash

# pull prod content to local

dump_remote_database
sync_down_files
import_database

这将(理论上)调用 . ddev/commands/web

中定义的三个独立命令

目前我得到

/mnt/ddev_config/commands/web/sync_down: line 5: dump_remote_database: command not found
/mnt/ddev_config/commands/web/sync_down: line 6: sync_down_files: command not found
/mnt/ddev_config/commands/web/sync_down: line 7: import_database: command not found

在主机命令上,您可以调用另一个 ddev 命令,但不能调用 web 或其他命令,因为它们在容器内执行,甚至知道 ddev 存在。

因此,使用主机命令,例如 ddev relaunch in .ddev/commands/host/relaunch,您可以在其中重新启动调用 ddev launch:

#!/bin/bash

## Description: Launch a browser with drupal /user
## Usage: relaunch [path]
## Example: "ddev relaunch"

ddev launch /user

尽管使用 Web 容器命令,您是在 Web 容器内部执行(它甚至不知道 ddev 的存在,它是它自己的小世界)。因此,在那种情况下,您可能需要 copy/paste 另一个 Web 命令的某些功能。

假设您不太喜欢内置 drush.example,您只需要一个 "drushuli" 命令。 drush.example 直接使用 drush,而您可以通过 drush uli 直接自己(在 Web 容器内)使用 drush。所以我将复制 .ddev/commands/drush.example 并提出:

#!/bin/bash

## Description: Run drush uli inside the web container
## Usage: drushuli [flags] [args]
## Example: "ddev drushuli"

drush uli

这是一个非常愚蠢的例子,但你明白了。使用您正在使用的环境中可用的工具。