linio/composer-parameter-handler

处理您的忽略参数文件

3.0.3 2020-03-17 20:59 UTC

This package is auto-updated.

Last update: 2024-09-18 07:02:15 UTC


README

此工具允许您在运行 composer 安装或更新时管理应用程序参数。它会在存储参数到一个以单级键(默认命名为 parameters)命名的配置文件中时工作。其他键将原样复制。

Build Status Code Coverage Scrutinizer Quality Score Latest Stable Version Latest Unstable Version

用法

在您的根 composer.json 文件中添加以下内容

{
    "require": {
        "linio/composer-parameter-handler": "~3.0"
    },
    "scripts": {
        "post-install-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters"
        ],
        "post-update-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters"
        ]
    },
    "extra": {
        "incenteev-parameters": {
            "file": "app/config/parameters.yml",
            "file-type": "yml"
        }
    }
}

然后,composer 脚本会创建或更新 app/config/parameters.yml,以匹配 dist 文件 app/config/parameters.yml.dist 的结构,同时询问您缺失的参数。

默认情况下,假定 dist 文件与参数文件位于同一位置,文件名后缀为 .dist。这可以在配置中更改。

{
    "extra": {
        "incenteev-parameters": {
            "file": "app/config/parameters.yml",
            "file-type": "yml",
            "dist-file": "some/other/folder/to/other/parameters/file/parameters.yml.dist"
        }
    }
}

脚本处理程序将交互式地询问您参数文件中缺失的参数,使用 dist 文件的值作为默认值。所有提示的值都将解析为内联 Yaml,以便您可以轻松定义 truefalsenull 或数字。如果以非交互式模式运行 composer,则使用 dist 文件的值作为缺失参数的值。

警告:此参数处理程序将覆盖您的参数.yml 文件中的任何注释或空格,因此请谨慎处理。如果您想为参数文件提供格式和注释,应在 dist 版本中完成。

保留过时的参数

警告:此脚本将从 parameters.yml 中删除不在 parameters.yml.dist 中的过时参数。如果您需要保留过时参数,可以在配置中使用 keep-outdated 参数。

{
    "extra": {
        "incenteev-parameters": {
            "keep-outdated": true
        }
    }
}

使用不同的顶级键

脚本处理程序在您的 dist 文件中查找 parameters 键。您可以通过在配置中使用 parameter-key 参数来更改此设置。

{
    "extra": {
        "incenteev-parameters": {
            "parameter-key": "config"
        }
    }
}

使用环境变量设置参数

对于您的生产环境,在部署时可能无法使用交互式提示。在这种情况下,您可以使用环境变量提供参数。这是通过提供环境变量与其应填充的参数之间的映射来实现的。

{
    "extra": {
        "incenteev-parameters": {
            "env-map": {
                "my_first_param": "MY_FIRST_PARAM",
                "my_second_param": "MY_SECOND_PARAM",
                "my.nested.param": "MY_NESTED_PARAM",
            }
        }
    }
}

如果设置了环境变量,其值将始终替换现有参数文件中设置的值。

由于环境变量只能是字符串,因此它们也被解析为内联 Yaml 值,以便可以轻松指定 nullfalsetrue 或数字。

重命名参数

如果您正在重命名参数,则新键将根据常规程序设置(尽可能提示,使用环境变量,使用默认值)。要使参数处理程序使用(已废弃的)参数的值,请指定重命名映射。

{
    "extra": {
        "incenteev-parameters": {
            "rename-map": {
                "new_param_1": "old_param_1",
                "new_param_2": "old_param_2"
            }
        }
    }
}

这将创建新的参数 new_param_1 和 new_param_2,同时使用 old_param_1 和 old_param_2 的值,分别。除非您也从 dist 版本中删除了它们,否则它不会删除旧参数。

如果旧参数不再存在(可能是因为它已经被重命名并删除),则不会覆盖任何参数。您不需要从重命名映射中删除已重命名的过时参数。

管理多个忽略文件

参数处理程序可以管理多个忽略文件。要使用此功能,incenteev-parameters 额外内容应包含一个包含多个配置的 JSON 数组,而不是配置对象。

{
    "extra": {
        "incenteev-parameters": [
            {
                "file": "app/config/parameters.yml",
                "file-type": "yml",
                "env-map": {}
            },
            {
                "file": "app/config/databases.yml",
                "file-type": "yml",
                "dist-file": "app/config/databases.dist.yml",
                "parameter-key": "config"
            }
        ]
    }
}