This commit is contained in:
Marko
2025-07-17 18:43:41 +02:00
parent 5461d4be67
commit 24dd57cb18
58 changed files with 1731 additions and 830 deletions

5
.ddev/.global_commands/.gitattributes vendored Executable file
View File

@@ -0,0 +1,5 @@
# #ddev-generated
# Everything in the commands directory needs LF line-endings
# Not CRLF as from Windows.
# bash especially just can't cope if it finds CRLF in a script.
* -text eol=lf

11
.ddev/.global_commands/db/mysql Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
## #ddev-generated
## Description: run mysql client in db container
## Usage: mysql [flags] [args]
## Example: "ddev mysql" or "ddev mysql -uroot -proot" or "echo 'SHOW TABLES;' | ddev mysql"
## `ddev mysql --database=mysql -uroot -proot` gets you to the 'mysql' database with root privileges
## DBTypes: mysql,mariadb
## ExecRaw: true
mysql -udb -pdb "$@"

10
.ddev/.global_commands/db/psql Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
#ddev-generated
## Description: run pgsql client in db container
## Usage: psql [flags] [args]
## Example: "ddev psql" or "ddev psql -U db somedb" or "echo 'SELECT current_database();' | ddev psql"
## DBTypes: postgres
## ExecRaw: true
psql "$@"

View File

@@ -0,0 +1,47 @@
#!/bin/bash
## #ddev-generated: If you want to edit and own this file, remove this line.
## Description: Run DBeaver against current db
## Usage: dbeaver
## Example: "ddev dbeaver [db] [user]"
## OSTypes: darwin,linux
## HostBinaryExists: /Applications/DBeaver.app,/usr/bin/dbeaver,/usr/bin/dbeaver-ce,/usr/bin/dbeaver-le,/usr/bin/dbeaver-ue,/usr/bin/dbeaver-ee,/var/lib/flatpak/exports/bin/io.dbeaver.DBeaverCommunity,/snap/bin/dbeaver-ce
if [ "${DDEV_PROJECT_STATUS}" != "running" ]; then
echo "Project ${DDEV_PROJECT} is not running, starting it"
ddev start
fi
database="${1:-db}"
user="${2:-root}"
type="$(echo $DDEV_DATABASE | sed 's/:.*//')"
if [ "${type}" = "postgres" ]; then
type="postgresql"
user="${2:-db}"
fi
# See: https://dbeaver.com/docs/wiki/Command-Line/#connection-parameters
CONNECTION="name=ddev-${DDEV_PROJECT}|driver=${type}|database=${database}|user=${user}|password=${user}|savePassword=true|host=127.0.0.1|port=${DDEV_HOST_DB_PORT}|openConsole=true|folder=DDEV"
case $OSTYPE in
"linux-gnu")
# Check for different binaries. Launch the first one found.
BINARIES=(
/usr/bin/dbeaver{,-ce,-le,-ue,-ee}
/var/lib/flatpak/exports/bin/io.dbeaver.DBeaverCommunity
/snap/bin/dbeaver-ce
)
for binary in "${BINARIES[@]}"; do
if [ -x "$binary" ]; then
echo "Launching $binary"
$binary -con "$CONNECTION" &> /dev/null & disown
exit 0
fi
done
;;
"darwin"*)
open -a dbeaver.app --args -con "$CONNECTION" &
echo "Attempted to launch DBeaver.app"
;;
esac

View File

@@ -0,0 +1,25 @@
#!/bin/bash
## #ddev-generated: If you want to edit and own this file, remove this line.
## Description: Run HeidiSQL against current db
## Usage: heidisql
## Example: "ddev heidisql"
## OSTypes: windows,wsl2
## HostBinaryExists: /mnt/c/Program Files/HeidiSQL/heidisql.exe,C:\Program Files\HeidiSQL\Heidisql.exe
arguments="--host=\"127.0.0.1\" --port=${DDEV_HOST_DB_PORT} --user=root --password=root --description=${DDEV_SITENAME}"
if [ "${DDEV_PROJECT_STATUS}" != "running" ]; then
echo "Project ${DDEV_PROJECT} is not running, starting it"
ddev start
fi
case $OSTYPE in
"win*"* | "msys"*)
'/c/Program Files/HeidiSQL/heidisql.exe' $arguments &
;;
# linux-gnu in this case is only WSL2 as selected in OSTypes above
"linux-gnu")
# HeidiSQL is Microsoft only, but we want to start it from WSL2
"/mnt/c/Program Files/HeidiSQL/heidisql.exe" $arguments &
;;
esac

