wemakecustom / composer-script-utils
此包已被弃用,不再维护。未建议替代包。
Composer脚本的工具集
v2.0
2016-03-10 21:14 UTC
Requires (Dev)
- composer/composer: dev-master
- composer/composer: dev-master
- knplabs/gaufrette: ^0.2.1
Suggests
- symfony/yaml: Enables yaml parsing
README
Composer脚本的工具集
文档
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+上测试过