serrvius / composer-parameter-handler

该包已被废弃,不再维护。没有推荐替代包。

处理您的忽略参数文件,解析多个参数,为脚本自定义描述,递归解析

2.1.7 2018-07-19 23:24 UTC

This package is not auto-updated.

Last update: 2022-11-28 13:55:32 UTC


README

此工具允许您在运行composer安装或更新时管理忽略的参数。它将参数存储在名为parameters的单个顶级键下的Yaml文件中时(默认情况下)工作。其他键将保持不变。

用法

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

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

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

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

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

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

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

保留过时参数

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

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

处理多级参数

如果在您的配置中有多级键,您可以使用recursive参数,脚本将要求您更改次级键。
如果您想处理所有级别,您可以在配置中使用recursive参数。

{
    "extra": {
        "incenteev-parameters": {
            "recursive": true
        }
    }
}

使用多个顶级键

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

{
    "extra": {
        "incenteev-parameters": {
            "parameter-keys": ["db", "cacheDir", "siteName"]
        }
    }
}

使用环境变量设置参数

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

{
    "extra": {
        "incenteev-parameters": {
            "env-map": {
                "my_first_param": "MY_FIRST_PARAM",
                "my_second_param": "MY_SECOND_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的值。除非您也从发行版中删除了它们,否则不会删除旧参数。

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

管理多个忽略的文件

参数处理器可以管理多个忽略的文件。要使用此功能,incenteev-parameters扩展应该包含一个包含多个配置的JSON数组,而不是配置对象

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

使用脚本描述

脚本可以显示针对每个脚本的定制消息,您可以通过添加带有键description的键来添加它

{
    "extra": {
        "incenteev-parameters": [
              {
                "description": "Production config",                
                "file": "config/app.prod.yml",
                "dist-file": "config/app.yml.dist"
              },
              {
                "description": "Development config",
                "file": "config/app.dev.yml",
                "dist-file": "config/app.yml.dist"
              }
            ]
    }
}