View File

@@ -0,0 +1,75 @@
#!/bin/bash
## #ddev-generated: If you want to edit and own this file, remove this line.
## Description: Launch a browser with the current site
## Usage: launch [path] [-m|--mailpit]
## Example: "ddev launch" or "ddev launch /admin/reports/status/php" or "ddev launch phpinfo.php", for Mailpit "ddev launch -m"
## Flags: [{"Name":"mailpit","Shorthand":"m","Usage":"ddev launch -m launches the mailpit UI"}]
if [ "${DDEV_PROJECT_STATUS}" != "running" ]; then
echo "Project ${DDEV_PROJECT} is not running, starting it"
ddev start
fi
FULLURL=${DDEV_PRIMARY_URL}
HTTPS=""
if [ ${DDEV_PRIMARY_URL%://*} = "https" ]; then HTTPS=true; fi
while :; do
case ${1:-} in
-p|--phpmyadmin)
echo "phpMyAdmin is no longer built into DDEV, please 'ddev get ddev/ddev-phpmyadmin' and use 'ddev phpmyadmin' to launch phpMyAdmin" && exit 2
;;
-m|--mailpit|--mailhog)
if [[ ! -z "${GITPOD_INSTANCE_ID}" ]] || [[ "${CODESPACES}" == "true" ]]; then
FULLURL="${FULLURL/-${DDEV_HOST_WEBSERVER_PORT}/-${DDEV_HOST_MAILPIT_PORT}}"
else
if [ "${HTTPS}" = "" ]; then
FULLURL="${FULLURL%:[0-9]*}:${DDEV_MAILPIT_PORT}"
else
FULLURL="${FULLURL%:[0-9]*}:${DDEV_MAILPIT_HTTPS_PORT}"
fi
fi
;;
--) # End of all options.
shift
break
;;
-?*)
printf 'WARN: Unknown option (ignored): %s\n' "$1" >&2
;;
*) # Default case: No more options, so break out of the loop.
break
esac
shift
done
if [ -n "${1:-}" ] ; then
if [[ ${1::1} != "/" ]] ; then
FULLURL="${FULLURL}/";
fi
FULLURL="${FULLURL}${1}";
fi
if [ ! -z ${DDEV_DEBUG:-} ]; then
printf "FULLURL $FULLURL\n" && exit 0
fi
case $OSTYPE in
linux-gnu)
if [[ ! -z "${GITPOD_INSTANCE_ID}" ]]; then
gp preview ${FULLURL}
else
xdg-open ${FULLURL}
fi
;;
"darwin"*)
open ${FULLURL}
;;
"win*"* | "msys"*)
start ${FULLURL}
;;
esac

View File

@@ -0,0 +1,8 @@
#!/bin/bash
## #ddev-generated: If you want to edit and own this file, remove this line.
## Description: Launch a browser with Mailpit (an email & SMTP testing tool)
## Usage: mailpit
## Example: "ddev mailpit"
ddev launch -m

View File

@@ -0,0 +1,19 @@
#!/bin/bash
#ddev-generated
# Support for Querious, https://www.araelium.com/querious
## Description: Run querious with current project database
## Usage: querious [database]
## Example: "ddev querious"
## OSTypes: darwin
## HostBinaryExists: /Applications/Querious.app
## DBTypes: mysql,mariadb
if [ "${DDEV_PROJECT_STATUS}" != "running" ]; then
echo "Project ${DDEV_PROJECT} is not running, starting it"
ddev start
fi
DATABASE="${1:-db}"
open "querious://connect/new?host=127.0.0.1&user=db&password=db&use-compression=false&database=${DATABASE}&port=${DDEV_HOST_DB_PORT}"

View File

