【问题标题】:composer - dynamically set parameters variablecomposer - 动态设置参数变量
【发布时间】:2016-08-26 11:37:20
【问题描述】:

我有以下设置:

  • symfony 2.7 经典结构

  • 依赖管理作曲家

我需要做的是在 parameters.yml 中设置一个变量,其中包含运行 composer 时的时间戳。

为此,我尝试了以下解决方案:

parameters.yml.dist

   [bla bla bla]
   ran_timestamp: ~


composer.json
   [bla bla bla]
   "scripts": {
       "pre-install-cmd": [
          "export SYMFONY_APP_DATE=$(date +\"%s\")"
       ],
   }
   "extra": {
       "incenteev-parameters": {
          "file": "app/config/parameters.yml",
          "env-map": {              
            "ran_timestamp": "SYMFONY_APP_DATE"
          }
       }
   }

在 parameters.yml 中设置变量的部分工作正常(参数是使用来自 SYMFONY_APP_DATE 环境变量的值创建的)。

问题是运行 composer 时 env 变量没有更新。有人可以帮我吗?

附加信息:

  • 如果我在 cli 中手动运行 pre-install-cmd 中的命令,它工作正常(所以我认为命令本身没问题)

  • 我看到命令在 composer 开始安装后正在运行,所以我认为它已执行(输出如下):

$composer 安装

导出 SYMFONY_APP_DATE=$(date +"%s")

使用包信息加载作曲家存储库 [bla bla bla]

  • 没有错误报告

  • 我假设 composer 没有权限设置环境变量? - 不,不是这个。它与变量范围有关。

【问题讨论】:

  • @JakubZalas 这不是真的,它将使用新的 env 值进行更新
  • @DmitryMalyshenko 你是对的。环境变量的处理方式确实不同。 github.com/Incenteev/…
  • @Jakub Zalas 正如 Dmitry 所指出的,它已更新。这部分工作正常。

标签: php symfony composer-php


【解决方案1】:

问题显然是您在子进程中设置 env 参数(这是为每个脚本创建的),但是不可能从子进程重新定义父进程的 env 参数(即从一个设置作曲家本身的 env 值它的脚本)

我认为您需要扩展 \Incenteev\ParameterHandler\ScriptHandler::buildParameters 以实现它。

UPD:我找到了实现它的方法

为 composer.json 中的 build-params 定义一个特殊的块

"scripts": { "build-params": [ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters" ],

而不是在post-install-cmd 块而不是Incenteev\\ParameterHandler\\ScriptHandler::buildParameters 中实现

"export SYMFONY_APP_DATE=$(date +\"%s\") && composer run-script build-params"

这将在同一进程中创建环境变量和构建参数

【讨论】:

  • 是的,你指出了正确的问题,所以 +1 :)。我认为 export 命令使该变量可用于所有进程,但显然这并不像我预期的那样工作。我正在努力寻找解决方法。您能否详细说明扩展 buildParameters 的含义?有任何相关文档吗?
  • 看起来有效,我现在就试试。但作为一个缺点......不会像这样运行构建参数两次吗? (一个来自普通作曲家安装,一个来自 bash 命令)
  • @zozo,不,它不会,如果你在 post-install-cmd 部分代替 Incenteev\\ParameterHandler\\ScriptHandler::buildParameters 的话
  • 你说得对,我跳过了答案中说“而不是”的部分:)。
  • 完美运行。特维姆。
猜你喜欢
  • 1970-01-01
  • 2019-01-29
  • 2020-08-03
  • 2018-03-21
  • 2018-12-18
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
相关资源
最近更新 更多