1
0
Fork 0

Update scripts docs

pull/277/head
Jordi Boggiano 2012-02-05 16:27:55 +01:00
parent d43dd33632
commit 39ab5017aa
2 changed files with 66 additions and 70 deletions

66
doc/faqs/scripts.md Normal file
View File

@ -0,0 +1,66 @@
# Scripts
## What is a script?
A script is a callback (defined as a static method) that will be called
when the event it listens on is triggered.
**Scripts are only executed on the root package, not on the dependencies
that are installed.**
## Event types
- **pre-install-cmd**: occurs before the install command is executed.
- **post-install-cmd**: occurs after the install command is executed.
- **pre-update-cmd**: occurs before the update command is executed.
- **post-update-cmd**: occurs after the update command is executed.
- **pre-package-install**: occurs before a package is installed.
- **post-package-install**: occurs after a package is installed.
- **pre-package-update**: occurs before a package is updated.
- **post-package-update**: occurs after a package is updated.
- **pre-package-uninstall**: occurs before a package has been uninstalled.
- **post-package-uninstall**: occurs after a package has been uninstalled.
## Defining scripts
Scripts are defined by adding the `scripts` key to a project's `composer.json`.
They are specified as an array of classes and static method names.
The classes used as scripts must be autoloadable via Composer's autoload
functionality.
Script definition example:
```json
{
"scripts": {
"post-update-cmd": "MyVendor\\MyClass::postUpdate",
"post-package-install": ["MyVendor\\MyClass::postPackageInstall"]
}
}
```
Script listener example:
```php
<?php
namespace MyVendor;
class MyClass
{
public static function postUpdate($event)
{
// do stuff
}
public static function postPackageInstall($event)
{
$installedPackage = $event->getOperation()->getPackage();
// do stuff
}
}
```

View File

@ -1,70 +0,0 @@
# Triggers
## What is a trigger?
A trigger is an event that runs a script in a static method, defined by a
project. This event is raised before and after each action (install, update).
## Where are the event types defined?
It is in the constant property in `Composer\Trigger\TriggerEvents` class.
## How is it defined?
It is defined by adding the `triggers` key in the `extra` key to a project's
`composer.json` or package's `composer.json`.
It is specified as an array of classes with her static method,
in associative array define the event's type.
The PSR-0 must be defined, otherwise the trigger will not be triggered.
For any given project:
```json
{
"extra": {
"triggers": {
"post_install": [
"MyVendor\\MyRootPackage\\MyClass::myStaticMethod"
],
"post_update": [
"MyVendor\\MyRootPackage\\MyClass::myStaticMethod2"
]
}
},
"autoload": {
"psr-0": {
"MyVendor\\MyRootPackage": "my/folder/path/that/contains/triggers/from/the/root/project"
}
}
}
```
Trigger Example:
```php
<?php
namespace MyVendor\MyRootPackage;
use Composer\Trigger\TriggerEvent;
class MyClass
{
public static function myStaticMethod(TriggerEvent $event)
{
// code...
}
public static function myStaticMethod2(TriggerEvent $event)
{
// code...
}
}
```
## Informations:
A declared trigger with non existent file or without registered namespace will be ignored.