@@ -0,0 +1,44 @@
#!/bin/bash
#ddev-generated
## Description: Explain how to upgrade DDEV
## Usage: self-upgrade
## Example: "ddev self-upgrade"
## CanRunGlobally: true
mypath=$(which ddev)
case $mypath in
"/usr/bin/ddev")
if [[ ${OSTYPE} = "linux-gnu"* ]]; then
if command -v apt; then echo "You seem to have an apt-installed ddev, upgrade with 'sudo apt update && sudo apt upgrade -y ddev'";
elif [ -f /etc/arch-release ] && command -v yay >/dev/null ; then echo "You seem to have yay-installed ddev (AUR), upgrade with 'yay -Syu ddev-bin'";
elif command -v dnf; then echo "You seem to have dnf-installed ddev, upgrade with 'sudo dnf install --refresh ddev'"; fi
fi
;;
"/usr/local/bin/ddev")
if [ ! -L /usr/local/bin/ddev ]; then
printf "DDEV appears to have been installed with install_ddev.sh, you can run that script again to update.\ncurl -fsSL https://raw.githubusercontent.com/ddev/ddev/master/scripts/install_ddev.sh | bash\n"
elif command -v brew; then
echo "DDEV appears to have been installed with homebrew, upgrade with 'brew update && brew upgrade ddev'"
fi
;;
"/opt/homebrew/bin/ddev" | "/home/linuxbrew/.linuxbrew/bin/ddev")
if [ -L "$(which ddev)" ] && command -v brew; then
echo "DDEV appears to have been installed with homebrew, upgrade with 'brew update && brew upgrade ddev'"
fi
;;
"/c/Program Files/DDEV/ddev")
printf "DDEV was either installed with\nchoco install -y ddev\nor with the installer package.\n"
echo "You can upgrade with 'choco upgrade -y ddev'"
echo "Or by downloading the Windows installer from https://github.com/ddev/ddev/releases"
;;
*)
echo "Unable to determine how you installed ddev, but you can remove $mypath and reinstall with one of the techniques in https://ddev.readthedocs.io/en/latest/users/install/ddev-installation/"
esac

View File

@@ -0,0 +1,21 @@
#!/bin/bash
#ddev-generated
## Description: Run sequelace with current project database
## Usage: sequelace
## Example: "ddev sequelace" or "ddev sequelace database2" to open a database named "database2".
## OSTypes: darwin
## HostBinaryExists: /Applications/Sequel ace.app
## DBTypes: mysql,mariadb
DATABASE="${1:-db}"
if [ "${DDEV_PROJECT_STATUS}" != "running" ]; then
echo "Project ${DDEV_PROJECT} is not running, starting it"
ddev start
fi
query="mysql://root:root@${DDEV_PROJECT}.${DDEV_TLD}:${DDEV_HOST_DB_PORT}/${DATABASE}"
set -x
open "$query" -a "/Applications/Sequel Ace.app/Contents/MacOS/Sequel Ace"

View File

@@ -0,0 +1,82 @@
#!/bin/bash
#ddev-generated
## Description: Run sequelpro with current project database
## Usage: sequelpro
## Example: "ddev sequelpro"
## OSTypes: darwin
## HostBinaryExists: /Applications/Sequel Pro.app
## DBTypes: mysql,mariadb
if [ "${DDEV_PROJECT_STATUS}" != "running" ]; then
echo "Project ${DDEV_PROJECT} is not running, starting it"
ddev start
fi
tmpdir=$(mktemp -d -t sequelpro-XXXXXXXXXX)
templatepath="$tmpdir/sequelpro.spf"
cat >$templatepath <<END
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ContentFilters</key>
<dict/>
<key>auto_connect</key>
<true/>
<key>data</key>
<dict>
<key>connection</key>
<dict>
<key>database</key>
<string>db</string>
<key>host</key>
<string>127.0.0.1</string>
<key>name</key>
<string>${DDEV_SITENAME}</string>
<key>password</key>
<string>root</string>
<key>port</key>
<integer>$DDEV_HOST_DB_PORT</integer>
<key>rdbms_type</key>
<string>mysql</string>
<key>sslCACertFileLocation</key>
<string></string>
<key>sslCACertFileLocationEnabled</key>
<integer>0</integer>
<key>sslCertificateFileLocation</key>
<string></string>
<key>sslCertificateFileLocationEnabled</key>
<integer>0</integer>
<key>sslKeyFileLocation</key>
<string></string>
<key>sslKeyFileLocationEnabled</key>
<integer>0</integer>
<key>type</key>
<string>SPTCPIPConnection</string>
<key>useSSL</key>
<integer>0</integer>
<key>user</key>
<string>root</string>
</dict>
</dict>
<key>encrypted</key>
<false/>
<key>format</key>
<string>connection</string>
<key>queryFavorites</key>
<array/>
<key>queryHistory</key>
<array/>
<key>rdbms_type</key>
<string>mysql</string>
<key>rdbms_version</key>
<string>5.5.44</string>
<key>version</key>
<integer>1</integer>
</dict>
</plist>
END
open "${templatepath}"

