wemakecustom/composer-script-utils

此包已被弃用,不再维护。未建议替代包。

Composer脚本的工具集

v2.0 2016-03-10 21:14 UTC

This package is not auto-updated.

Last update: 2022-07-18 08:52:33 UTC


README

Composer脚本的工具集

Build Status

文档

PackageLocator::getPackagePath

获取包的完整安装路径

<?php
use Composer\Script\Event;
use WMC\Composer\Utils\Composer\PackageLocator;

class ScriptHandler
{
    public static function myHandler(Event $event)
    {
        $directory = PackageLocator::getPackagePath($event->getComposer(), 'composer/composer');
    }
}
?>

PathUtil::getRelativePath

从文件/文件夹到文件/文件夹的短相对路径

<?php
use WMC\Composer\Utils\Filesystem\PathUtil;

$relPath = PathUtil::getRelativePath('/tmp/foo/bar', '/tmp/baz'); // ../foo/bar
?>

ConfigFile

交互式地询问值以填充配置文件。询问的值来自dist文件,其中使用的值是默认值

例如:使用以下方式请求数据库配置

; database.dist.ini
user=root
pass=root
name=my_database
host=localhost

默认情况下,它会从环境读取值,使用文件名作为前缀。例如:DATABASE_USER 您可以通过指定自定义环境映射来覆盖此设置,使用 setEnvMap(array('field' => 'ENV'))

默认情况下,它会刷新过时的参数(在配置文件中存在,但在dist文件中不存在)。您可以使用 setKeepOutdatedParams 来覆盖此设置。

支持的格式

目前支持json、ini、yml和yaml文件。

对于命令行输入,将使用json_decode,但字符串不需要引号。

dist/target文件的不同格式

可以通过连接扩展名,在一个格式中有dist文件,在另一个格式中有输出文件。这可以用于在PHP脚本中生成默认值,但仍以其他格式保存。

例如

<?php
// dist/foo.ini.php
return array('foo' => 'bar');
?>
; local/foo.ini
foo=bar

默认Composer脚本

如果您想使用默认配置而无需任何自定义映射,可以使用包含的Composer脚本

path/to/dist/dir中的每个文件都将编译到path/to/target/dir

{
    "scripts": {
        "post-install-cmd": [
            "WMC\\Composer\\Utils\\ScriptHandler::updateDirs"
        ],
        "post-update-cmd": [
            "WMC\\Composer\\Utils\\ScriptHandler::updateDirs"
        ]
    },
    "extra": {
        "update-config-dirs": {
            "path/to/dist/dir": "path/to/target/dir"
        }
    }
}

自定义处理

为了有更多的控制,直接使用FileUpdater

<?php
use Composer\Script\Event;
use WMC\Composer\Utils\ScriptHandler as Base;

class ScriptHandler
{
    public static function myHandler(Event $event)
    {
        $configFile = Base::createConfigFileUpdate($event->getIO());
        $configFile->updateFile('database.ini', 'database.ini.dist');
    }
}
?>

注意:如果您想将dist文件与目标文件(例如,一个parameters.yml.dist与一个parameters.yml)一起保存,您将需要使用自定义处理。

作者

备注

在PHP 5.3+上测试过