Composer Script Utils
Set of tools for Composer scripts, (*1)
, (*2)
Documentation
PackageLocator::getPackagePath
Retrieve the full install path of a package, (*3)
getComposer(), 'composer/composer');
}
}
?>
PathUtil::getRelativePath
Short relative path from a file/folder to a file/folder, (*4)
ConfigFile
Asks interactively for values to fill a configuration file
Values asked are taken from a dist file where its values are used are default values, (*5)
Ex: ask for database configuration with:, (*6)
; database.dist.ini
user=root
pass=root
name=my_database
host=localhost
By default, it with read values from environment, using the filename as a prefix. Ex: DATABASE_USER
You can override this by specifying a custom environment map using setEnvMap(array('field' => 'ENV'))
, (*7)
By default, it will flush outdated parameters (present in the config file, but not in the dist file).
You can override this with setKeepOutdatedParams
., (*8)
Currently, json, ini, yml and yaml files are supported., (*9)
For command-line input, json_decode will be used, but strings do not need to be quoted., (*10)
It is possible to have a dist file in one format and output a target file in another by concatenating the extensions.
This could be use to generate default values in a PHP script, but still save it as another format., (*11)
Ex:, (*12)
<?php
// dist/foo.ini.php
return array('foo' => 'bar');
?>
```ini
; local/foo.ini
foo=bar, (*13)
#### Default Composer script
If you want to use the default configuration without any custom mapping, you can use the included Composer script:
Each file in `path/to/dist/dir` will be compiled to `path/to/target/dir`.
```json
{
"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"
}
}
}
Custom handling
For more control, use the FileUpdater directly:, (*14)
getIO());
$configFile->updateFile('database.ini', 'database.ini.dist');
}
}
?>
N.B.: If you want to save your dist files along with your targets (For example,
a parameters.yml.dist
with the parameters.yml
), you will need to use Custom
Handling., (*15)
Author
Notes
Tested on PHP 5.3+, (*16)