View File

@@ -0,0 +1,32 @@
#!/bin/bash
#ddev-generated
# Support for TablePlus, https://tableplus.com/
# This command is available on macOS and WSL2 if TablePlus is installed in the default location.
## Description: Run tableplus with current project database
## Usage: tableplus
## Example: "ddev tableplus"
## OSTypes: darwin,wsl2
## HostBinaryExists: /Applications/TablePlus.app,/mnt/c/Program Files/TablePlus/TablePlus.exe
if [ "${DDEV_PROJECT_STATUS}" != "running" ]; then
echo "Project ${DDEV_PROJECT} is not running, starting it"
ddev start
fi
dbtype=${DDEV_DBIMAGE%:*}
driver=mysql
if [[ $dbtype == "postgres" ]]; then
driver=$dbtype
fi
query="${driver}://db:db@127.0.0.1:${DDEV_HOST_DB_PORT}/db?Enviroment=local&Name=ddev-${DDEV_SITENAME}"
case $OSTYPE in
"linux-gnu")
"/mnt/c/Program Files/TablePlus/TablePlus.exe" $query >/dev/null &
;;
"darwin"*)
set -x
open "$query" -a "/Applications/TablePlus.app/Contents/MacOS/TablePlus"
;;
esac

View File

@@ -0,0 +1,11 @@
#!/bin/bash
#ddev-generated
## Description: Run artisan CLI inside the web container
## Usage: artisan [flags] [args]
## Example: "ddev artisan list" or "ddev artisan cache:clear"
## ProjectTypes: laravel
## ExecRaw: true
php ./artisan "$@"

View File

@@ -0,0 +1,65 @@
#!/bin/bash
#ddev-generated: Remove this line to take over this script
## Description: Enable or disable blackfire.io profiling
## Usage: blackfire start|stop|on|off|enable|disable|true|false|status
## Example: "ddev blackfire" (default is "on"), "ddev blackfire off", "ddev blackfire on", "ddev blackfire status"
## ExecRaw: false
## Flags: []
function enable {
if [ -z ${BLACKFIRE_SERVER_ID} ] || [ -z ${BLACKFIRE_SERVER_TOKEN} ]; then
echo "BLACKFIRE_SERVER_ID and BLACKFIRE_SERVER_TOKEN environment variables must be set" >&2
echo "See docs for how to set in global or project config" >&2
echo "For example, ddev config global --web-environment-add=BLACKFIRE_SERVER_ID=<id>,BLACKFIRE_SERVER_TOKEN=<token>"
exit 1
fi
phpdismod xhprof xdebug
phpenmod blackfire
killall -USR2 php-fpm && killall -HUP nginx
# Can't use killall here because it kills this process!
pid=$(ps -ef | awk '$8~/^blackfire.*/ { print $2 }' 2>/dev/null)
if [ "${pid}" != "" ]; then kill $pid; fi
nohup blackfire agent:start --log-level=4 >/tmp/blackfire_nohup.out 2>&1 &
sleep 1
echo "Enabled blackfire PHP extension and started blackfire agent"
exit
}
function disable {
phpdismod blackfire
killall -USR2 php-fpm
# Can't use killall here because it kills this process!
pid=$(ps -ef | awk '$8~/^blackfire.*/ { print $2 }' 2>/dev/null)
if [ "${pid}" != "" ]; then kill ${pid}; fi
echo "Disabled blackfire PHP extension and stopped blackfire agent"
exit
}
if [ $# -eq 0 ] ; then
enable
fi
case $1 in
on|true|enable|start)
disable_xdebug
enable
;;
off|false|disable|stop)
disable
;;
status)
php --version | grep "with blackfire" >/dev/null 2>&1
phpstatus=$?
# Can't use killall here because it kills this process!
agentstatus=$(ps -ef | awk '$8~/^blackfire.*/ { print $2 }' 2>/dev/null)
if [ ${phpstatus} -eq 0 ]; then echo "blackfire PHP extension enabled"; else echo "blackfire PHP extension disabled"; fi
if [ "${agentstatus}" != "" ]; then echo "blackfire agent running"; else echo "blackfire agent not running"; fi
if [ ${phpstatus} -eq 0 ]; then printf "probe version %s\n" "$(php -v | awk -F '[ ,\~]+' '/blackfire/{ print $4; }')"; fi
printf "blackfire version %s\n" "$(blackfire version | awk '{print $3;}')"
;;
*)
echo "Invalid argument: $1"
;;
esac

