cube/composer-dist-installer

此包已被废弃且不再维护。未建议替代包。

在项目设置时自动安装 .dist 模板文件。与任何 PHP 框架或包兼容。

1.0-beta5 2015-09-18 08:16 UTC

This package is not auto-updated.

Last update: 2022-05-02 15:20:38 UTC


README

类型 状态
构建 Build Status Code Coverage Scrutinizer Code Quality
Packagist Latest Stable Version Total Downloads Latest Unstable Version License

在项目中运行 composer install 时自动安装 .dist 文件,并可选地使用非常简单直观的模板语法填充数据。

该项目旨在与框架无关。您只需要使用 Composer 来管理项目的依赖项。

安装

只需通过运行以下命令使用 Composer 安装:

composer require cube/composer-dist-installer:~1.0@beta

使用方法

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

{
    "scripts": {
        "post-install-cmd": [
            "Cube\\ComposerDistInstaller\\Bootstrap::install"
        ]
    },
    "extra": {
        "dist-installer-params": {
            "file": "config/autoload/database.config.php.dist"
        }
    }
}

然后,将根据位于 config/autoload/database.config.php.dist 中的模板以及询问您在 .dist 文件中请求的任何参数创建 config/autoload/database.config.php 文件。

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

{
    "extra": {
        "dist-installer-params": {
            "file": "config/autoload/database.config.php",
            "dist-file": "some/other/folder/file/database.dist"
        }
    }
}

脚本处理器将通过交互式方式询问您在 .dist 文件中请求的参数,并使用可选的默认值。

如果以非交互模式运行 composer,则将使用默认值来处理缺少的参数。

警告:如果目标中已存在配置文件,您将收到提示,询问是否要覆盖它。如果您选择覆盖,则将在配置文件旁边创建一个备份文件。您负责手动合并新文件和旧文件之间的差异 - 然后删除旧文件。

多个文件

您可以使用以下替代语法指定要处理的多个文件

{
    "extra": {
        "dist-installer-params": [
            {
                "file": "config/autoload/database.config.php",
                "dist-file": "some/other/folder/file/database.dist"
            },
            {
                "file": "config/autoload/session.config.php",
                "dist-file": "some/other/folder/file/session.dist"
            }
        ]
    }
}

模板语法

在将模板文件(.dist 文件)复制到最终目的地之前,处理器将查找您可能已在模板中包含的任何参数,并询问其值。

参数的语法是 {{QUESTION|DEFAULT}}

  • QUESTION:应包含整个问题,包括问号等。可选地在字符串中包含 [] 以指定默认值在问题中的位置(否则将没有指示默认值存在)。
  • DEFAULT:指定默认值。要使用环境变量作为默认值,请使用以下语法:=ENV[VARIABLE_NAME]

例如,考虑以下模板

<?php
return array(
    'doctrine' => array(
        'connection' => array(
            // default connection name
            'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(
                    'host'     => '{{Database host []?|localhost}}',
                    'port'     => '{{Database port []?|3306}}',
                    'user'     => '{{Database user []?|=ENV[USER]}}',
                    'password' => '{{Database password?}}',
                    'dbname'   => '{{Database name?}}',
                )
            ),
        )
    ),
);

在安装项目时,Composer 将询问您所有信息并在必要时使用默认值。提示将如下所示

$ composer install

# .... some composer output

Creating the config/autoload/database.config.php file
Destination file already exists, overwrite (y/n)? y
A copy of the old configuration file was saved to config/autoload/database.config.php.old

Database host [localhost]? test.db.acme.be
Database port [3306]?    # <enter> to accept the default
Database user [staging]? # this default value was pulled from
                         # the "USER" environment variable.
Database password? 1234test
Database name? stage

最终的文件将如下所示

<?php
return array(
    'doctrine' => array(
        'connection' => array(
            // default connection name
            'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(
                    'host'     => 'test.db.acme.be',
                    'port'     => '3306',
                    'user'     => 'staging',
                    'password' => '1234test',
                    'dbname'   => 'stage',
                )
            ),
        )
    ),
);

环境变量

可以使用环境值来设置参数的默认值。其语法为 {{Question|=ENV[VARIABLE_NAME]}},其中 VARIABLE_NAME 是提供默认值的环境值。

在上面的示例中,以下行使用了USER环境变量作为默认值

参数的多个默认值

也可以有多个默认值(例如 {{QUESTION|DEFAULT1|DEFAULT2}}。如果想要使用环境变量作为默认值,并且当环境变量未设置时回退到硬编码的默认值,这可能会很有用。

因此,你可以在你的dis文件中写入以下内容

myVar: {{"My var []?|=ENV[MY_VAR]|my_default_var}}

如果MY_VAR环境变量设置为'foobar',问题将是

My var [foobar]?

如果MY_VAR环境变量未设置,问题将是

My var [my_default_var]?

非交互模式

当使用--no-interaction选项启动composer时,将应用默认值。这对于部署过程是一个很好的选项,如果你在你的dist文件中使用了环境变量。

授权协议

请参阅此同一软件包中的LICENSE.txt文件。

鸣谢

版权所有 (c) 2015 by Cu.be Solutions

作者