├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── composer.json ├── composer.lock ├── magento2-bash-completion ├── magento2-bash-completion-enterprise ├── modman ├── phpspec.yml ├── spec └── Model │ ├── BashCompletion │ └── GeneratorSpec.php │ ├── BashCompletionSpec.php │ └── CommandCollectionSpec.php └── src ├── Console └── Command │ └── BashCompletionCommand.php ├── Model ├── BashCompletion.php ├── BashCompletion │ └── Generator.php └── CommandCollection.php ├── etc ├── di.xml └── module.xml └── registration.php /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | vendor/ -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | php: 3 | - 5.6 4 | - 7.0 5 | install: 6 | - composer install 7 | script: 8 | - vendor/bin/phpspec run 9 | - vendor/bin/phpcs --standard=PSR1,PSR2 src/ 10 | - vendor/bin/phpmd src/ text cleancode,controversial,design,naming,codesize 11 | 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Yaroslav Voronoy 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Magento2 Bash Completion [![Build Status](https://travis-ci.org/yvoronoy/magento2-bash-completion.svg?branch=master)](https://travis-ci.org/yvoronoy/magento2-bash-completion) 2 | This plugin adds autocompletion for Magento 2 CLI Sub Commands and their Options. 3 | 4 | ## Example 5 | 6 | ![Magento2 Bash Completion Screenshot](https://raw.githubusercontent.com/yvoronoy/ReadmeMedia/master/magento2-bash-completion.gif) 7 | 8 | ``` 9 | user@host:~$ bin/magento[TAB][TAB] 10 | admin:user:create info:dependencies:show-modules-circular 11 | admin:user:unlock info:language:list 12 | bash:completion:generate info:timezone:list 13 | 14 | ... 15 | ``` 16 | 17 | ``` 18 | user@host:~$ bin/magento setup:install --[TAB][TAB] 19 | --admin-email --db-password 20 | --admin-firstname --db-prefix 21 | --admin-lastname --db-user 22 | ``` 23 | 24 | ## Prerequisities 25 | To use magento2 bash completion you should have installed Bash Completion. 26 | If you don't have installed bash-completion follow guides: 27 | * [How to install bash-completion in Debian](https://www.howtoforge.com/how-to-add-bash-completion-in-debian) 28 | * [How to install bash-completion in MacOSX](http://davidalger.com/development/bash-completion-on-os-x-with-brew) 29 | 30 | 31 | ## Installation Bash Completion 32 | New completion commands may be placed inside the directory /etc/bash_completion.d or inside /usr/local/etc/bash_completion.d/magento2-bash-completion on MacOSX. 33 | 34 | Mac OSX 35 | ``` 36 | curl -o /usr/local/etc/bash_completion.d/magento2-bash-completion https://raw.githubusercontent.com/yvoronoy/magento2-bash-completion/master/magento2-bash-completion 37 | ``` 38 | 39 | 40 | Linux 41 | ``` 42 | sudo curl -o /etc/bash_completion.d/magento2-bash-completion https://raw.githubusercontent.com/yvoronoy/magento2-bash-completion/master/magento2-bash-completion 43 | ``` 44 | 45 | Don't forget reload shell or you can load new complition by next command: `user@host:~$ . /etc/bash_completion.d/magento2-bash-completion` 46 | 47 | ## Installation Magento2 Bash Completion Extension 48 | Magento2 Bash Completion Extension allows you generate your own bash completion list. It collects all available commands and generates a bash completion. 49 | 50 | You can install the extension by the composer 51 | ``` 52 | composer require yvoronoy/magento2-bash-completion 53 | ``` 54 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "yvoronoy/magento2-bash-completion", 3 | "description": "Magento2 Bash Completion Generator", 4 | "type": "magento2-module", 5 | "require": { 6 | "php": "~5.6|~7.0", 7 | "magento/framework": "^100.0" 8 | }, 9 | "require-dev": { 10 | "phpspec/phpspec": "^2.5", 11 | "phpmd/phpmd": "@stable", 12 | "squizlabs/php_codesniffer": "~2.0" 13 | }, 14 | "license": "MIT", 15 | "authors": [ 16 | { 17 | "name": "Yaroslav Voronoy", 18 | "email": "yvoronoy@gmail.com" 19 | } 20 | ], 21 | "minimum-stability": "alpha", 22 | "autoload": { 23 | "psr-4": { 24 | "Voronoy\\BashCompletion\\":"src" 25 | }, 26 | "files": [ 27 | "src/registration.php" 28 | ] 29 | }, 30 | "repositories": { 31 | "magento": { 32 | "type": "composer", 33 | "url": "https://repo.magento.com/" 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "hash": "e1c8968ab57df28985ca1d934d8aea1f", 8 | "content-hash": "8c1ef2360dea9cf3ab7c95891512f02e", 9 | "packages": [ 10 | { 11 | "name": "magento/framework", 12 | "version": "100.1.3", 13 | "dist": { 14 | "type": "zip", 15 | "url": "https://repo.magento.com/archives/magento/framework/magento-framework-100.1.3.0.zip", 16 | "reference": null, 17 | "shasum": "074f1f0f583c5fe052d759e2d97a4402b21d0dab" 18 | }, 19 | "require": { 20 | "ext-curl": "*", 21 | "ext-dom": "*", 22 | "ext-gd": "*", 23 | "ext-hash": "*", 24 | "ext-iconv": "*", 25 | "ext-mcrypt": "*", 26 | "ext-openssl": "*", 27 | "ext-simplexml": "*", 28 | "ext-spl": "*", 29 | "ext-xsl": "*", 30 | "lib-libxml": "*", 31 | "php": "~5.6.5|7.0.2|7.0.4|~7.0.6", 32 | "symfony/process": "~2.1", 33 | "zendframework/zend-http": "~2.4.6", 34 | "zendframework/zend-stdlib": "~2.4.6" 35 | }, 36 | "suggest": { 37 | "ext-imagick": "Use Image Magick >=3.0.0 as an optional alternative image processing library" 38 | }, 39 | "type": "magento2-library", 40 | "autoload": { 41 | "psr-4": { 42 | "Magento\\Framework\\": "" 43 | }, 44 | "files": [ 45 | "registration.php" 46 | ] 47 | }, 48 | "license": [ 49 | "OSL-3.0", 50 | "AFL-3.0" 51 | ], 52 | "description": "N/A" 53 | }, 54 | { 55 | "name": "symfony/process", 56 | "version": "v2.8.14", 57 | "source": { 58 | "type": "git", 59 | "url": "https://github.com/symfony/process.git", 60 | "reference": "024de37f8a6b9e5e8244d9eb3fcf3e467dd2a93f" 61 | }, 62 | "dist": { 63 | "type": "zip", 64 | "url": "https://api.github.com/repos/symfony/process/zipball/024de37f8a6b9e5e8244d9eb3fcf3e467dd2a93f", 65 | "reference": "024de37f8a6b9e5e8244d9eb3fcf3e467dd2a93f", 66 | "shasum": "" 67 | }, 68 | "require": { 69 | "php": ">=5.3.9" 70 | }, 71 | "type": "library", 72 | "extra": { 73 | "branch-alias": { 74 | "dev-master": "2.8-dev" 75 | } 76 | }, 77 | "autoload": { 78 | "psr-4": { 79 | "Symfony\\Component\\Process\\": "" 80 | }, 81 | "exclude-from-classmap": [ 82 | "/Tests/" 83 | ] 84 | }, 85 | "notification-url": "https://packagist.org/downloads/", 86 | "license": [ 87 | "MIT" 88 | ], 89 | "authors": [ 90 | { 91 | "name": "Fabien Potencier", 92 | "email": "fabien@symfony.com" 93 | }, 94 | { 95 | "name": "Symfony Community", 96 | "homepage": "https://symfony.com/contributors" 97 | } 98 | ], 99 | "description": "Symfony Process Component", 100 | "homepage": "https://symfony.com", 101 | "time": "2016-09-29 14:03:54" 102 | }, 103 | { 104 | "name": "zendframework/zend-escaper", 105 | "version": "2.4.10", 106 | "source": { 107 | "type": "git", 108 | "url": "https://github.com/zendframework/zend-escaper.git", 109 | "reference": "13f468ff824f3c83018b90aff892a1b3201383a9" 110 | }, 111 | "dist": { 112 | "type": "zip", 113 | "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/13f468ff824f3c83018b90aff892a1b3201383a9", 114 | "reference": "13f468ff824f3c83018b90aff892a1b3201383a9", 115 | "shasum": "" 116 | }, 117 | "require": { 118 | "php": ">=5.3.23" 119 | }, 120 | "require-dev": { 121 | "fabpot/php-cs-fixer": "1.7.*", 122 | "phpunit/phpunit": "~4.0", 123 | "satooshi/php-coveralls": "dev-master" 124 | }, 125 | "type": "library", 126 | "extra": { 127 | "branch-alias": { 128 | "dev-master": "2.4-dev", 129 | "dev-develop": "2.5-dev" 130 | } 131 | }, 132 | "autoload": { 133 | "psr-4": { 134 | "Zend\\Escaper\\": "src/" 135 | } 136 | }, 137 | "notification-url": "https://packagist.org/downloads/", 138 | "license": [ 139 | "BSD-3-Clause" 140 | ], 141 | "homepage": "https://github.com/zendframework/zend-escaper", 142 | "keywords": [ 143 | "escaper", 144 | "zf2" 145 | ], 146 | "time": "2015-05-07 14:55:31" 147 | }, 148 | { 149 | "name": "zendframework/zend-http", 150 | "version": "2.4.10", 151 | "source": { 152 | "type": "git", 153 | "url": "https://github.com/zendframework/zend-http.git", 154 | "reference": "0456267c3825f3c4b558460e0bffeb4c496e6fb8" 155 | }, 156 | "dist": { 157 | "type": "zip", 158 | "url": "https://api.github.com/repos/zendframework/zend-http/zipball/0456267c3825f3c4b558460e0bffeb4c496e6fb8", 159 | "reference": "0456267c3825f3c4b558460e0bffeb4c496e6fb8", 160 | "shasum": "" 161 | }, 162 | "require": { 163 | "php": ">=5.3.23", 164 | "zendframework/zend-loader": "~2.4.0", 165 | "zendframework/zend-stdlib": "~2.4.0", 166 | "zendframework/zend-uri": "~2.4.0", 167 | "zendframework/zend-validator": "~2.4.0" 168 | }, 169 | "require-dev": { 170 | "fabpot/php-cs-fixer": "1.7.*", 171 | "phpunit/phpunit": "~4.0", 172 | "satooshi/php-coveralls": "dev-master", 173 | "zendframework/zend-config": "~2.4.0" 174 | }, 175 | "type": "library", 176 | "extra": { 177 | "branch-alias": { 178 | "dev-master": "2.4-dev", 179 | "dev-develop": "2.5-dev" 180 | } 181 | }, 182 | "autoload": { 183 | "psr-4": { 184 | "Zend\\Http\\": "src/" 185 | } 186 | }, 187 | "notification-url": "https://packagist.org/downloads/", 188 | "license": [ 189 | "BSD-3-Clause" 190 | ], 191 | "description": "provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests", 192 | "homepage": "https://github.com/zendframework/zend-http", 193 | "keywords": [ 194 | "http", 195 | "zf2" 196 | ], 197 | "time": "2015-09-14 16:11:20" 198 | }, 199 | { 200 | "name": "zendframework/zend-loader", 201 | "version": "2.4.10", 202 | "source": { 203 | "type": "git", 204 | "url": "https://github.com/zendframework/zend-loader.git", 205 | "reference": "5e62c44a4d23c4e09d35fcc2a3b109c944dbdc22" 206 | }, 207 | "dist": { 208 | "type": "zip", 209 | "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/5e62c44a4d23c4e09d35fcc2a3b109c944dbdc22", 210 | "reference": "5e62c44a4d23c4e09d35fcc2a3b109c944dbdc22", 211 | "shasum": "" 212 | }, 213 | "require": { 214 | "php": ">=5.3.23" 215 | }, 216 | "require-dev": { 217 | "fabpot/php-cs-fixer": "1.7.*", 218 | "phpunit/phpunit": "~4.0", 219 | "satooshi/php-coveralls": "dev-master" 220 | }, 221 | "type": "library", 222 | "extra": { 223 | "branch-alias": { 224 | "dev-master": "2.4-dev", 225 | "dev-develop": "2.5-dev" 226 | } 227 | }, 228 | "autoload": { 229 | "psr-4": { 230 | "Zend\\Loader\\": "src/" 231 | } 232 | }, 233 | "notification-url": "https://packagist.org/downloads/", 234 | "license": [ 235 | "BSD-3-Clause" 236 | ], 237 | "homepage": "https://github.com/zendframework/zend-loader", 238 | "keywords": [ 239 | "loader", 240 | "zf2" 241 | ], 242 | "time": "2015-05-07 14:55:31" 243 | }, 244 | { 245 | "name": "zendframework/zend-stdlib", 246 | "version": "2.4.10", 247 | "source": { 248 | "type": "git", 249 | "url": "https://github.com/zendframework/zend-stdlib.git", 250 | "reference": "d8ecb629a72da9f91bd95c5af006384823560b42" 251 | }, 252 | "dist": { 253 | "type": "zip", 254 | "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/d8ecb629a72da9f91bd95c5af006384823560b42", 255 | "reference": "d8ecb629a72da9f91bd95c5af006384823560b42", 256 | "shasum": "" 257 | }, 258 | "require": { 259 | "php": ">=5.3.23" 260 | }, 261 | "require-dev": { 262 | "fabpot/php-cs-fixer": "1.7.*", 263 | "phpunit/phpunit": "~4.0", 264 | "satooshi/php-coveralls": "dev-master", 265 | "zendframework/zend-eventmanager": "self.version", 266 | "zendframework/zend-filter": "self.version", 267 | "zendframework/zend-serializer": "self.version", 268 | "zendframework/zend-servicemanager": "self.version" 269 | }, 270 | "suggest": { 271 | "zendframework/zend-eventmanager": "To support aggregate hydrator usage", 272 | "zendframework/zend-filter": "To support naming strategy hydrator usage", 273 | "zendframework/zend-serializer": "Zend\\Serializer component", 274 | "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" 275 | }, 276 | "type": "library", 277 | "extra": { 278 | "branch-alias": { 279 | "dev-master": "2.4-dev", 280 | "dev-develop": "2.5-dev" 281 | } 282 | }, 283 | "autoload": { 284 | "psr-4": { 285 | "Zend\\Stdlib\\": "src/" 286 | } 287 | }, 288 | "notification-url": "https://packagist.org/downloads/", 289 | "license": [ 290 | "BSD-3-Clause" 291 | ], 292 | "homepage": "https://github.com/zendframework/zend-stdlib", 293 | "keywords": [ 294 | "stdlib", 295 | "zf2" 296 | ], 297 | "time": "2015-07-21 13:55:46" 298 | }, 299 | { 300 | "name": "zendframework/zend-uri", 301 | "version": "2.4.10", 302 | "source": { 303 | "type": "git", 304 | "url": "https://github.com/zendframework/zend-uri.git", 305 | "reference": "33512866d20cc4bc54a0c1a6a0bdfcf5088939b3" 306 | }, 307 | "dist": { 308 | "type": "zip", 309 | "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/33512866d20cc4bc54a0c1a6a0bdfcf5088939b3", 310 | "reference": "33512866d20cc4bc54a0c1a6a0bdfcf5088939b3", 311 | "shasum": "" 312 | }, 313 | "require": { 314 | "php": ">=5.3.23", 315 | "zendframework/zend-escaper": "~2.4.0", 316 | "zendframework/zend-validator": "~2.4.0" 317 | }, 318 | "require-dev": { 319 | "fabpot/php-cs-fixer": "1.7.*", 320 | "phpunit/phpunit": "~4.0", 321 | "satooshi/php-coveralls": "dev-master" 322 | }, 323 | "type": "library", 324 | "extra": { 325 | "branch-alias": { 326 | "dev-master": "2.4-dev", 327 | "dev-develop": "2.5-dev" 328 | } 329 | }, 330 | "autoload": { 331 | "psr-4": { 332 | "Zend\\Uri\\": "src/" 333 | } 334 | }, 335 | "notification-url": "https://packagist.org/downloads/", 336 | "license": [ 337 | "BSD-3-Clause" 338 | ], 339 | "description": "a component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)", 340 | "homepage": "https://github.com/zendframework/zend-uri", 341 | "keywords": [ 342 | "uri", 343 | "zf2" 344 | ], 345 | "time": "2015-09-14 16:17:10" 346 | }, 347 | { 348 | "name": "zendframework/zend-validator", 349 | "version": "2.4.10", 350 | "source": { 351 | "type": "git", 352 | "url": "https://github.com/zendframework/zend-validator.git", 353 | "reference": "81415511fe729e6de19a61936313cef43c80d337" 354 | }, 355 | "dist": { 356 | "type": "zip", 357 | "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/81415511fe729e6de19a61936313cef43c80d337", 358 | "reference": "81415511fe729e6de19a61936313cef43c80d337", 359 | "shasum": "" 360 | }, 361 | "require": { 362 | "php": ">=5.3.23", 363 | "zendframework/zend-stdlib": "~2.4.0" 364 | }, 365 | "require-dev": { 366 | "fabpot/php-cs-fixer": "1.7.*", 367 | "phpunit/phpunit": "~4.0", 368 | "satooshi/php-coveralls": "dev-master", 369 | "zendframework/zend-config": "~2.4.0", 370 | "zendframework/zend-db": "~2.4.0", 371 | "zendframework/zend-filter": "~2.4.0", 372 | "zendframework/zend-i18n": "~2.4.0", 373 | "zendframework/zend-math": "~2.4.0", 374 | "zendframework/zend-servicemanager": "~2.4.0", 375 | "zendframework/zend-session": "~2.4.0", 376 | "zendframework/zend-uri": "~2.4.0" 377 | }, 378 | "suggest": { 379 | "zendframework/zend-db": "Zend\\Db component", 380 | "zendframework/zend-filter": "Zend\\Filter component, required by the Digits validator", 381 | "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages as well as to use the various Date validators", 382 | "zendframework/zend-math": "Zend\\Math component", 383 | "zendframework/zend-resources": "Translations of validator messages", 384 | "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", 385 | "zendframework/zend-session": "Zend\\Session component", 386 | "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators" 387 | }, 388 | "type": "library", 389 | "extra": { 390 | "branch-alias": { 391 | "dev-master": "2.4-dev", 392 | "dev-develop": "2.5-dev" 393 | } 394 | }, 395 | "autoload": { 396 | "psr-4": { 397 | "Zend\\Validator\\": "src/" 398 | } 399 | }, 400 | "notification-url": "https://packagist.org/downloads/", 401 | "license": [ 402 | "BSD-3-Clause" 403 | ], 404 | "description": "provides a set of commonly needed validators", 405 | "homepage": "https://github.com/zendframework/zend-validator", 406 | "keywords": [ 407 | "validator", 408 | "zf2" 409 | ], 410 | "time": "2015-09-08 21:04:17" 411 | } 412 | ], 413 | "packages-dev": [ 414 | { 415 | "name": "doctrine/instantiator", 416 | "version": "1.0.5", 417 | "source": { 418 | "type": "git", 419 | "url": "https://github.com/doctrine/instantiator.git", 420 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 421 | }, 422 | "dist": { 423 | "type": "zip", 424 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 425 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 426 | "shasum": "" 427 | }, 428 | "require": { 429 | "php": ">=5.3,<8.0-DEV" 430 | }, 431 | "require-dev": { 432 | "athletic/athletic": "~0.1.8", 433 | "ext-pdo": "*", 434 | "ext-phar": "*", 435 | "phpunit/phpunit": "~4.0", 436 | "squizlabs/php_codesniffer": "~2.0" 437 | }, 438 | "type": "library", 439 | "extra": { 440 | "branch-alias": { 441 | "dev-master": "1.0.x-dev" 442 | } 443 | }, 444 | "autoload": { 445 | "psr-4": { 446 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 447 | } 448 | }, 449 | "notification-url": "https://packagist.org/downloads/", 450 | "license": [ 451 | "MIT" 452 | ], 453 | "authors": [ 454 | { 455 | "name": "Marco Pivetta", 456 | "email": "ocramius@gmail.com", 457 | "homepage": "http://ocramius.github.com/" 458 | } 459 | ], 460 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 461 | "homepage": "https://github.com/doctrine/instantiator", 462 | "keywords": [ 463 | "constructor", 464 | "instantiate" 465 | ], 466 | "time": "2015-06-14 21:17:01" 467 | }, 468 | { 469 | "name": "pdepend/pdepend", 470 | "version": "2.3.2", 471 | "source": { 472 | "type": "git", 473 | "url": "https://github.com/pdepend/pdepend.git", 474 | "reference": "8d7ab8fe8c1f9de5056bb7ea2c0852f4ddd44f90" 475 | }, 476 | "dist": { 477 | "type": "zip", 478 | "url": "https://api.github.com/repos/pdepend/pdepend/zipball/8d7ab8fe8c1f9de5056bb7ea2c0852f4ddd44f90", 479 | "reference": "8d7ab8fe8c1f9de5056bb7ea2c0852f4ddd44f90", 480 | "shasum": "" 481 | }, 482 | "require": { 483 | "php": ">=5.3.7", 484 | "symfony/config": "^2.3.0|^3", 485 | "symfony/dependency-injection": "^2.3.0|^3", 486 | "symfony/filesystem": "^2.3.0|^3" 487 | }, 488 | "require-dev": { 489 | "phpunit/phpunit": "^4.4.0,<4.8", 490 | "squizlabs/php_codesniffer": "^2.0.0" 491 | }, 492 | "bin": [ 493 | "src/bin/pdepend" 494 | ], 495 | "type": "library", 496 | "autoload": { 497 | "psr-4": { 498 | "PDepend\\": "src/main/php/PDepend" 499 | } 500 | }, 501 | "notification-url": "https://packagist.org/downloads/", 502 | "license": [ 503 | "BSD-3-Clause" 504 | ], 505 | "description": "Official version of pdepend to be handled with Composer", 506 | "time": "2016-11-23 20:25:02" 507 | }, 508 | { 509 | "name": "phpdocumentor/reflection-common", 510 | "version": "1.0", 511 | "source": { 512 | "type": "git", 513 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 514 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" 515 | }, 516 | "dist": { 517 | "type": "zip", 518 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 519 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 520 | "shasum": "" 521 | }, 522 | "require": { 523 | "php": ">=5.5" 524 | }, 525 | "require-dev": { 526 | "phpunit/phpunit": "^4.6" 527 | }, 528 | "type": "library", 529 | "extra": { 530 | "branch-alias": { 531 | "dev-master": "1.0.x-dev" 532 | } 533 | }, 534 | "autoload": { 535 | "psr-4": { 536 | "phpDocumentor\\Reflection\\": [ 537 | "src" 538 | ] 539 | } 540 | }, 541 | "notification-url": "https://packagist.org/downloads/", 542 | "license": [ 543 | "MIT" 544 | ], 545 | "authors": [ 546 | { 547 | "name": "Jaap van Otterdijk", 548 | "email": "opensource@ijaap.nl" 549 | } 550 | ], 551 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 552 | "homepage": "http://www.phpdoc.org", 553 | "keywords": [ 554 | "FQSEN", 555 | "phpDocumentor", 556 | "phpdoc", 557 | "reflection", 558 | "static analysis" 559 | ], 560 | "time": "2015-12-27 11:43:31" 561 | }, 562 | { 563 | "name": "phpdocumentor/reflection-docblock", 564 | "version": "3.1.1", 565 | "source": { 566 | "type": "git", 567 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 568 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" 569 | }, 570 | "dist": { 571 | "type": "zip", 572 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", 573 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", 574 | "shasum": "" 575 | }, 576 | "require": { 577 | "php": ">=5.5", 578 | "phpdocumentor/reflection-common": "^1.0@dev", 579 | "phpdocumentor/type-resolver": "^0.2.0", 580 | "webmozart/assert": "^1.0" 581 | }, 582 | "require-dev": { 583 | "mockery/mockery": "^0.9.4", 584 | "phpunit/phpunit": "^4.4" 585 | }, 586 | "type": "library", 587 | "autoload": { 588 | "psr-4": { 589 | "phpDocumentor\\Reflection\\": [ 590 | "src/" 591 | ] 592 | } 593 | }, 594 | "notification-url": "https://packagist.org/downloads/", 595 | "license": [ 596 | "MIT" 597 | ], 598 | "authors": [ 599 | { 600 | "name": "Mike van Riel", 601 | "email": "me@mikevanriel.com" 602 | } 603 | ], 604 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 605 | "time": "2016-09-30 07:12:33" 606 | }, 607 | { 608 | "name": "phpdocumentor/type-resolver", 609 | "version": "0.2.1", 610 | "source": { 611 | "type": "git", 612 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 613 | "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" 614 | }, 615 | "dist": { 616 | "type": "zip", 617 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", 618 | "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", 619 | "shasum": "" 620 | }, 621 | "require": { 622 | "php": ">=5.5", 623 | "phpdocumentor/reflection-common": "^1.0" 624 | }, 625 | "require-dev": { 626 | "mockery/mockery": "^0.9.4", 627 | "phpunit/phpunit": "^5.2||^4.8.24" 628 | }, 629 | "type": "library", 630 | "extra": { 631 | "branch-alias": { 632 | "dev-master": "1.0.x-dev" 633 | } 634 | }, 635 | "autoload": { 636 | "psr-4": { 637 | "phpDocumentor\\Reflection\\": [ 638 | "src/" 639 | ] 640 | } 641 | }, 642 | "notification-url": "https://packagist.org/downloads/", 643 | "license": [ 644 | "MIT" 645 | ], 646 | "authors": [ 647 | { 648 | "name": "Mike van Riel", 649 | "email": "me@mikevanriel.com" 650 | } 651 | ], 652 | "time": "2016-11-25 06:54:22" 653 | }, 654 | { 655 | "name": "phpmd/phpmd", 656 | "version": "2.5.0", 657 | "source": { 658 | "type": "git", 659 | "url": "https://github.com/phpmd/phpmd.git", 660 | "reference": "9298602a922cd8c46666df8d540a60bc5925ce55" 661 | }, 662 | "dist": { 663 | "type": "zip", 664 | "url": "https://api.github.com/repos/phpmd/phpmd/zipball/9298602a922cd8c46666df8d540a60bc5925ce55", 665 | "reference": "9298602a922cd8c46666df8d540a60bc5925ce55", 666 | "shasum": "" 667 | }, 668 | "require": { 669 | "pdepend/pdepend": "^2.0.4", 670 | "php": ">=5.3.9" 671 | }, 672 | "require-dev": { 673 | "phpunit/phpunit": "^4.0", 674 | "squizlabs/php_codesniffer": "^2.0" 675 | }, 676 | "bin": [ 677 | "src/bin/phpmd" 678 | ], 679 | "type": "project", 680 | "autoload": { 681 | "psr-0": { 682 | "PHPMD\\": "src/main/php" 683 | } 684 | }, 685 | "notification-url": "https://packagist.org/downloads/", 686 | "license": [ 687 | "BSD-3-Clause" 688 | ], 689 | "authors": [ 690 | { 691 | "name": "Manuel Pichler", 692 | "email": "github@manuel-pichler.de", 693 | "homepage": "https://github.com/manuelpichler", 694 | "role": "Project Founder" 695 | }, 696 | { 697 | "name": "Other contributors", 698 | "homepage": "https://github.com/phpmd/phpmd/graphs/contributors", 699 | "role": "Contributors" 700 | }, 701 | { 702 | "name": "Marc Würth", 703 | "email": "ravage@bluewin.ch", 704 | "homepage": "https://github.com/ravage84", 705 | "role": "Project Maintainer" 706 | } 707 | ], 708 | "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", 709 | "homepage": "http://phpmd.org/", 710 | "keywords": [ 711 | "mess detection", 712 | "mess detector", 713 | "pdepend", 714 | "phpmd", 715 | "pmd" 716 | ], 717 | "time": "2016-11-23 20:33:32" 718 | }, 719 | { 720 | "name": "phpspec/php-diff", 721 | "version": "v1.0.2", 722 | "source": { 723 | "type": "git", 724 | "url": "https://github.com/phpspec/php-diff.git", 725 | "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a" 726 | }, 727 | "dist": { 728 | "type": "zip", 729 | "url": "https://api.github.com/repos/phpspec/php-diff/zipball/30e103d19519fe678ae64a60d77884ef3d71b28a", 730 | "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a", 731 | "shasum": "" 732 | }, 733 | "type": "library", 734 | "autoload": { 735 | "psr-0": { 736 | "Diff": "lib/" 737 | } 738 | }, 739 | "notification-url": "https://packagist.org/downloads/", 740 | "license": [ 741 | "BSD-3-Clause" 742 | ], 743 | "authors": [ 744 | { 745 | "name": "Chris Boulton", 746 | "homepage": "http://github.com/chrisboulton", 747 | "role": "Original developer" 748 | } 749 | ], 750 | "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).", 751 | "time": "2013-11-01 13:02:21" 752 | }, 753 | { 754 | "name": "phpspec/phpspec", 755 | "version": "2.5.5", 756 | "source": { 757 | "type": "git", 758 | "url": "https://github.com/phpspec/phpspec.git", 759 | "reference": "db395f435eb8e820448e8690de1a8db86d5dd8af" 760 | }, 761 | "dist": { 762 | "type": "zip", 763 | "url": "https://api.github.com/repos/phpspec/phpspec/zipball/db395f435eb8e820448e8690de1a8db86d5dd8af", 764 | "reference": "db395f435eb8e820448e8690de1a8db86d5dd8af", 765 | "shasum": "" 766 | }, 767 | "require": { 768 | "doctrine/instantiator": "^1.0.1", 769 | "ext-tokenizer": "*", 770 | "php": ">=5.3.3", 771 | "phpspec/php-diff": "~1.0.0", 772 | "phpspec/prophecy": "~1.4", 773 | "sebastian/exporter": "~1.0", 774 | "symfony/console": "~2.3|~3.0", 775 | "symfony/event-dispatcher": "~2.1|~3.0", 776 | "symfony/finder": "~2.1|~3.0", 777 | "symfony/process": "^2.6|~3.0", 778 | "symfony/yaml": "~2.1|~3.0" 779 | }, 780 | "require-dev": { 781 | "behat/behat": "^3.0.11", 782 | "ciaranmcnulty/versionbasedtestskipper": "^0.2.1", 783 | "phpunit/phpunit": "~4.4", 784 | "symfony/filesystem": "~2.1|~3.0" 785 | }, 786 | "suggest": { 787 | "phpspec/nyan-formatters": "~1.0 – Adds Nyan formatters" 788 | }, 789 | "bin": [ 790 | "bin/phpspec" 791 | ], 792 | "type": "library", 793 | "extra": { 794 | "branch-alias": { 795 | "dev-master": "2.5.x-dev" 796 | } 797 | }, 798 | "autoload": { 799 | "psr-0": { 800 | "PhpSpec": "src/" 801 | } 802 | }, 803 | "notification-url": "https://packagist.org/downloads/", 804 | "license": [ 805 | "MIT" 806 | ], 807 | "authors": [ 808 | { 809 | "name": "Konstantin Kudryashov", 810 | "email": "ever.zet@gmail.com", 811 | "homepage": "http://everzet.com" 812 | }, 813 | { 814 | "name": "Marcello Duarte", 815 | "homepage": "http://marcelloduarte.net/" 816 | } 817 | ], 818 | "description": "Specification-oriented BDD framework for PHP 5.3+", 819 | "homepage": "http://phpspec.net/", 820 | "keywords": [ 821 | "BDD", 822 | "SpecBDD", 823 | "TDD", 824 | "spec", 825 | "specification", 826 | "testing", 827 | "tests" 828 | ], 829 | "time": "2016-12-04 21:03:31" 830 | }, 831 | { 832 | "name": "phpspec/prophecy", 833 | "version": "v1.6.2", 834 | "source": { 835 | "type": "git", 836 | "url": "https://github.com/phpspec/prophecy.git", 837 | "reference": "6c52c2722f8460122f96f86346600e1077ce22cb" 838 | }, 839 | "dist": { 840 | "type": "zip", 841 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb", 842 | "reference": "6c52c2722f8460122f96f86346600e1077ce22cb", 843 | "shasum": "" 844 | }, 845 | "require": { 846 | "doctrine/instantiator": "^1.0.2", 847 | "php": "^5.3|^7.0", 848 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", 849 | "sebastian/comparator": "^1.1", 850 | "sebastian/recursion-context": "^1.0|^2.0" 851 | }, 852 | "require-dev": { 853 | "phpspec/phpspec": "^2.0", 854 | "phpunit/phpunit": "^4.8 || ^5.6.5" 855 | }, 856 | "type": "library", 857 | "extra": { 858 | "branch-alias": { 859 | "dev-master": "1.6.x-dev" 860 | } 861 | }, 862 | "autoload": { 863 | "psr-0": { 864 | "Prophecy\\": "src/" 865 | } 866 | }, 867 | "notification-url": "https://packagist.org/downloads/", 868 | "license": [ 869 | "MIT" 870 | ], 871 | "authors": [ 872 | { 873 | "name": "Konstantin Kudryashov", 874 | "email": "ever.zet@gmail.com", 875 | "homepage": "http://everzet.com" 876 | }, 877 | { 878 | "name": "Marcello Duarte", 879 | "email": "marcello.duarte@gmail.com" 880 | } 881 | ], 882 | "description": "Highly opinionated mocking framework for PHP 5.3+", 883 | "homepage": "https://github.com/phpspec/prophecy", 884 | "keywords": [ 885 | "Double", 886 | "Dummy", 887 | "fake", 888 | "mock", 889 | "spy", 890 | "stub" 891 | ], 892 | "time": "2016-11-21 14:58:47" 893 | }, 894 | { 895 | "name": "psr/log", 896 | "version": "1.0.2", 897 | "source": { 898 | "type": "git", 899 | "url": "https://github.com/php-fig/log.git", 900 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" 901 | }, 902 | "dist": { 903 | "type": "zip", 904 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 905 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 906 | "shasum": "" 907 | }, 908 | "require": { 909 | "php": ">=5.3.0" 910 | }, 911 | "type": "library", 912 | "extra": { 913 | "branch-alias": { 914 | "dev-master": "1.0.x-dev" 915 | } 916 | }, 917 | "autoload": { 918 | "psr-4": { 919 | "Psr\\Log\\": "Psr/Log/" 920 | } 921 | }, 922 | "notification-url": "https://packagist.org/downloads/", 923 | "license": [ 924 | "MIT" 925 | ], 926 | "authors": [ 927 | { 928 | "name": "PHP-FIG", 929 | "homepage": "http://www.php-fig.org/" 930 | } 931 | ], 932 | "description": "Common interface for logging libraries", 933 | "homepage": "https://github.com/php-fig/log", 934 | "keywords": [ 935 | "log", 936 | "psr", 937 | "psr-3" 938 | ], 939 | "time": "2016-10-10 12:19:37" 940 | }, 941 | { 942 | "name": "sebastian/comparator", 943 | "version": "1.2.2", 944 | "source": { 945 | "type": "git", 946 | "url": "https://github.com/sebastianbergmann/comparator.git", 947 | "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f" 948 | }, 949 | "dist": { 950 | "type": "zip", 951 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/6a1ed12e8b2409076ab22e3897126211ff8b1f7f", 952 | "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f", 953 | "shasum": "" 954 | }, 955 | "require": { 956 | "php": ">=5.3.3", 957 | "sebastian/diff": "~1.2", 958 | "sebastian/exporter": "~1.2 || ~2.0" 959 | }, 960 | "require-dev": { 961 | "phpunit/phpunit": "~4.4" 962 | }, 963 | "type": "library", 964 | "extra": { 965 | "branch-alias": { 966 | "dev-master": "1.2.x-dev" 967 | } 968 | }, 969 | "autoload": { 970 | "classmap": [ 971 | "src/" 972 | ] 973 | }, 974 | "notification-url": "https://packagist.org/downloads/", 975 | "license": [ 976 | "BSD-3-Clause" 977 | ], 978 | "authors": [ 979 | { 980 | "name": "Jeff Welch", 981 | "email": "whatthejeff@gmail.com" 982 | }, 983 | { 984 | "name": "Volker Dusch", 985 | "email": "github@wallbash.com" 986 | }, 987 | { 988 | "name": "Bernhard Schussek", 989 | "email": "bschussek@2bepublished.at" 990 | }, 991 | { 992 | "name": "Sebastian Bergmann", 993 | "email": "sebastian@phpunit.de" 994 | } 995 | ], 996 | "description": "Provides the functionality to compare PHP values for equality", 997 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 998 | "keywords": [ 999 | "comparator", 1000 | "compare", 1001 | "equality" 1002 | ], 1003 | "time": "2016-11-19 09:18:40" 1004 | }, 1005 | { 1006 | "name": "sebastian/diff", 1007 | "version": "1.4.1", 1008 | "source": { 1009 | "type": "git", 1010 | "url": "https://github.com/sebastianbergmann/diff.git", 1011 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" 1012 | }, 1013 | "dist": { 1014 | "type": "zip", 1015 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", 1016 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", 1017 | "shasum": "" 1018 | }, 1019 | "require": { 1020 | "php": ">=5.3.3" 1021 | }, 1022 | "require-dev": { 1023 | "phpunit/phpunit": "~4.8" 1024 | }, 1025 | "type": "library", 1026 | "extra": { 1027 | "branch-alias": { 1028 | "dev-master": "1.4-dev" 1029 | } 1030 | }, 1031 | "autoload": { 1032 | "classmap": [ 1033 | "src/" 1034 | ] 1035 | }, 1036 | "notification-url": "https://packagist.org/downloads/", 1037 | "license": [ 1038 | "BSD-3-Clause" 1039 | ], 1040 | "authors": [ 1041 | { 1042 | "name": "Kore Nordmann", 1043 | "email": "mail@kore-nordmann.de" 1044 | }, 1045 | { 1046 | "name": "Sebastian Bergmann", 1047 | "email": "sebastian@phpunit.de" 1048 | } 1049 | ], 1050 | "description": "Diff implementation", 1051 | "homepage": "https://github.com/sebastianbergmann/diff", 1052 | "keywords": [ 1053 | "diff" 1054 | ], 1055 | "time": "2015-12-08 07:14:41" 1056 | }, 1057 | { 1058 | "name": "sebastian/exporter", 1059 | "version": "1.2.2", 1060 | "source": { 1061 | "type": "git", 1062 | "url": "https://github.com/sebastianbergmann/exporter.git", 1063 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" 1064 | }, 1065 | "dist": { 1066 | "type": "zip", 1067 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", 1068 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", 1069 | "shasum": "" 1070 | }, 1071 | "require": { 1072 | "php": ">=5.3.3", 1073 | "sebastian/recursion-context": "~1.0" 1074 | }, 1075 | "require-dev": { 1076 | "ext-mbstring": "*", 1077 | "phpunit/phpunit": "~4.4" 1078 | }, 1079 | "type": "library", 1080 | "extra": { 1081 | "branch-alias": { 1082 | "dev-master": "1.3.x-dev" 1083 | } 1084 | }, 1085 | "autoload": { 1086 | "classmap": [ 1087 | "src/" 1088 | ] 1089 | }, 1090 | "notification-url": "https://packagist.org/downloads/", 1091 | "license": [ 1092 | "BSD-3-Clause" 1093 | ], 1094 | "authors": [ 1095 | { 1096 | "name": "Jeff Welch", 1097 | "email": "whatthejeff@gmail.com" 1098 | }, 1099 | { 1100 | "name": "Volker Dusch", 1101 | "email": "github@wallbash.com" 1102 | }, 1103 | { 1104 | "name": "Bernhard Schussek", 1105 | "email": "bschussek@2bepublished.at" 1106 | }, 1107 | { 1108 | "name": "Sebastian Bergmann", 1109 | "email": "sebastian@phpunit.de" 1110 | }, 1111 | { 1112 | "name": "Adam Harvey", 1113 | "email": "aharvey@php.net" 1114 | } 1115 | ], 1116 | "description": "Provides the functionality to export PHP variables for visualization", 1117 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1118 | "keywords": [ 1119 | "export", 1120 | "exporter" 1121 | ], 1122 | "time": "2016-06-17 09:04:28" 1123 | }, 1124 | { 1125 | "name": "sebastian/recursion-context", 1126 | "version": "1.0.2", 1127 | "source": { 1128 | "type": "git", 1129 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1130 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791" 1131 | }, 1132 | "dist": { 1133 | "type": "zip", 1134 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791", 1135 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791", 1136 | "shasum": "" 1137 | }, 1138 | "require": { 1139 | "php": ">=5.3.3" 1140 | }, 1141 | "require-dev": { 1142 | "phpunit/phpunit": "~4.4" 1143 | }, 1144 | "type": "library", 1145 | "extra": { 1146 | "branch-alias": { 1147 | "dev-master": "1.0.x-dev" 1148 | } 1149 | }, 1150 | "autoload": { 1151 | "classmap": [ 1152 | "src/" 1153 | ] 1154 | }, 1155 | "notification-url": "https://packagist.org/downloads/", 1156 | "license": [ 1157 | "BSD-3-Clause" 1158 | ], 1159 | "authors": [ 1160 | { 1161 | "name": "Jeff Welch", 1162 | "email": "whatthejeff@gmail.com" 1163 | }, 1164 | { 1165 | "name": "Sebastian Bergmann", 1166 | "email": "sebastian@phpunit.de" 1167 | }, 1168 | { 1169 | "name": "Adam Harvey", 1170 | "email": "aharvey@php.net" 1171 | } 1172 | ], 1173 | "description": "Provides functionality to recursively process PHP variables", 1174 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1175 | "time": "2015-11-11 19:50:13" 1176 | }, 1177 | { 1178 | "name": "squizlabs/php_codesniffer", 1179 | "version": "2.7.1", 1180 | "source": { 1181 | "type": "git", 1182 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 1183 | "reference": "9b324f3a1132459a7274a0ace2e1b766ba80930f" 1184 | }, 1185 | "dist": { 1186 | "type": "zip", 1187 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9b324f3a1132459a7274a0ace2e1b766ba80930f", 1188 | "reference": "9b324f3a1132459a7274a0ace2e1b766ba80930f", 1189 | "shasum": "" 1190 | }, 1191 | "require": { 1192 | "ext-simplexml": "*", 1193 | "ext-tokenizer": "*", 1194 | "ext-xmlwriter": "*", 1195 | "php": ">=5.1.2" 1196 | }, 1197 | "require-dev": { 1198 | "phpunit/phpunit": "~4.0" 1199 | }, 1200 | "bin": [ 1201 | "scripts/phpcs", 1202 | "scripts/phpcbf" 1203 | ], 1204 | "type": "library", 1205 | "extra": { 1206 | "branch-alias": { 1207 | "dev-master": "2.x-dev" 1208 | } 1209 | }, 1210 | "autoload": { 1211 | "classmap": [ 1212 | "CodeSniffer.php", 1213 | "CodeSniffer/CLI.php", 1214 | "CodeSniffer/Exception.php", 1215 | "CodeSniffer/File.php", 1216 | "CodeSniffer/Fixer.php", 1217 | "CodeSniffer/Report.php", 1218 | "CodeSniffer/Reporting.php", 1219 | "CodeSniffer/Sniff.php", 1220 | "CodeSniffer/Tokens.php", 1221 | "CodeSniffer/Reports/", 1222 | "CodeSniffer/Tokenizers/", 1223 | "CodeSniffer/DocGenerators/", 1224 | "CodeSniffer/Standards/AbstractPatternSniff.php", 1225 | "CodeSniffer/Standards/AbstractScopeSniff.php", 1226 | "CodeSniffer/Standards/AbstractVariableSniff.php", 1227 | "CodeSniffer/Standards/IncorrectPatternException.php", 1228 | "CodeSniffer/Standards/Generic/Sniffs/", 1229 | "CodeSniffer/Standards/MySource/Sniffs/", 1230 | "CodeSniffer/Standards/PEAR/Sniffs/", 1231 | "CodeSniffer/Standards/PSR1/Sniffs/", 1232 | "CodeSniffer/Standards/PSR2/Sniffs/", 1233 | "CodeSniffer/Standards/Squiz/Sniffs/", 1234 | "CodeSniffer/Standards/Zend/Sniffs/" 1235 | ] 1236 | }, 1237 | "notification-url": "https://packagist.org/downloads/", 1238 | "license": [ 1239 | "BSD-3-Clause" 1240 | ], 1241 | "authors": [ 1242 | { 1243 | "name": "Greg Sherwood", 1244 | "role": "lead" 1245 | } 1246 | ], 1247 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 1248 | "homepage": "http://www.squizlabs.com/php-codesniffer", 1249 | "keywords": [ 1250 | "phpcs", 1251 | "standards" 1252 | ], 1253 | "time": "2016-11-30 04:02:31" 1254 | }, 1255 | { 1256 | "name": "symfony/config", 1257 | "version": "v3.2.0", 1258 | "source": { 1259 | "type": "git", 1260 | "url": "https://github.com/symfony/config.git", 1261 | "reference": "4a68f8953180bf77ea65f585020f4db0b18600b4" 1262 | }, 1263 | "dist": { 1264 | "type": "zip", 1265 | "url": "https://api.github.com/repos/symfony/config/zipball/4a68f8953180bf77ea65f585020f4db0b18600b4", 1266 | "reference": "4a68f8953180bf77ea65f585020f4db0b18600b4", 1267 | "shasum": "" 1268 | }, 1269 | "require": { 1270 | "php": ">=5.5.9", 1271 | "symfony/filesystem": "~2.8|~3.0" 1272 | }, 1273 | "require-dev": { 1274 | "symfony/yaml": "~3.0" 1275 | }, 1276 | "suggest": { 1277 | "symfony/yaml": "To use the yaml reference dumper" 1278 | }, 1279 | "type": "library", 1280 | "extra": { 1281 | "branch-alias": { 1282 | "dev-master": "3.2-dev" 1283 | } 1284 | }, 1285 | "autoload": { 1286 | "psr-4": { 1287 | "Symfony\\Component\\Config\\": "" 1288 | }, 1289 | "exclude-from-classmap": [ 1290 | "/Tests/" 1291 | ] 1292 | }, 1293 | "notification-url": "https://packagist.org/downloads/", 1294 | "license": [ 1295 | "MIT" 1296 | ], 1297 | "authors": [ 1298 | { 1299 | "name": "Fabien Potencier", 1300 | "email": "fabien@symfony.com" 1301 | }, 1302 | { 1303 | "name": "Symfony Community", 1304 | "homepage": "https://symfony.com/contributors" 1305 | } 1306 | ], 1307 | "description": "Symfony Config Component", 1308 | "homepage": "https://symfony.com", 1309 | "time": "2016-11-29 11:12:32" 1310 | }, 1311 | { 1312 | "name": "symfony/console", 1313 | "version": "v3.2.0", 1314 | "source": { 1315 | "type": "git", 1316 | "url": "https://github.com/symfony/console.git", 1317 | "reference": "09d0fd33560e3573185a2ea17614e37ba38716c5" 1318 | }, 1319 | "dist": { 1320 | "type": "zip", 1321 | "url": "https://api.github.com/repos/symfony/console/zipball/09d0fd33560e3573185a2ea17614e37ba38716c5", 1322 | "reference": "09d0fd33560e3573185a2ea17614e37ba38716c5", 1323 | "shasum": "" 1324 | }, 1325 | "require": { 1326 | "php": ">=5.5.9", 1327 | "symfony/debug": "~2.8|~3.0", 1328 | "symfony/polyfill-mbstring": "~1.0" 1329 | }, 1330 | "require-dev": { 1331 | "psr/log": "~1.0", 1332 | "symfony/event-dispatcher": "~2.8|~3.0", 1333 | "symfony/filesystem": "~2.8|~3.0", 1334 | "symfony/process": "~2.8|~3.0" 1335 | }, 1336 | "suggest": { 1337 | "psr/log": "For using the console logger", 1338 | "symfony/event-dispatcher": "", 1339 | "symfony/filesystem": "", 1340 | "symfony/process": "" 1341 | }, 1342 | "type": "library", 1343 | "extra": { 1344 | "branch-alias": { 1345 | "dev-master": "3.2-dev" 1346 | } 1347 | }, 1348 | "autoload": { 1349 | "psr-4": { 1350 | "Symfony\\Component\\Console\\": "" 1351 | }, 1352 | "exclude-from-classmap": [ 1353 | "/Tests/" 1354 | ] 1355 | }, 1356 | "notification-url": "https://packagist.org/downloads/", 1357 | "license": [ 1358 | "MIT" 1359 | ], 1360 | "authors": [ 1361 | { 1362 | "name": "Fabien Potencier", 1363 | "email": "fabien@symfony.com" 1364 | }, 1365 | { 1366 | "name": "Symfony Community", 1367 | "homepage": "https://symfony.com/contributors" 1368 | } 1369 | ], 1370 | "description": "Symfony Console Component", 1371 | "homepage": "https://symfony.com", 1372 | "time": "2016-11-16 22:18:16" 1373 | }, 1374 | { 1375 | "name": "symfony/debug", 1376 | "version": "v3.2.0", 1377 | "source": { 1378 | "type": "git", 1379 | "url": "https://github.com/symfony/debug.git", 1380 | "reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231" 1381 | }, 1382 | "dist": { 1383 | "type": "zip", 1384 | "url": "https://api.github.com/repos/symfony/debug/zipball/9f923e68d524a3095c5a2ae5fc7220c7cbc12231", 1385 | "reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231", 1386 | "shasum": "" 1387 | }, 1388 | "require": { 1389 | "php": ">=5.5.9", 1390 | "psr/log": "~1.0" 1391 | }, 1392 | "conflict": { 1393 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" 1394 | }, 1395 | "require-dev": { 1396 | "symfony/class-loader": "~2.8|~3.0", 1397 | "symfony/http-kernel": "~2.8|~3.0" 1398 | }, 1399 | "type": "library", 1400 | "extra": { 1401 | "branch-alias": { 1402 | "dev-master": "3.2-dev" 1403 | } 1404 | }, 1405 | "autoload": { 1406 | "psr-4": { 1407 | "Symfony\\Component\\Debug\\": "" 1408 | }, 1409 | "exclude-from-classmap": [ 1410 | "/Tests/" 1411 | ] 1412 | }, 1413 | "notification-url": "https://packagist.org/downloads/", 1414 | "license": [ 1415 | "MIT" 1416 | ], 1417 | "authors": [ 1418 | { 1419 | "name": "Fabien Potencier", 1420 | "email": "fabien@symfony.com" 1421 | }, 1422 | { 1423 | "name": "Symfony Community", 1424 | "homepage": "https://symfony.com/contributors" 1425 | } 1426 | ], 1427 | "description": "Symfony Debug Component", 1428 | "homepage": "https://symfony.com", 1429 | "time": "2016-11-16 22:18:16" 1430 | }, 1431 | { 1432 | "name": "symfony/dependency-injection", 1433 | "version": "v3.2.0", 1434 | "source": { 1435 | "type": "git", 1436 | "url": "https://github.com/symfony/dependency-injection.git", 1437 | "reference": "f5419adad083c90e0dfd8588ef83683d7dbcc20d" 1438 | }, 1439 | "dist": { 1440 | "type": "zip", 1441 | "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f5419adad083c90e0dfd8588ef83683d7dbcc20d", 1442 | "reference": "f5419adad083c90e0dfd8588ef83683d7dbcc20d", 1443 | "shasum": "" 1444 | }, 1445 | "require": { 1446 | "php": ">=5.5.9" 1447 | }, 1448 | "conflict": { 1449 | "symfony/yaml": "<3.2" 1450 | }, 1451 | "require-dev": { 1452 | "symfony/config": "~2.8|~3.0", 1453 | "symfony/expression-language": "~2.8|~3.0", 1454 | "symfony/yaml": "~3.2" 1455 | }, 1456 | "suggest": { 1457 | "symfony/config": "", 1458 | "symfony/expression-language": "For using expressions in service container configuration", 1459 | "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", 1460 | "symfony/yaml": "" 1461 | }, 1462 | "type": "library", 1463 | "extra": { 1464 | "branch-alias": { 1465 | "dev-master": "3.2-dev" 1466 | } 1467 | }, 1468 | "autoload": { 1469 | "psr-4": { 1470 | "Symfony\\Component\\DependencyInjection\\": "" 1471 | }, 1472 | "exclude-from-classmap": [ 1473 | "/Tests/" 1474 | ] 1475 | }, 1476 | "notification-url": "https://packagist.org/downloads/", 1477 | "license": [ 1478 | "MIT" 1479 | ], 1480 | "authors": [ 1481 | { 1482 | "name": "Fabien Potencier", 1483 | "email": "fabien@symfony.com" 1484 | }, 1485 | { 1486 | "name": "Symfony Community", 1487 | "homepage": "https://symfony.com/contributors" 1488 | } 1489 | ], 1490 | "description": "Symfony DependencyInjection Component", 1491 | "homepage": "https://symfony.com", 1492 | "time": "2016-11-25 12:32:42" 1493 | }, 1494 | { 1495 | "name": "symfony/event-dispatcher", 1496 | "version": "v3.2.0", 1497 | "source": { 1498 | "type": "git", 1499 | "url": "https://github.com/symfony/event-dispatcher.git", 1500 | "reference": "e8f47a327c2f0fd5aa04fa60af2b693006ed7283" 1501 | }, 1502 | "dist": { 1503 | "type": "zip", 1504 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e8f47a327c2f0fd5aa04fa60af2b693006ed7283", 1505 | "reference": "e8f47a327c2f0fd5aa04fa60af2b693006ed7283", 1506 | "shasum": "" 1507 | }, 1508 | "require": { 1509 | "php": ">=5.5.9" 1510 | }, 1511 | "require-dev": { 1512 | "psr/log": "~1.0", 1513 | "symfony/config": "~2.8|~3.0", 1514 | "symfony/dependency-injection": "~2.8|~3.0", 1515 | "symfony/expression-language": "~2.8|~3.0", 1516 | "symfony/stopwatch": "~2.8|~3.0" 1517 | }, 1518 | "suggest": { 1519 | "symfony/dependency-injection": "", 1520 | "symfony/http-kernel": "" 1521 | }, 1522 | "type": "library", 1523 | "extra": { 1524 | "branch-alias": { 1525 | "dev-master": "3.2-dev" 1526 | } 1527 | }, 1528 | "autoload": { 1529 | "psr-4": { 1530 | "Symfony\\Component\\EventDispatcher\\": "" 1531 | }, 1532 | "exclude-from-classmap": [ 1533 | "/Tests/" 1534 | ] 1535 | }, 1536 | "notification-url": "https://packagist.org/downloads/", 1537 | "license": [ 1538 | "MIT" 1539 | ], 1540 | "authors": [ 1541 | { 1542 | "name": "Fabien Potencier", 1543 | "email": "fabien@symfony.com" 1544 | }, 1545 | { 1546 | "name": "Symfony Community", 1547 | "homepage": "https://symfony.com/contributors" 1548 | } 1549 | ], 1550 | "description": "Symfony EventDispatcher Component", 1551 | "homepage": "https://symfony.com", 1552 | "time": "2016-10-13 06:29:04" 1553 | }, 1554 | { 1555 | "name": "symfony/filesystem", 1556 | "version": "v3.2.0", 1557 | "source": { 1558 | "type": "git", 1559 | "url": "https://github.com/symfony/filesystem.git", 1560 | "reference": "8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4" 1561 | }, 1562 | "dist": { 1563 | "type": "zip", 1564 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4", 1565 | "reference": "8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4", 1566 | "shasum": "" 1567 | }, 1568 | "require": { 1569 | "php": ">=5.5.9" 1570 | }, 1571 | "type": "library", 1572 | "extra": { 1573 | "branch-alias": { 1574 | "dev-master": "3.2-dev" 1575 | } 1576 | }, 1577 | "autoload": { 1578 | "psr-4": { 1579 | "Symfony\\Component\\Filesystem\\": "" 1580 | }, 1581 | "exclude-from-classmap": [ 1582 | "/Tests/" 1583 | ] 1584 | }, 1585 | "notification-url": "https://packagist.org/downloads/", 1586 | "license": [ 1587 | "MIT" 1588 | ], 1589 | "authors": [ 1590 | { 1591 | "name": "Fabien Potencier", 1592 | "email": "fabien@symfony.com" 1593 | }, 1594 | { 1595 | "name": "Symfony Community", 1596 | "homepage": "https://symfony.com/contributors" 1597 | } 1598 | ], 1599 | "description": "Symfony Filesystem Component", 1600 | "homepage": "https://symfony.com", 1601 | "time": "2016-11-24 00:46:43" 1602 | }, 1603 | { 1604 | "name": "symfony/finder", 1605 | "version": "v3.2.0", 1606 | "source": { 1607 | "type": "git", 1608 | "url": "https://github.com/symfony/finder.git", 1609 | "reference": "4263e35a1e342a0f195c9349c0dee38148f8a14f" 1610 | }, 1611 | "dist": { 1612 | "type": "zip", 1613 | "url": "https://api.github.com/repos/symfony/finder/zipball/4263e35a1e342a0f195c9349c0dee38148f8a14f", 1614 | "reference": "4263e35a1e342a0f195c9349c0dee38148f8a14f", 1615 | "shasum": "" 1616 | }, 1617 | "require": { 1618 | "php": ">=5.5.9" 1619 | }, 1620 | "type": "library", 1621 | "extra": { 1622 | "branch-alias": { 1623 | "dev-master": "3.2-dev" 1624 | } 1625 | }, 1626 | "autoload": { 1627 | "psr-4": { 1628 | "Symfony\\Component\\Finder\\": "" 1629 | }, 1630 | "exclude-from-classmap": [ 1631 | "/Tests/" 1632 | ] 1633 | }, 1634 | "notification-url": "https://packagist.org/downloads/", 1635 | "license": [ 1636 | "MIT" 1637 | ], 1638 | "authors": [ 1639 | { 1640 | "name": "Fabien Potencier", 1641 | "email": "fabien@symfony.com" 1642 | }, 1643 | { 1644 | "name": "Symfony Community", 1645 | "homepage": "https://symfony.com/contributors" 1646 | } 1647 | ], 1648 | "description": "Symfony Finder Component", 1649 | "homepage": "https://symfony.com", 1650 | "time": "2016-11-03 08:11:03" 1651 | }, 1652 | { 1653 | "name": "symfony/polyfill-mbstring", 1654 | "version": "v1.3.0", 1655 | "source": { 1656 | "type": "git", 1657 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1658 | "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" 1659 | }, 1660 | "dist": { 1661 | "type": "zip", 1662 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", 1663 | "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", 1664 | "shasum": "" 1665 | }, 1666 | "require": { 1667 | "php": ">=5.3.3" 1668 | }, 1669 | "suggest": { 1670 | "ext-mbstring": "For best performance" 1671 | }, 1672 | "type": "library", 1673 | "extra": { 1674 | "branch-alias": { 1675 | "dev-master": "1.3-dev" 1676 | } 1677 | }, 1678 | "autoload": { 1679 | "psr-4": { 1680 | "Symfony\\Polyfill\\Mbstring\\": "" 1681 | }, 1682 | "files": [ 1683 | "bootstrap.php" 1684 | ] 1685 | }, 1686 | "notification-url": "https://packagist.org/downloads/", 1687 | "license": [ 1688 | "MIT" 1689 | ], 1690 | "authors": [ 1691 | { 1692 | "name": "Nicolas Grekas", 1693 | "email": "p@tchwork.com" 1694 | }, 1695 | { 1696 | "name": "Symfony Community", 1697 | "homepage": "https://symfony.com/contributors" 1698 | } 1699 | ], 1700 | "description": "Symfony polyfill for the Mbstring extension", 1701 | "homepage": "https://symfony.com", 1702 | "keywords": [ 1703 | "compatibility", 1704 | "mbstring", 1705 | "polyfill", 1706 | "portable", 1707 | "shim" 1708 | ], 1709 | "time": "2016-11-14 01:06:16" 1710 | }, 1711 | { 1712 | "name": "symfony/yaml", 1713 | "version": "v3.2.0", 1714 | "source": { 1715 | "type": "git", 1716 | "url": "https://github.com/symfony/yaml.git", 1717 | "reference": "f2300ba8fbb002c028710b92e1906e7457410693" 1718 | }, 1719 | "dist": { 1720 | "type": "zip", 1721 | "url": "https://api.github.com/repos/symfony/yaml/zipball/f2300ba8fbb002c028710b92e1906e7457410693", 1722 | "reference": "f2300ba8fbb002c028710b92e1906e7457410693", 1723 | "shasum": "" 1724 | }, 1725 | "require": { 1726 | "php": ">=5.5.9" 1727 | }, 1728 | "require-dev": { 1729 | "symfony/console": "~2.8|~3.0" 1730 | }, 1731 | "suggest": { 1732 | "symfony/console": "For validating YAML files using the lint command" 1733 | }, 1734 | "type": "library", 1735 | "extra": { 1736 | "branch-alias": { 1737 | "dev-master": "3.2-dev" 1738 | } 1739 | }, 1740 | "autoload": { 1741 | "psr-4": { 1742 | "Symfony\\Component\\Yaml\\": "" 1743 | }, 1744 | "exclude-from-classmap": [ 1745 | "/Tests/" 1746 | ] 1747 | }, 1748 | "notification-url": "https://packagist.org/downloads/", 1749 | "license": [ 1750 | "MIT" 1751 | ], 1752 | "authors": [ 1753 | { 1754 | "name": "Fabien Potencier", 1755 | "email": "fabien@symfony.com" 1756 | }, 1757 | { 1758 | "name": "Symfony Community", 1759 | "homepage": "https://symfony.com/contributors" 1760 | } 1761 | ], 1762 | "description": "Symfony Yaml Component", 1763 | "homepage": "https://symfony.com", 1764 | "time": "2016-11-18 21:17:59" 1765 | }, 1766 | { 1767 | "name": "webmozart/assert", 1768 | "version": "1.2.0", 1769 | "source": { 1770 | "type": "git", 1771 | "url": "https://github.com/webmozart/assert.git", 1772 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" 1773 | }, 1774 | "dist": { 1775 | "type": "zip", 1776 | "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", 1777 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", 1778 | "shasum": "" 1779 | }, 1780 | "require": { 1781 | "php": "^5.3.3 || ^7.0" 1782 | }, 1783 | "require-dev": { 1784 | "phpunit/phpunit": "^4.6", 1785 | "sebastian/version": "^1.0.1" 1786 | }, 1787 | "type": "library", 1788 | "extra": { 1789 | "branch-alias": { 1790 | "dev-master": "1.3-dev" 1791 | } 1792 | }, 1793 | "autoload": { 1794 | "psr-4": { 1795 | "Webmozart\\Assert\\": "src/" 1796 | } 1797 | }, 1798 | "notification-url": "https://packagist.org/downloads/", 1799 | "license": [ 1800 | "MIT" 1801 | ], 1802 | "authors": [ 1803 | { 1804 | "name": "Bernhard Schussek", 1805 | "email": "bschussek@gmail.com" 1806 | } 1807 | ], 1808 | "description": "Assertions to validate method input/output with nice error messages.", 1809 | "keywords": [ 1810 | "assert", 1811 | "check", 1812 | "validate" 1813 | ], 1814 | "time": "2016-11-23 20:04:58" 1815 | } 1816 | ], 1817 | "aliases": [], 1818 | "minimum-stability": "alpha", 1819 | "stability-flags": { 1820 | "phpmd/phpmd": 0 1821 | }, 1822 | "prefer-stable": false, 1823 | "prefer-lowest": false, 1824 | "platform": { 1825 | "php": "~5.6|~7.0" 1826 | }, 1827 | "platform-dev": [] 1828 | } 1829 | -------------------------------------------------------------------------------- /magento2-bash-completion: -------------------------------------------------------------------------------- 1 | _magento2() 2 | { 3 | local cur opts first_word 4 | COMPREPLY=() 5 | _get_comp_words_by_ref -n : cur words 6 | for word in ${words[@]:1}; do 7 | if [[ $word != -* ]]; then 8 | first_word=$word 9 | break 10 | fi 11 | done 12 | opts="help list admin:user:create admin:user:unlock cache:clean cache:disable cache:enable cache:flush cache:status catalog:images:resize catalog:product:attributes:cleanup cron:run customer:hash:upgrade deploy:mode:set deploy:mode:show dev:source-theme:deploy dev:tests:run dev:urn-catalog:generate dev:xml:convert i18n:collect-phrases i18n:pack i18n:uninstall indexer:info indexer:reindex indexer:reset indexer:set-mode indexer:show-mode indexer:status info:adminuri info:backups:list info:currency:list info:dependencies:show-framework info:dependencies:show-modules info:dependencies:show-modules-circular info:language:list info:timezone:list maintenance:allow-ips maintenance:disable maintenance:enable maintenance:status module:disable module:enable module:status module:uninstall sampledata:deploy sampledata:remove sampledata:reset setup:backup setup:config:set setup:cron:run setup:db-data:upgrade setup:db-declaration:generate-patch setup:db-declaration:generate-whitelist setup:db-schema:upgrade setup:db:status setup:di:compile setup:install setup:performance:generate-fixtures setup:rollback setup:static-content:deploy setup:store-config:set setup:uninstall setup:upgrade theme:uninstall" 13 | case "$first_word" in 14 | help) 15 | opts="--xml --format --raw" 16 | ;; list) 17 | opts="--xml --raw --format" 18 | ;; admin:user:create) 19 | opts="--admin-user --admin-password --admin-email --admin-firstname --admin-lastname --magento-init-params" 20 | ;; cache:clean) 21 | opts="--bootstrap" 22 | ;; cache:disable) 23 | opts="--bootstrap" 24 | ;; cache:enable) 25 | opts="--bootstrap" 26 | ;; cache:flush) 27 | opts="--bootstrap" 28 | ;; cache:status) 29 | opts="--bootstrap" 30 | ;; cron:run) 31 | opts="--group --bootstrap" 32 | ;; deploy:mode:set) 33 | opts="--skip-compilation" 34 | ;; dev:source-theme:deploy) 35 | opts="--type --locale --area --theme" 36 | ;; dev:urn-catalog:generate) 37 | opts="--ide" 38 | ;; dev:xml:convert) 39 | opts="--overwrite" 40 | ;; i18n:collect-phrases) 41 | opts="--output --magento" 42 | ;; i18n:pack) 43 | opts="--mode --allow-duplicates" 44 | ;; i18n:uninstall) 45 | opts="--backup-code" 46 | ;; info:dependencies:show-framework) 47 | opts="--output" 48 | ;; info:dependencies:show-modules) 49 | opts="--output" 50 | ;; info:dependencies:show-modules-circular) 51 | opts="--output" 52 | ;; maintenance:allow-ips) 53 | opts="--none --magento-init-params" 54 | ;; maintenance:disable) 55 | opts="--ip --magento-init-params" 56 | ;; maintenance:enable) 57 | opts="--ip --magento-init-params" 58 | ;; maintenance:status) 59 | opts="--magento-init-params" 60 | ;; module:disable) 61 | opts="--force --all --clear-static-content --magento-init-params" 62 | ;; module:enable) 63 | opts="--force --all --clear-static-content --magento-init-params" 64 | ;; module:status) 65 | opts="--magento-init-params" 66 | ;; module:uninstall) 67 | opts="--remove-data --backup-code --backup-media --backup-db --clear-static-content --magento-init-params" 68 | ;; setup:backup) 69 | opts="--code --media --db --magento-init-params" 70 | ;; setup:config:set) 71 | opts="--backend-frontname --key --session-save --definition-format --db-host --db-name --db-user --db-engine --db-password --db-prefix --db-model --db-init-statements --skip-db-validation --http-cache-hosts --magento-init-params" 72 | ;; setup:cron:run) 73 | opts="--magento-init-params" 74 | ;; setup:db-data:upgrade) 75 | opts="--magento-init-params" 76 | ;; setup:db-declaration:generate-patch) 77 | opts="--type --revertable" 78 | ;; setup:db-declaration:generate-whitelist) 79 | opts="--module-name" 80 | ;; setup:db-schema:upgrade) 81 | opts="--magento-init-params" 82 | ;; setup:db:status) 83 | opts="--magento-init-params" 84 | ;; setup:install) 85 | opts="--backend-frontname --key --session-save --definition-format --db-host --db-name --db-user --db-engine --db-password --db-prefix --db-model --db-init-statements --skip-db-validation --http-cache-hosts --base-url --language --timezone --currency --use-rewrites --use-secure --base-url-secure --use-secure-admin --admin-use-security-key --admin-user --admin-password --admin-email --admin-firstname --admin-lastname --cleanup-database --sales-order-increment-prefix --use-sample-data --magento-init-params" 86 | ;; setup:performance:generate-fixtures) 87 | opts="--skip-reindex" 88 | ;; setup:rollback) 89 | opts="--code-file --media-file --db-file --magento-init-params" 90 | ;; setup:static-content:deploy) 91 | opts="--dry-run --no-javascript --no-css --no-less --no-images --no-fonts --no-html --no-misc --no-html-minify --theme --exclude-theme --language --exclude-language --area --exclude-area --jobs" 92 | ;; setup:store-config:set) 93 | opts="--base-url --language --timezone --currency --use-rewrites --use-secure --base-url-secure --use-secure-admin --admin-use-security-key --magento-init-params" 94 | ;; setup:uninstall) 95 | opts="--magento-init-params" 96 | ;; setup:upgrade) 97 | opts="--keep-generated --magento-init-params" 98 | ;; theme:uninstall) 99 | opts="--backup-code --clear-static-content" 100 | ;; 101 | esac 102 | COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) 103 | __ltrim_colon_completions "$cur" 104 | } 105 | complete -o default -F _magento2 magento 106 | -------------------------------------------------------------------------------- /magento2-bash-completion-enterprise: -------------------------------------------------------------------------------- 1 | _magento2() 2 | { 3 | local cur opts first_word 4 | COMPREPLY=() 5 | _get_comp_words_by_ref -n : cur words 6 | for word in ${words[@]:1}; do 7 | if [[ $word != -* ]]; then 8 | first_word=$word 9 | break 10 | fi 11 | done 12 | opts="help list admin:user:create admin:user:unlock cache:clean cache:disable cache:enable cache:flush cache:status catalog:images:resize catalog:product:attributes:cleanup cron:run customer:hash:upgrade deploy:mode:set deploy:mode:show dev:source-theme:deploy dev:tests:run dev:urn-catalog:generate dev:xml:convert i18n:collect-phrases i18n:pack i18n:uninstall indexer:info indexer:reindex indexer:reset indexer:set-mode indexer:show-mode indexer:status info:adminuri info:backups:list info:currency:list info:dependencies:show-framework info:dependencies:show-modules info:dependencies:show-modules-circular info:language:list info:timezone:list maintenance:allow-ips maintenance:disable maintenance:enable maintenance:status module:disable module:enable module:status module:uninstall queue:consumers:list queue:consumers:start sampledata:deploy sampledata:remove sampledata:reset setup:backup setup:config:set setup:cron:run setup:db-data:upgrade setup:db-declaration:generate-patch setup:db-declaration:generate-whitelist setup:db-schema:add-slave setup:db-schema:split-quote setup:db-schema:split-sales setup:db-schema:upgrade setup:db:status setup:di:compile setup:install setup:performance:generate-fixtures setup:rollback setup:static-content:deploy setup:store-config:set setup:uninstall setup:upgrade support:backup:code support:backup:db support:utility:check support:utility:paths theme:uninstall" 13 | case "$first_word" in 14 | help) 15 | opts="--xml --format --raw" 16 | ;; list) 17 | opts="--xml --raw --format" 18 | ;; admin:user:create) 19 | opts="--admin-user --admin-password --admin-email --admin-firstname --admin-lastname --magento-init-params" 20 | ;; cache:clean) 21 | opts="--bootstrap" 22 | ;; cache:disable) 23 | opts="--bootstrap" 24 | ;; cache:enable) 25 | opts="--bootstrap" 26 | ;; cache:flush) 27 | opts="--bootstrap" 28 | ;; cache:status) 29 | opts="--bootstrap" 30 | ;; cron:run) 31 | opts="--group --bootstrap" 32 | ;; deploy:mode:set) 33 | opts="--skip-compilation" 34 | ;; dev:source-theme:deploy) 35 | opts="--type --locale --area --theme" 36 | ;; dev:urn-catalog:generate) 37 | opts="--ide" 38 | ;; dev:xml:convert) 39 | opts="--overwrite" 40 | ;; i18n:collect-phrases) 41 | opts="--output --magento" 42 | ;; i18n:pack) 43 | opts="--mode --allow-duplicates" 44 | ;; i18n:uninstall) 45 | opts="--backup-code" 46 | ;; info:dependencies:show-framework) 47 | opts="--output" 48 | ;; info:dependencies:show-modules) 49 | opts="--output" 50 | ;; info:dependencies:show-modules-circular) 51 | opts="--output" 52 | ;; maintenance:allow-ips) 53 | opts="--none --magento-init-params" 54 | ;; maintenance:disable) 55 | opts="--ip --magento-init-params" 56 | ;; maintenance:enable) 57 | opts="--ip --magento-init-params" 58 | ;; maintenance:status) 59 | opts="--magento-init-params" 60 | ;; module:disable) 61 | opts="--force --all --clear-static-content --magento-init-params" 62 | ;; module:enable) 63 | opts="--force --all --clear-static-content --magento-init-params" 64 | ;; module:status) 65 | opts="--magento-init-params" 66 | ;; module:uninstall) 67 | opts="--remove-data --backup-code --backup-media --backup-db --clear-static-content --magento-init-params" 68 | ;; queue:consumers:start) 69 | opts="--max-messages --area-code" 70 | ;; setup:backup) 71 | opts="--code --media --db --magento-init-params" 72 | ;; setup:config:set) 73 | opts="--backend-frontname --amqp-host --amqp-port --amqp-user --amqp-password --amqp-virtualhost --amqp-ssl --key --session-save --definition-format --db-host --db-name --db-user --db-engine --db-password --db-prefix --db-model --db-init-statements --skip-db-validation --http-cache-hosts --magento-init-params" 74 | ;; setup:cron:run) 75 | opts="--magento-init-params" 76 | ;; setup:db-data:upgrade) 77 | opts="--magento-init-params" 78 | ;; setup:db-declaration:generate-patch) 79 | opts="--type --revertable" 80 | ;; setup:db-declaration:generate-whitelist) 81 | opts="--module-name" 82 | ;; setup:db-schema:add-slave) 83 | opts="--host --dbname --username --password --connection --resource" 84 | ;; setup:db-schema:split-quote) 85 | opts="--host --dbname --username --password --connection --resource" 86 | ;; setup:db-schema:split-sales) 87 | opts="--host --dbname --username --password --connection --resource" 88 | ;; setup:db-schema:upgrade) 89 | opts="--magento-init-params" 90 | ;; setup:db:status) 91 | opts="--magento-init-params" 92 | ;; setup:install) 93 | opts="--backend-frontname --amqp-host --amqp-port --amqp-user --amqp-password --amqp-virtualhost --amqp-ssl --key --session-save --definition-format --db-host --db-name --db-user --db-engine --db-password --db-prefix --db-model --db-init-statements --skip-db-validation --http-cache-hosts --base-url --language --timezone --currency --use-rewrites --use-secure --base-url-secure --use-secure-admin --admin-use-security-key --admin-user --admin-password --admin-email --admin-firstname --admin-lastname --cleanup-database --sales-order-increment-prefix --use-sample-data --magento-init-params" 94 | ;; setup:performance:generate-fixtures) 95 | opts="--skip-reindex" 96 | ;; setup:rollback) 97 | opts="--code-file --media-file --db-file --magento-init-params" 98 | ;; setup:static-content:deploy) 99 | opts="--dry-run --no-javascript --no-css --no-less --no-images --no-fonts --no-html --no-misc --no-html-minify --theme --exclude-theme --language --exclude-language --area --exclude-area --jobs" 100 | ;; setup:store-config:set) 101 | opts="--base-url --language --timezone --currency --use-rewrites --use-secure --base-url-secure --use-secure-admin --admin-use-security-key --magento-init-params" 102 | ;; setup:uninstall) 103 | opts="--magento-init-params" 104 | ;; setup:upgrade) 105 | opts="--keep-generated --magento-init-params" 106 | ;; support:backup:code) 107 | opts="--name --output --logs" 108 | ;; support:backup:db) 109 | opts="--name --output --logs --ignore-sanitize" 110 | ;; support:utility:check) 111 | opts="--hide-paths" 112 | ;; support:utility:paths) 113 | opts="--force" 114 | ;; theme:uninstall) 115 | opts="--backup-code --clear-static-content" 116 | ;; 117 | esac 118 | COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) 119 | __ltrim_colon_completions "$cur" 120 | } 121 | complete -o default -F _magento2 magento 122 | -------------------------------------------------------------------------------- /modman: -------------------------------------------------------------------------------- 1 | src app/code/Voronoy/BashCompletion 2 | -------------------------------------------------------------------------------- /phpspec.yml: -------------------------------------------------------------------------------- 1 | suites: 2 | default: 3 | namespace: Voronoy\BashCompletion 4 | psr4_prefix: Voronoy\BashCompletion 5 | src_path: %paths.config%/src 6 | spec_path: %paths.config% -------------------------------------------------------------------------------- /spec/Model/BashCompletion/GeneratorSpec.php: -------------------------------------------------------------------------------- 1 | getOptions()->willReturn([ 24 | 'option1' => $inputOption, 25 | 'option2' => $inputOption2 26 | ]); 27 | $command1->getName()->willReturn('test:command'); 28 | $command1->getDefinition()->willReturn($inputDefinition); 29 | 30 | $inputDefinition2->getOptions()->willReturn([]); 31 | $command2->getName()->willReturn('other-command'); 32 | $command2->getDefinition()->willReturn($inputDefinition2); 33 | 34 | 35 | $collection->getItems()->willReturn([ 36 | 'test:command' => $command1, 37 | 'other-command' => $command2 38 | ]); 39 | $this->beConstructedWith($collection); 40 | } 41 | function it_is_initializable() 42 | { 43 | $this->shouldHaveType('Voronoy\BashCompletion\Model\BashCompletion\Generator'); 44 | } 45 | 46 | function it_there_is_generate_method() { 47 | 48 | $expected = <<<'TEMPLATE' 49 | _magento2() 50 | { 51 | local cur opts first_word 52 | COMPREPLY=() 53 | _get_comp_words_by_ref -n : cur words 54 | for word in ${words[@]:1}; do 55 | if [[ $word != -* ]]; then 56 | first_word=$word 57 | break 58 | fi 59 | done 60 | opts="test:command other-command" 61 | case "$first_word" in 62 | test:command) 63 | opts="--option1 --option2" 64 | ;; 65 | esac 66 | COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) 67 | __ltrim_colon_completions "$cur" 68 | } 69 | complete -o default -F _magento2 magento 70 | 71 | TEMPLATE; 72 | 73 | $this->generate()->shouldBe($expected); 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /spec/Model/BashCompletionSpec.php: -------------------------------------------------------------------------------- 1 | beConstructedWith( 21 | $filesystem, 22 | $bashCompleteGenerator 23 | ); 24 | } 25 | function it_is_initializable() 26 | { 27 | $this->shouldHaveType('Voronoy\BashCompletion\Model\BashCompletion'); 28 | } 29 | 30 | function it_should_generate_bash_completion_file( 31 | Filesystem $filesystem, 32 | Filesystem\Directory\WriteInterface $write, 33 | Generator $bashCompleteGenerator 34 | ) { 35 | $bashCompleteGenerator->generate()->shouldBeCalled()->willReturn('abc'); 36 | $filesystem->getDirectoryWrite(DirectoryList::VAR_DIR) 37 | ->willReturn($write) 38 | ->shouldBeCalled(1); 39 | $write->writeFile('magento2-bash-completion', 'abc')->willReturn(3); 40 | 41 | $this->generateCompletionList() 42 | ->shouldReturn('Magento2 Bash Completion generated in var/magento2-bash-completion'); 43 | } 44 | 45 | function it_should_return_entered_name( 46 | Filesystem $filesystem, 47 | Generator $bashCompleteGenerator, 48 | Filesystem\Directory\WriteInterface $write 49 | ) { 50 | $bashCompleteGenerator->generate()->shouldBeCalled()->willReturn('abc'); 51 | $filesystem->getDirectoryWrite(DirectoryList::VAR_DIR) 52 | ->willReturn($write) 53 | ->shouldBeCalled(1); 54 | $write->writeFile('custom-name', 'abc')->willReturn(3); 55 | $this->generateCompletionList('custom-name') 56 | ->shouldReturn('Magento2 Bash Completion generated in var/custom-name'); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /spec/Model/CommandCollectionSpec.php: -------------------------------------------------------------------------------- 1 | shouldHaveType('Voronoy\BashCompletion\Model\CommandCollection'); 15 | } 16 | 17 | function it_should_be_able_add_command(Command $command) 18 | { 19 | $command->getName()->willReturn('abc'); 20 | $this->add($command); 21 | $this->getItems()->shouldBeArray(); 22 | $this->getItems()->shouldContain($command); 23 | $this->getItem('abc')->shouldReturn($command); 24 | } 25 | 26 | function it_should_be_countable(Command $command1, Command $command2) 27 | { 28 | $command1->getName()->willReturn('abc'); 29 | $command2->getName()->willReturn('cba'); 30 | $this->add($command1); 31 | $this->add($command2); 32 | 33 | $this->count()->shouldBe(2); 34 | } 35 | 36 | function it_can_add_multiple_items_to_collection(Command $command1, Command $command2) 37 | { 38 | $this->setItems([$command1, $command2]); 39 | $this->count()->shouldBe(2); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/Console/Command/BashCompletionCommand.php: -------------------------------------------------------------------------------- 1 | commandCollection = $commandCollection; 29 | $this->bashCompletion = $bashCompletion; 30 | parent::__construct(); 31 | } 32 | 33 | protected function configure() 34 | { 35 | $this->setName(self::COMMAND_NAME) 36 | ->setDescription('Generate Bash Completion List.'); 37 | $this->setDefinition([new InputArgument( 38 | self::INPUT_ARG_NAME, 39 | InputArgument::OPTIONAL, 40 | 'Bash Completion File Name' 41 | )]); 42 | } 43 | 44 | protected function execute(InputInterface $input, OutputInterface $output) 45 | { 46 | $description = new ApplicationDescription($this->getApplication()); 47 | $commands = $description->getCommands(); 48 | foreach ($commands as $command) { 49 | if ($command->getName() == self::COMMAND_NAME) { 50 | continue; 51 | } 52 | $this->commandCollection->add($command); 53 | } 54 | $result = $this->bashCompletion->generateCompletionList( 55 | $input->getArgument(self::INPUT_ARG_NAME) 56 | ); 57 | 58 | return $output->writeln($result); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/Model/BashCompletion.php: -------------------------------------------------------------------------------- 1 | filesystem = $filesystem; 22 | $this->generator = $generator; 23 | } 24 | 25 | public function generateCompletionList($name = null) 26 | { 27 | if (!$name) { 28 | $name = $this->getName(); 29 | } 30 | $directoryWrite = $this->filesystem->getDirectoryWrite(DirectoryList::VAR_DIR); 31 | $directoryWrite->writeFile($name, $this->generator->generate()); 32 | return 'Magento2 Bash Completion generated in var/' . $name; 33 | } 34 | 35 | public function getName() 36 | { 37 | return $this->name; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/Model/BashCompletion/Generator.php: -------------------------------------------------------------------------------- 1 | commandCollection = $commandCollection; 15 | } 16 | 17 | public function generate() 18 | { 19 | $template = $this->getTemplate(); 20 | 21 | return $template; 22 | } 23 | 24 | private function getAllCommands() 25 | { 26 | $commandCollection = $this->commandCollection; 27 | $commands = array_keys($commandCollection->getItems()); 28 | $commands = implode(' ', $commands); 29 | 30 | return $commands; 31 | } 32 | 33 | private function getTemplate() 34 | { 35 | return <<