View File

@@ -0,0 +1,17 @@
#!/bin/bash
#ddev-generated
## Description: Run Craft CMS command inside the web container
## Usage: craft [flags] [args]
## Example: "ddev craft db/backup" or "ddev craft db/backup ./my-backups" (see https://craftcms.com/docs/4.x/console-commands.html)
## ProjectTypes: craftcms,php
## ExecRaw: true
if [ "${DDEV_PROJECT_TYPE}" != "craftcms" ]; then
echo "The craft command is only available in the craftcms project type. You can update this in your project's config file, followed by restarting the DDEV project."
else
CRAFT_CMD_ROOT=${CRAFT_CMD_ROOT:="./"}
cd "${CRAFT_CMD_ROOT}"
php craft "$@"
fi

View File

@@ -0,0 +1,14 @@
#!/bin/bash
#ddev-generated
## Description: Run drush CLI inside the web container
## Usage: drush [flags] [args]
## Example: "ddev drush uli" or "ddev drush sql-cli" or "ddev drush --version"
## ProjectTypes: drupal7,drupal8,drupal9,drupal10,backdrop
## ExecRaw: true
if ! command -v drush >/dev/null; then
echo "drush is not available. You may need to 'ddev composer require drush/drush'"
exit 1
fi
drush "$@"

View File

@@ -0,0 +1,16 @@
#!/bin/bash
#ddev-generated
## Description: Run magento CLI inside the web container
## Usage: magento [flags] [args]
## Example: "ddev magento list" or "ddev magento maintenance:enable" or "ddev magento sampledata:reset"
## ProjectTypes: magento2
## ExecRaw: true
if [ ! -f bin/magento ]; then
echo 'bin/magento does not exist in your project root directory.'
echo 'Please verify that you installed the shop in your project directory.'
exit 1
fi
php bin/magento "$@"

9
.ddev/.global_commands/web/npm Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
#ddev-generated
## Description: Run npm inside the web container
## Usage: npm [flags] [args]
## Example: "ddev npm install" or "ddev npm update"
## ExecRaw: true
## HostWorkingDir: true
npm "$@"

9
.ddev/.global_commands/web/nvm Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash -i
#ddev-generated
## Description: Run nvm inside the web container
## Usage: nvm [flags] [args]
## Example: "ddev nvm install 6"
## ExecRaw: true
nvm "$@"

9
.ddev/.global_commands/web/php Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
#ddev-generated
## Description: Run php inside the web container
## Usage: php [flags] [args]
## Example: "ddev php --version"
## ExecRaw: true
php "$@"

View File

@@ -0,0 +1,11 @@
#!/bin/bash
#ddev-generated
## Description: Run python inside the web container, in the same relative directory as on host
## Usage: python [flags] [args]
## Example: "ddev python --version"
## ExecRaw: true
## HostWorkingDir: true
## ProjectTypes: django4,python
python "$@"

11
.ddev/.global_commands/web/sake Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
#ddev-generated
## Description: Run Silverstripe sake CLI inside the web container
## Usage: sake [flags] [args]
## Example: "ddev sake dev/build" or "ddev sake dev/tasks"
## ProjectTypes: silverstripe
## ExecRaw: true
sake "$@"

View File

