diff --git a/doc/articles/scripts.md b/doc/articles/scripts.md index e5c9be0c6..00eae08b4 100644 --- a/doc/articles/scripts.md +++ b/doc/articles/scripts.md @@ -278,16 +278,14 @@ JSON array of commands. ## Custom descriptions. -You can set custom script descriptions with the following extra in your composer.json: +You can set custom script descriptions with the following in your `composer.json`: - ```json - { - "extra": { - "scripts-description": { - "test": "Run all tests!" - } - } - } - ``` +```json +{ + "scripts-descriptions": { + "test": "Run all tests!" + } +} +``` > **Note:** You can only set custom descriptions of custom commands. diff --git a/res/composer-schema.json b/res/composer-schema.json index b98348222..80a8312b4 100644 --- a/res/composer-schema.json +++ b/res/composer-schema.json @@ -379,7 +379,7 @@ }, "scripts": { "type": ["object"], - "description": "Scripts listeners that will be executed before/after some events.", + "description": "Script listeners that will be executed before/after some events.", "properties": { "pre-install-cmd": { "type": ["array", "string"], @@ -447,6 +447,13 @@ } } }, + "scripts-descriptions": { + "type": ["object"], + "description": "Descriptions for custom commands, shown in console help.", + "additionalProperties": { + "type": "string" + } + }, "support": { "type": "object", "properties": { diff --git a/src/Composer/Console/Application.php b/src/Composer/Console/Application.php index d8ab8eb76..655b059d7 100644 --- a/src/Composer/Console/Application.php +++ b/src/Composer/Console/Application.php @@ -228,7 +228,12 @@ class Application extends BaseApplication if ($this->has($script)) { $io->writeError('A script named '.$script.' would override a Composer command and has been skipped'); } else { - $description = isset($composer['extra']['scripts-description'][$script]) ? $composer['extra']['scripts-description'][$script] : null; + $description = null; + + if (isset($composer['scripts-descriptions'][$script])) { + $description = $composer['scripts-descriptions'][$script]; + } + $this->add(new Command\ScriptAliasCommand($script, $description)); } }