Как вызвать веб-команду ddev из другого

Как указано в ddev exec: команда не найдена (.bash_aliases) сценарии оболочки в .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

person Urs    schedule 16.02.2020    source источник


Ответы (1)


В команде хоста вы можете вызвать другую команду ddev, но не веб-команду или другую команду, потому что они выполняются внутри контейнера и даже знают, что ddev существует.

Таким образом, с помощью команды хоста, например ddev relaunch в .ddev / commands / host / relaunch, у вас может быть это, где перезапуск вызывает ddev launch:

#!/bin/bash

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

ddev launch /user

Однако с помощью команды веб-контейнера вы выполняете внутри веб-контейнера (который даже не знает, что ddev существует, это его собственный маленький мир). Так что в этом случае вам, возможно, придется скопировать / вставить какую-то функцию другой веб-команды.

Допустим, вам достаточно не нравится встроенный drush.example, и вам нужна просто команда drushuli. В то время как drush.example использует drush напрямую, вы можете просто использовать drush напрямую (внутри веб-контейнера) с drush uli. Итак, я скопирую .ddev / commands / drush.example и получу:

#!/bin/bash

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

drush uli

Это довольно глупый пример, но вы понимаете. Используйте инструменты, доступные вам в среде, с которой вы работаете.

person rfay    schedule 16.02.2020
comment
Чтобы уточнить: значит, одна веб-команда не может вызывать другую веб-команду? - person Urs; 18.02.2020
comment
@Urs Нет, но пользовательская веб-команда может делать все, что может делать другая пользовательская веб-команда ... - person rfay; 18.02.2020
comment
Спасибо @rfay - думаю, я понял. Я хотел разделить веб-команду на более мелкие блоки, чтобы я мог напрямую вызывать отдельные «функции» и избегать повторений кода. - person Urs; 23.02.2020
comment
Другой вариант для вас: все веб-команды находятся в контейнере в / mnt / ddev_config / commands / web /, поэтому вы можете вызывать их напрямую. Или добавьте это в $ PATH. - person rfay; 29.02.2020