@@ -0,0 +1,12 @@
#!/bin/bash
#ddev-generated
# This assumes that the typo3 command will be in the $PATH; if in vendor/bin/ it will be
## Description: Run TYPO3 CLI (typo3) command inside the web container
## Usage: typo3 [args]
## Example: "ddev typo3 site:list" or "ddev typo3 list" or "ddev typo3 extension:list"
## ProjectTypes: typo3
## ExecRaw: true
typo3 "$@"

View File

@@ -0,0 +1,12 @@
#!/bin/bash
#ddev-generated
# This assumes that the typo3cms command will be in the $PATH; if in vendor/bin/ it will be
## Description: Run TYPO3 Console (typo3cms) command inside the web container
## Usage: typo3cms [args]
## Example: "ddev typo3cms cache:flush" or "ddev typo3cms database:export"
## ProjectTypes: typo3
## ExecRaw: true
typo3cms "$@"

9
.ddev/.global_commands/web/wp Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
#ddev-generated
## Description: Run WordPress CLI inside the web container
## Usage: wp [flags] [args]
## Example: "ddev wp core version" or "ddev wp plugin install user-switching --activate"
## ProjectTypes: wordpress
## ExecRaw: true
wp "$@"

View File

@@ -0,0 +1,75 @@
#!/bin/bash
## #ddev-generated
## Description: Enable or disable xdebug
## Usage: xdebug on|off|enable|disable|true|false|toggle|status
## Example: "ddev xdebug" (default is "on"), "ddev xdebug off", "ddev xdebug on", "ddev xdebug toggle", "ddev xdebug status"
## Execraw: false
## Flags: []
if [ $# -eq 0 ] ; then
enable_xdebug
exit
fi
xdebug_version=$(php --version | awk '/Xdebug v/ {print $3}')
case $1 in
on|true|enable)
enable_xdebug
;;
off|false|disable)
disable_xdebug
;;
toggle)
case ${xdebug_version} in
v3*)
status=$(php -r 'echo ini_get("xdebug.mode");' 2>/dev/null)
if [[ "${status}" =~ .*"debug".* ]]; then
disable_xdebug
else
enable_xdebug
fi
;;
v2*)
status=$(php -r 'echo ini_get("xdebug.remote_enable");')
if [ "${status}" = "1" ]; then
disable_xdebug
else
enable_xdebug
fi
;;
*)
enable_xdebug
;;
esac
;;
status)
case ${xdebug_version} in
v3*)
status=$(php -r 'echo ini_get("xdebug.mode");' 2>/dev/null)
if [[ "${status}" =~ .*"debug".* ]]; then
result="xdebug enabled"
else
result="xdebug disabled"
fi
;;
v2*)
status=$(php -r 'echo ini_get("xdebug.remote_enable");')
if [ "${status}" = "1" ]; then
result="xdebug enabled"
else
result="xdebug disabled"
fi
;;
*)
result="xdebug disabled"
;;
esac
echo $result
;;
*)
echo "Invalid argument: $1"
;;
esac

View File

@@ -0,0 +1,34 @@
#!/bin/bash
## #ddev-generated
## Description: Enable or disable xhprof
## Usage: xhprof on|off|enable|disable|true|false|status
## Example: "ddev xhprof" (default is "on"), "ddev xhprof off", "ddev xhprof on", "ddev xhprof status"
## ExecRaw: false
## Flags: []
if [ $# -eq 0 ]; then
enable_xhprof
exit
fi
case $1 in
on | true | enable)
enable_xhprof
;;
off | false | disable)
disable_xhprof
;;
status)
status=$(php -m | grep 'xhprof')
if [ "${status}" = "xhprof" ]; then
result="xhprof is enabled"
else
result="xhprof is disabled"
fi
echo $result
;;
*)
echo "Invalid argument: $1"
;;
esac

10
.ddev/.global_commands/web/yarn Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
#ddev-generated
## Description: Run yarn inside the web container in the root of the project (Use --cwd for another directory)
## Usage: yarn [flags] [args]
## Example: "ddev yarn install" or "ddev yarn add learna" or "ddev yarn --cwd web/core add learna"
## ExecRaw: true
## HostWorkingDir: true
yarn "$@"