yaml - Lando 工具命令语法

标签 yaml wp-cli lando

我正在尝试在 .lando.yml 文件中设置一些工具,以快速完成我在每次新安装 WordPress 时执行的多项任务。一切工作都很好,除了我尝试使用 [--extra-php] wp-cli 中的选项和语法如 wp-cli 文档中所示。

运行命令时出现以下错误:/bin/sh: 1: Syntax error: "(" unexpected

如果我删除从 <<PHP 开始的代码并于收盘 PHP 结束,一切都完美执行。

我假设我需要以某种方式转义括号,但是如何在 YAML 中正确地做到这一点?虽然我没有具体获得 YAML,所以我也不确定这是否真的是问题所在。

配置的相关部分: 错误发生在第一个括号处。

tooling:
  npm:
    service: node
  wp-install:
    service: appserver
    cmd:
      - wp config create --dbname=wordpress --dbuser=wordpress --dbpass=wordpress --dbhost=database --extra-php <<'PHP' 
        define( 'WP_DEBUG', true ); 
        define( 'WP_DEBUG_LOG', true ); 
        define( 'ACF_PRO_LICENSE', 'XXX'); 
        PHP      
      - wp core install --url=http://$LANDO_APP.$LANDO_DOMAIN --title=XXX --admin_user=StudioAl --admin_password=XXX <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2409094540494d4a7b4149454d48194f4156564d64575051404d4b45480a474b49" rel="noreferrer noopener nofollow">[email protected]</a>
      - wp plugin install gravityformscli --activate
      - wp gf install --XXX --activate
      - wp plugin install "http://connect.advancedcustomfields.com/index.php?p=pro&a=download&k=XXX" --activate

wp-cli 文档中问题代码的使用示例,供引用

# Enable WP_DEBUG and WP_DEBUG_LOG
$ wp config create --dbname=testing --dbuser=wp --dbpass=securepswd --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
PHP
Success: Generated 'wp-config.php' file.

最佳答案

YAML 解析器加载此内容:

  - wp config create --dbname=wordpress --dbuser=wordpress --dbpass=wordpress --dbhost=database --extra-php <<PHP 
    define( 'WP_DEBUG', true ); 
    define( 'WP_DEBUG_LOG', true ); 
    define( 'ACF_PRO_LICENSE', 'XXX'); 
    PHP

作为包含单个项目的序列,该项目是一个字符串不包含任何换行符。这就像:

["wp config create --dbname=wordpress --dbuser=wordpress --dbpass=wordpress --dbhost=database --extra-php <<PHP define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'ACF_PRO_LICENSE', 'XXX'); PHP"]

如果将该字符串传递给(Unix)shell,IMO 不会将其解释为 heredoc因为分隔标识符 (PHP) 不会单独出现在一行中。

如果通过在标量前插入管道符号将该标量设为文字样式标量,您可能会取得更大的成功:

  - |
    wp config create --dbname=wordpress --dbuser=wordpress --dbpass=wordpress --dbhost=database --extra-php <<PHP 
    define( 'WP_DEBUG', true ); 
    define( 'WP_DEBUG_LOG', true ); 
    define( 'ACF_PRO_LICENSE', 'XXX'); 
    PHP

这样加载的字符串包括换行符(但没有前导空格)

关于yaml - Lando 工具命令语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76709013/

相关文章:

java - 在命令行上运行时 Spring Boot 应用程序挂起

wordpress - 如何在构建过程中激活Docker镜像中的WordPress插件?

wordpress - 在 Lando 实例中创建符号链接(symbolic link)

linux - 如何在 Linux 中使用 bash 脚本运行 WP-CLI

docker - 我可以回滚到以前版本的 Docker Desktop 吗?

docker - 容器未连接到网络lando_bridge_network

python-3.x - yaml 八进制整数生成错误

yaml - 为什么我收到 VpcId : expected type: String, 已找到 : JSONArray error with my CloudFormation Template?

python - 如何使用 cloudformation 或 yaml 设置日志流的保留天数

wordpress - 当/var/www/html已安装在主机中时,如何将wordpress容器与wp-cli容器一起使用?