Add pear modules, mail and net_smtp via composer (#93)
Add pear modules, mail and net_smtp via composer, remove php 5.6 build due to phpunit 6
This commit is contained in:
@@ -3,14 +3,13 @@ services:
|
||||
before_script:
|
||||
- echo "USE mysql;\nUPDATE user SET password=PASSWORD('dev') WHERE user='root';\nFLUSH PRIVILEGES;\n" | mysql -u root
|
||||
install:
|
||||
- rm $TRAVIS_BUILD_DIR/tools/phpunit
|
||||
- composer require --dev phpunit/phpunit ^5.7
|
||||
- $TRAVIS_BUILD_DIR/vendor/bin/phpunit --version
|
||||
- cp $TRAVIS_BUILD_DIR/vendor/bin/phpunit $TRAVIS_BUILD_DIR/tools
|
||||
#- rm $TRAVIS_BUILD_DIR/tools/phpunit
|
||||
#- composer require --dev phpunit/phpunit ~6.5.5
|
||||
#- $TRAVIS_BUILD_DIR/vendor/bin/phpunit --version
|
||||
#- cp $TRAVIS_BUILD_DIR/vendor/bin/phpunit $TRAVIS_BUILD_DIR/tools
|
||||
script: ant build-ci
|
||||
language: php
|
||||
php:
|
||||
- '5.6'
|
||||
- '7.0'
|
||||
- '7.1'
|
||||
after_failure: "cat /tmp/icehrm.test.log"
|
||||
|
||||
@@ -5,11 +5,13 @@
|
||||
"gettext/gettext": "4.0.0",
|
||||
"consolidation/robo": "~1",
|
||||
"filp/whoops": "~2.1",
|
||||
"swiftmailer/swiftmailer": "^6.0"
|
||||
"swiftmailer/swiftmailer": "^6",
|
||||
"pear/net_smtp": "~1.7",
|
||||
"pear/mail": "~1.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "5.5.*"
|
||||
},
|
||||
"phpunit/phpunit": "~6.5.5"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"": "../../src"
|
||||
|
||||
1774
lib/composer/composer.lock
generated
1774
lib/composer/composer.lock
generated
File diff suppressed because it is too large
Load Diff
Binary file not shown.
2
lib/composer/vendor/autoload.php
vendored
2
lib/composer/vendor/autoload.php
vendored
@@ -4,4 +4,4 @@
|
||||
|
||||
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInita01cedac3fb3abb6b395843685a2b9da::getLoader();
|
||||
return ComposerAutoloaderInit6d4a28cd96a5bc5d5b97781c062572d9::getLoader();
|
||||
|
||||
1
lib/composer/vendor/bin/export-plural-rules
vendored
Symbolic link
1
lib/composer/vendor/bin/export-plural-rules
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../gettext/languages/bin/export-plural-rules
|
||||
1
lib/composer/vendor/bin/export-plural-rules.php
vendored
Symbolic link
1
lib/composer/vendor/bin/export-plural-rules.php
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../gettext/languages/bin/export-plural-rules.php
|
||||
17
lib/composer/vendor/bin/phpdoc-md
vendored
17
lib/composer/vendor/bin/phpdoc-md
vendored
@@ -1,17 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
$autoLoadPaths = array(__DIR__.'/vendor/autoload.php', __DIR__.'/../vendor/autoload.php', __DIR__.'/../../../autoload.php');
|
||||
foreach($autoLoadPaths as $autoloader) {
|
||||
if( file_exists($autoloader) ) {
|
||||
require $autoloader;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
use PHPDocsMD\Console\CLI;
|
||||
|
||||
$cli = new CLI();
|
||||
$code = $cli->run();
|
||||
exit($code);
|
||||
|
||||
47
lib/composer/vendor/bin/phpunit
vendored
47
lib/composer/vendor/bin/phpunit
vendored
@@ -1,47 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/*
|
||||
* This file is part of PHPUnit.
|
||||
*
|
||||
* (c) Sebastian Bergmann <sebastian@phpunit.de>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
if (version_compare('5.6.0', PHP_VERSION, '>')) {
|
||||
fwrite(
|
||||
STDERR,
|
||||
'This version of PHPUnit requires PHP 5.6; using the latest version of PHP is highly recommended.' . PHP_EOL
|
||||
);
|
||||
|
||||
die(1);
|
||||
}
|
||||
|
||||
if (!ini_get('date.timezone')) {
|
||||
ini_set('date.timezone', 'UTC');
|
||||
}
|
||||
|
||||
foreach (array(__DIR__ . '/../../autoload.php', __DIR__ . '/../vendor/autoload.php', __DIR__ . '/vendor/autoload.php') as $file) {
|
||||
if (file_exists($file)) {
|
||||
define('PHPUNIT_COMPOSER_INSTALL', $file);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
unset($file);
|
||||
|
||||
if (!defined('PHPUNIT_COMPOSER_INSTALL')) {
|
||||
fwrite(STDERR,
|
||||
'You need to set up the project dependencies using the following commands:' . PHP_EOL .
|
||||
'wget http://getcomposer.org/composer.phar' . PHP_EOL .
|
||||
'php composer.phar install' . PHP_EOL
|
||||
);
|
||||
|
||||
die(1);
|
||||
}
|
||||
|
||||
require PHPUNIT_COMPOSER_INSTALL;
|
||||
|
||||
PHPUnit_TextUI_Command::main();
|
||||
1
lib/composer/vendor/bin/phpunit
vendored
Symbolic link
1
lib/composer/vendor/bin/phpunit
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../phpunit/phpunit/phpunit
|
||||
21
lib/composer/vendor/bin/robo
vendored
21
lib/composer/vendor/bin/robo
vendored
@@ -1,21 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* if we're running from phar load the phar autoload,
|
||||
* else let the script 'robo' search for the autoloader
|
||||
*/
|
||||
if (strpos(basename(__FILE__), 'phar')) {
|
||||
require_once 'phar://robo.phar/vendor/autoload.php';
|
||||
} else {
|
||||
if (file_exists(__DIR__.'/vendor/autoload.php')) {
|
||||
require_once __DIR__.'/vendor/autoload.php';
|
||||
} elseif (file_exists(__DIR__.'/../../autoload.php')) {
|
||||
require_once __DIR__ . '/../../autoload.php';
|
||||
} else {
|
||||
require_once 'phar://robo.phar/vendor/autoload.php';
|
||||
}
|
||||
}
|
||||
$runner = new \Robo\Runner();
|
||||
$statusCode = $runner->execute($_SERVER['argv']);
|
||||
exit($statusCode);
|
||||
1
lib/composer/vendor/bin/robo
vendored
Symbolic link
1
lib/composer/vendor/bin/robo
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../consolidation/robo/robo
|
||||
444
lib/composer/vendor/composer/autoload_classmap.php
vendored
444
lib/composer/vendor/composer/autoload_classmap.php
vendored
@@ -9,179 +9,178 @@ return array(
|
||||
'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php',
|
||||
'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php',
|
||||
'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php',
|
||||
'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php',
|
||||
'PHPUnit_Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
|
||||
'PHPUnit_Extensions_GroupTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php',
|
||||
'PHPUnit_Extensions_PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestCase.php',
|
||||
'PHPUnit_Extensions_PhptTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php',
|
||||
'PHPUnit_Extensions_RepeatedTest' => $vendorDir . '/phpunit/phpunit/src/Extensions/RepeatedTest.php',
|
||||
'PHPUnit_Extensions_TestDecorator' => $vendorDir . '/phpunit/phpunit/src/Extensions/TestDecorator.php',
|
||||
'PHPUnit_Extensions_TicketListener' => $vendorDir . '/phpunit/phpunit/src/Extensions/TicketListener.php',
|
||||
'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
|
||||
'PHPUnit_Framework_AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
|
||||
'PHPUnit_Framework_BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
|
||||
'PHPUnit_Framework_CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
|
||||
'PHPUnit_Framework_Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint.php',
|
||||
'PHPUnit_Framework_Constraint_And' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/And.php',
|
||||
'PHPUnit_Framework_Constraint_ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
|
||||
'PHPUnit_Framework_Constraint_ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
|
||||
'PHPUnit_Framework_Constraint_Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
|
||||
'PHPUnit_Framework_Constraint_Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
|
||||
'PHPUnit_Framework_Constraint_ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
|
||||
'PHPUnit_Framework_Constraint_Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
|
||||
'PHPUnit_Framework_Constraint_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php',
|
||||
'PHPUnit_Framework_Constraint_FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
|
||||
'PHPUnit_Framework_Constraint_GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
|
||||
'PHPUnit_Framework_Constraint_IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
|
||||
'PHPUnit_Framework_Constraint_IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
|
||||
'PHPUnit_Framework_Constraint_IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
|
||||
'PHPUnit_Framework_Constraint_IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
|
||||
'PHPUnit_Framework_Constraint_IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
|
||||
'PHPUnit_Framework_Constraint_IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
|
||||
'PHPUnit_Framework_Constraint_IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
|
||||
'PHPUnit_Framework_Constraint_IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
|
||||
'PHPUnit_Framework_Constraint_IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
|
||||
'PHPUnit_Framework_Constraint_IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
|
||||
'PHPUnit_Framework_Constraint_IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
|
||||
'PHPUnit_Framework_Constraint_IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
|
||||
'PHPUnit_Framework_Constraint_IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
|
||||
'PHPUnit_Framework_Constraint_JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
|
||||
'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php',
|
||||
'PHPUnit_Framework_Constraint_LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
|
||||
'PHPUnit_Framework_Constraint_Not' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Not.php',
|
||||
'PHPUnit_Framework_Constraint_ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_Or' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Or.php',
|
||||
'PHPUnit_Framework_Constraint_PCREMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php',
|
||||
'PHPUnit_Framework_Constraint_SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
|
||||
'PHPUnit_Framework_Constraint_StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
|
||||
'PHPUnit_Framework_Constraint_StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
|
||||
'PHPUnit_Framework_Constraint_StringMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php',
|
||||
'PHPUnit_Framework_Constraint_StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
|
||||
'PHPUnit_Framework_Constraint_TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
|
||||
'PHPUnit_Framework_Constraint_TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
|
||||
'PHPUnit_Framework_Constraint_Xor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Xor.php',
|
||||
'PHPUnit_Framework_CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/PHPUnit_Framework_CoveredCodeNotExecutedException.php',
|
||||
'PHPUnit_Framework_Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error.php',
|
||||
'PHPUnit_Framework_Error_Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
|
||||
'PHPUnit_Framework_Error_Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
|
||||
'PHPUnit_Framework_Error_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
|
||||
'PHPUnit_Framework_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php',
|
||||
'PHPUnit_Framework_ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
|
||||
'PHPUnit_Framework_ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
|
||||
'PHPUnit_Framework_IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
|
||||
'PHPUnit_Framework_IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
|
||||
'PHPUnit_Framework_IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
|
||||
'PHPUnit_Framework_InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
|
||||
'PHPUnit_Framework_MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/PHPUnit_Framework_MissingCoversAnnotationException.php',
|
||||
'PHPUnit_Framework_MockObject_BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Namespace' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php',
|
||||
'PHPUnit_Framework_MockObject_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php',
|
||||
'PHPUnit_Framework_MockObject_Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php',
|
||||
'PHPUnit_Framework_MockObject_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation_Object' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation_Static' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php',
|
||||
'PHPUnit_Framework_MockObject_Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php',
|
||||
'PHPUnit_Framework_MockObject_MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php',
|
||||
'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php',
|
||||
'PHPUnit_Framework_MockObject_RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php',
|
||||
'PHPUnit_Framework_MockObject_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_Return' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnReference' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnReference.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php',
|
||||
'PHPUnit_Framework_MockObject_Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php',
|
||||
'PHPUnit_Framework_OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php',
|
||||
'PHPUnit_Framework_RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php',
|
||||
'PHPUnit_Framework_RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
|
||||
'PHPUnit_Framework_SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
|
||||
'PHPUnit_Framework_SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
|
||||
'PHPUnit_Framework_SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
|
||||
'PHPUnit_Framework_SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
|
||||
'PHPUnit_Framework_SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
|
||||
'PHPUnit_Framework_SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php',
|
||||
'PHPUnit_Framework_Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
|
||||
'PHPUnit_Framework_TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
|
||||
'PHPUnit_Framework_TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
|
||||
'PHPUnit_Framework_TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
|
||||
'PHPUnit_Framework_TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
|
||||
'PHPUnit_Framework_TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
||||
'PHPUnit_Framework_TestSuite_DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php',
|
||||
'PHPUnit_Framework_UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
|
||||
'PHPUnit_Framework_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php',
|
||||
'PHPUnit_Framework_WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
|
||||
'PHPUnit_Runner_BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
|
||||
'PHPUnit_Runner_Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
|
||||
'PHPUnit_Runner_Filter_Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
|
||||
'PHPUnit_Runner_Filter_GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group.php',
|
||||
'PHPUnit_Runner_Filter_Group_Exclude' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php',
|
||||
'PHPUnit_Runner_Filter_Group_Include' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php',
|
||||
'PHPUnit_Runner_Filter_Test' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Test.php',
|
||||
'PHPUnit_Runner_StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
|
||||
'PHPUnit_Runner_TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
|
||||
'PHPUnit_Runner_Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
|
||||
'PHPUnit_TextUI_Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
|
||||
'PHPUnit_TextUI_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
|
||||
'PHPUnit_TextUI_TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
||||
'PHPUnit_Util_Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
|
||||
'PHPUnit_Util_Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php',
|
||||
'PHPUnit_Util_ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
|
||||
'PHPUnit_Util_ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
||||
'PHPUnit_Util_Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php',
|
||||
'PHPUnit_Util_Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
|
||||
'PHPUnit_Util_Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
|
||||
'PHPUnit_Util_Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php',
|
||||
'PHPUnit_Util_GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
|
||||
'PHPUnit_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
|
||||
'PHPUnit_Util_Log_JSON' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JSON.php',
|
||||
'PHPUnit_Util_Log_JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
|
||||
'PHPUnit_Util_Log_TAP' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TAP.php',
|
||||
'PHPUnit_Util_Log_TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
|
||||
'PHPUnit_Util_PHP' => $vendorDir . '/phpunit/phpunit/src/Util/PHP.php',
|
||||
'PHPUnit_Util_PHP_Default' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Default.php',
|
||||
'PHPUnit_Util_PHP_Windows' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Windows.php',
|
||||
'PHPUnit_Util_Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
|
||||
'PHPUnit_Util_Regex' => $vendorDir . '/phpunit/phpunit/src/Util/Regex.php',
|
||||
'PHPUnit_Util_String' => $vendorDir . '/phpunit/phpunit/src/Util/String.php',
|
||||
'PHPUnit_Util_Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
|
||||
'PHPUnit_Util_TestDox_NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter_HTML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter_Text' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter_XML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/XML.php',
|
||||
'PHPUnit_Util_TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Util/TestSuiteIterator.php',
|
||||
'PHPUnit_Util_Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
|
||||
'PHPUnit_Util_XML' => $vendorDir . '/phpunit/phpunit/src/Util/XML.php',
|
||||
'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
|
||||
'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
|
||||
'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
|
||||
'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
|
||||
'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
|
||||
'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php',
|
||||
'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
|
||||
'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
|
||||
'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
|
||||
'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php',
|
||||
'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
|
||||
'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
|
||||
'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
|
||||
'PHPUnit\\Framework\\Error\\Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
|
||||
'PHPUnit\\Framework\\Error\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Error.php',
|
||||
'PHPUnit\\Framework\\Error\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
|
||||
'PHPUnit\\Framework\\Error\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
|
||||
'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php',
|
||||
'PHPUnit\\Framework\\ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
|
||||
'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
|
||||
'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
|
||||
'PHPUnit\\Framework\\IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
|
||||
'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
|
||||
'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
|
||||
'PHPUnit\\Framework\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/BadMethodCallException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Identity.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/InvocationMocker.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Match.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/MethodNameMatch.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/NamespaceMatch.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/ParametersMatch.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Stub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/Exception.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Generator.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/Invocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/InvocationMocker.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/ObjectInvocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/StaticInvocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invokable.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/AnyInvokedCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/AnyParameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/ConsecutiveParameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/Invocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtIndex.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastOnce.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtMostCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedRecorder.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/MethodName.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/Parameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/StatelessInvocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/MockBuilder.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/ForwardCompatibility/MockObject.php',
|
||||
'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/RuntimeException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ConsecutiveCalls.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/Exception.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/MatcherCollection.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnArgument.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnCallback.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnReference.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnSelf.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnStub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnValueMap.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Verifiable.php',
|
||||
'PHPUnit\\Framework\\OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php',
|
||||
'PHPUnit\\Framework\\RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php',
|
||||
'PHPUnit\\Framework\\RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
|
||||
'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
|
||||
'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
|
||||
'PHPUnit\\Framework\\SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
|
||||
'PHPUnit\\Framework\\SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
|
||||
'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
|
||||
'PHPUnit\\Framework\\SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php',
|
||||
'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
|
||||
'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
|
||||
'PHPUnit\\Framework\\TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
|
||||
'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
|
||||
'PHPUnit\\Framework\\TestListenerDefaultImplementation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
|
||||
'PHPUnit\\Framework\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
|
||||
'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
||||
'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
|
||||
'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
|
||||
'PHPUnit\\Framework\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php',
|
||||
'PHPUnit\\Framework\\WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
|
||||
'PHPUnit\\Runner\\BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
|
||||
'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
|
||||
'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
|
||||
'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
|
||||
'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
|
||||
'PHPUnit\\Runner\\StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
|
||||
'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
|
||||
'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
|
||||
'PHPUnit\\TextUI\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
|
||||
'PHPUnit\\TextUI\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
|
||||
'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
||||
'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
|
||||
'PHPUnit\\Util\\Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php',
|
||||
'PHPUnit\\Util\\ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
|
||||
'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
||||
'PHPUnit\\Util\\Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php',
|
||||
'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
|
||||
'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
|
||||
'PHPUnit\\Util\\Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php',
|
||||
'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
|
||||
'PHPUnit\\Util\\InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
|
||||
'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php',
|
||||
'PHPUnit\\Util\\Log\\JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
|
||||
'PHPUnit\\Util\\Log\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
|
||||
'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
|
||||
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
||||
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
||||
'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
|
||||
'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php',
|
||||
'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
|
||||
'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
|
||||
'PHPUnit\\Util\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\TextResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
|
||||
'PHPUnit\\Util\\TextTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
|
||||
'PHPUnit\\Util\\Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
|
||||
'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/XML.php',
|
||||
'PHPUnit\\Util\\XmlTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
|
||||
'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/MockObject.php',
|
||||
'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
|
||||
'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
@@ -311,6 +310,7 @@ return array(
|
||||
'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
@@ -381,7 +381,72 @@ return array(
|
||||
'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'Robo\\composer\\ScriptHandler' => $vendorDir . '/consolidation/robo/scripts/composer/ScriptHandler.php',
|
||||
'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php',
|
||||
'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php',
|
||||
'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php',
|
||||
'PharIo\\Manifest\\AuthorCollection' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollection.php',
|
||||
'PharIo\\Manifest\\AuthorCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
|
||||
'PharIo\\Manifest\\AuthorElement' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElement.php',
|
||||
'PharIo\\Manifest\\AuthorElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
|
||||
'PharIo\\Manifest\\BundledComponent' => $vendorDir . '/phar-io/manifest/src/values/BundledComponent.php',
|
||||
'PharIo\\Manifest\\BundledComponentCollection' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollection.php',
|
||||
'PharIo\\Manifest\\BundledComponentCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
|
||||
'PharIo\\Manifest\\BundlesElement' => $vendorDir . '/phar-io/manifest/src/xml/BundlesElement.php',
|
||||
'PharIo\\Manifest\\ComponentElement' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElement.php',
|
||||
'PharIo\\Manifest\\ComponentElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
|
||||
'PharIo\\Manifest\\ContainsElement' => $vendorDir . '/phar-io/manifest/src/xml/ContainsElement.php',
|
||||
'PharIo\\Manifest\\CopyrightElement' => $vendorDir . '/phar-io/manifest/src/xml/CopyrightElement.php',
|
||||
'PharIo\\Manifest\\CopyrightInformation' => $vendorDir . '/phar-io/manifest/src/values/CopyrightInformation.php',
|
||||
'PharIo\\Manifest\\ElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ElementCollection.php',
|
||||
'PharIo\\Manifest\\Email' => $vendorDir . '/phar-io/manifest/src/values/Email.php',
|
||||
'PharIo\\Manifest\\Exception' => $vendorDir . '/phar-io/manifest/src/exceptions/Exception.php',
|
||||
'PharIo\\Manifest\\ExtElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtElement.php',
|
||||
'PharIo\\Manifest\\ExtElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ExtElementCollection.php',
|
||||
'PharIo\\Manifest\\Extension' => $vendorDir . '/phar-io/manifest/src/values/Extension.php',
|
||||
'PharIo\\Manifest\\ExtensionElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtensionElement.php',
|
||||
'PharIo\\Manifest\\InvalidApplicationNameException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
|
||||
'PharIo\\Manifest\\InvalidEmailException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
|
||||
'PharIo\\Manifest\\InvalidUrlException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
|
||||
'PharIo\\Manifest\\Library' => $vendorDir . '/phar-io/manifest/src/values/Library.php',
|
||||
'PharIo\\Manifest\\License' => $vendorDir . '/phar-io/manifest/src/values/License.php',
|
||||
'PharIo\\Manifest\\LicenseElement' => $vendorDir . '/phar-io/manifest/src/xml/LicenseElement.php',
|
||||
'PharIo\\Manifest\\Manifest' => $vendorDir . '/phar-io/manifest/src/values/Manifest.php',
|
||||
'PharIo\\Manifest\\ManifestDocument' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocument.php',
|
||||
'PharIo\\Manifest\\ManifestDocumentException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
|
||||
'PharIo\\Manifest\\ManifestDocumentLoadingException' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php',
|
||||
'PharIo\\Manifest\\ManifestDocumentMapper' => $vendorDir . '/phar-io/manifest/src/ManifestDocumentMapper.php',
|
||||
'PharIo\\Manifest\\ManifestDocumentMapperException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
|
||||
'PharIo\\Manifest\\ManifestElement' => $vendorDir . '/phar-io/manifest/src/xml/ManifestElement.php',
|
||||
'PharIo\\Manifest\\ManifestElementException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
|
||||
'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php',
|
||||
'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
|
||||
'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php',
|
||||
'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php',
|
||||
'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
|
||||
'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
|
||||
'PharIo\\Manifest\\Requirement' => $vendorDir . '/phar-io/manifest/src/values/Requirement.php',
|
||||
'PharIo\\Manifest\\RequirementCollection' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollection.php',
|
||||
'PharIo\\Manifest\\RequirementCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
|
||||
'PharIo\\Manifest\\RequiresElement' => $vendorDir . '/phar-io/manifest/src/xml/RequiresElement.php',
|
||||
'PharIo\\Manifest\\Type' => $vendorDir . '/phar-io/manifest/src/values/Type.php',
|
||||
'PharIo\\Manifest\\Url' => $vendorDir . '/phar-io/manifest/src/values/Url.php',
|
||||
'PharIo\\Version\\AbstractVersionConstraint' => $vendorDir . '/phar-io/version/src/AbstractVersionConstraint.php',
|
||||
'PharIo\\Version\\AndVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/AndVersionConstraintGroup.php',
|
||||
'PharIo\\Version\\AnyVersionConstraint' => $vendorDir . '/phar-io/version/src/AnyVersionConstraint.php',
|
||||
'PharIo\\Version\\ExactVersionConstraint' => $vendorDir . '/phar-io/version/src/ExactVersionConstraint.php',
|
||||
'PharIo\\Version\\Exception' => $vendorDir . '/phar-io/version/src/Exception.php',
|
||||
'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php',
|
||||
'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/InvalidVersionException.php',
|
||||
'PharIo\\Version\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/OrVersionConstraintGroup.php',
|
||||
'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php',
|
||||
'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php',
|
||||
'PharIo\\Version\\SpecificMajorVersionConstraint' => $vendorDir . '/phar-io/version/src/SpecificMajorVersionConstraint.php',
|
||||
'PharIo\\Version\\UnsupportedVersionConstraintException' => $vendorDir . '/phar-io/version/src/UnsupportedVersionConstraintException.php',
|
||||
'PharIo\\Version\\Version' => $vendorDir . '/phar-io/version/src/Version.php',
|
||||
'PharIo\\Version\\VersionConstraint' => $vendorDir . '/phar-io/version/src/VersionConstraint.php',
|
||||
'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php',
|
||||
'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
|
||||
'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
|
||||
'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
|
||||
'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php',
|
||||
@@ -406,6 +471,7 @@ return array(
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
|
||||
@@ -414,12 +480,14 @@ return array(
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
|
||||
'SebastianBergmann\\CodeCoverage\\RuntimeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
|
||||
'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Util' => $vendorDir . '/phpunit/php-code-coverage/src/Util.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php',
|
||||
'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
|
||||
'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
|
||||
'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
|
||||
@@ -439,27 +507,45 @@ return array(
|
||||
'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
|
||||
'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
|
||||
'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => $vendorDir . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
|
||||
'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php',
|
||||
'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
|
||||
'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
|
||||
'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
|
||||
'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
|
||||
'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
|
||||
'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
|
||||
'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
|
||||
'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
|
||||
'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
|
||||
'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
|
||||
'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php',
|
||||
'SebastianBergmann\\Environment\\OperatingSystem' => $vendorDir . '/sebastian/environment/src/OperatingSystem.php',
|
||||
'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php',
|
||||
'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
|
||||
'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php',
|
||||
'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php',
|
||||
'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/Exception.php',
|
||||
'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/exceptions/Exception.php',
|
||||
'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php',
|
||||
'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/RuntimeException.php',
|
||||
'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php',
|
||||
'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php',
|
||||
'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php',
|
||||
'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php',
|
||||
'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
|
||||
'SebastianBergmann\\ObjectReflector\\Exception' => $vendorDir . '/sebastian/object-reflector/src/Exception.php',
|
||||
'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => $vendorDir . '/sebastian/object-reflector/src/InvalidArgumentException.php',
|
||||
'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php',
|
||||
'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php',
|
||||
'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php',
|
||||
'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php',
|
||||
'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php',
|
||||
'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
|
||||
'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php',
|
||||
'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php',
|
||||
'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php',
|
||||
'TheSeer\\Tokenizer\\NamespaceUriException' => $vendorDir . '/theseer/tokenizer/src/NamespaceUriException.php',
|
||||
'TheSeer\\Tokenizer\\Token' => $vendorDir . '/theseer/tokenizer/src/Token.php',
|
||||
'TheSeer\\Tokenizer\\TokenCollection' => $vendorDir . '/theseer/tokenizer/src/TokenCollection.php',
|
||||
'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php',
|
||||
'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php',
|
||||
'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php',
|
||||
);
|
||||
|
||||
@@ -7,5 +7,6 @@ $baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
||||
'2c102faa651ef8ea5874edb585946bce' => $vendorDir . '/swiftmailer/swiftmailer/lib/swift_required.php',
|
||||
);
|
||||
|
||||
@@ -8,6 +8,11 @@ $baseDir = dirname($vendorDir);
|
||||
return array(
|
||||
'Twig_' => array($vendorDir . '/twig/twig/lib'),
|
||||
'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'),
|
||||
'PHPDocsMD' => array($vendorDir . '/victorjonsson/markdowndocs/src'),
|
||||
'PEAR' => array($vendorDir . '/pear/pear_exception'),
|
||||
'Net' => array($vendorDir . '/pear/net_smtp', $vendorDir . '/pear/net_socket'),
|
||||
'Mail' => array($vendorDir . '/pear/mail'),
|
||||
'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'),
|
||||
'Dflydev\\DotAccessData' => array($vendorDir . '/dflydev/dot-access-data/src'),
|
||||
'Console' => array($vendorDir . '/pear/console_getopt'),
|
||||
'' => array($vendorDir . '/pear/pear-core-minimal/src'),
|
||||
);
|
||||
|
||||
@@ -6,7 +6,7 @@ $vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'),
|
||||
'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'),
|
||||
'Whoops\\' => array($vendorDir . '/filp/whoops/src/Whoops'),
|
||||
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
|
||||
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
|
||||
@@ -19,9 +19,12 @@ return array(
|
||||
'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'),
|
||||
'Robo\\' => array($vendorDir . '/consolidation/robo/src'),
|
||||
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
|
||||
'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
|
||||
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
|
||||
'League\\Container\\' => array($vendorDir . '/league/container/src'),
|
||||
'Interop\\Container\\' => array($vendorDir . '/container-interop/container-interop/src/Interop/Container'),
|
||||
'Grasmash\\YamlExpander\\' => array($vendorDir . '/grasmash/yaml-expander/src'),
|
||||
'Grasmash\\Expander\\' => array($vendorDir . '/grasmash/expander/src'),
|
||||
'Gettext\\Languages\\' => array($vendorDir . '/gettext/languages/src'),
|
||||
'Gettext\\' => array($vendorDir . '/gettext/gettext/src'),
|
||||
'Egulias\\EmailValidator\\' => array($vendorDir . '/egulias/email-validator/EmailValidator'),
|
||||
@@ -29,6 +32,7 @@ return array(
|
||||
'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
|
||||
'Consolidation\\OutputFormatters\\' => array($vendorDir . '/consolidation/output-formatters/src'),
|
||||
'Consolidation\\Log\\' => array($vendorDir . '/consolidation/log/src'),
|
||||
'Consolidation\\Config\\' => array($vendorDir . '/consolidation/config/src'),
|
||||
'Consolidation\\AnnotatedCommand\\' => array($vendorDir . '/consolidation/annotated-command/src'),
|
||||
'' => array($baseDir . '/../../src'),
|
||||
);
|
||||
|
||||
18
lib/composer/vendor/composer/autoload_real.php
vendored
18
lib/composer/vendor/composer/autoload_real.php
vendored
@@ -2,7 +2,7 @@
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInita01cedac3fb3abb6b395843685a2b9da
|
||||
class ComposerAutoloaderInit6d4a28cd96a5bc5d5b97781c062572d9
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
@@ -19,15 +19,19 @@ class ComposerAutoloaderInita01cedac3fb3abb6b395843685a2b9da
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInita01cedac3fb3abb6b395843685a2b9da', 'loadClassLoader'), true, true);
|
||||
spl_autoload_register(array('ComposerAutoloaderInit6d4a28cd96a5bc5d5b97781c062572d9', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInita01cedac3fb3abb6b395843685a2b9da', 'loadClassLoader'));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit6d4a28cd96a5bc5d5b97781c062572d9', 'loadClassLoader'));
|
||||
|
||||
$includePaths = require __DIR__ . '/include_paths.php';
|
||||
array_push($includePaths, get_include_path());
|
||||
set_include_path(join(PATH_SEPARATOR, $includePaths));
|
||||
|
||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');
|
||||
if ($useStaticLoader) {
|
||||
require_once __DIR__ . '/autoload_static.php';
|
||||
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInita01cedac3fb3abb6b395843685a2b9da::getInitializer($loader));
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit6d4a28cd96a5bc5d5b97781c062572d9::getInitializer($loader));
|
||||
} else {
|
||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
@@ -48,19 +52,19 @@ class ComposerAutoloaderInita01cedac3fb3abb6b395843685a2b9da
|
||||
$loader->register(true);
|
||||
|
||||
if ($useStaticLoader) {
|
||||
$includeFiles = Composer\Autoload\ComposerStaticInita01cedac3fb3abb6b395843685a2b9da::$files;
|
||||
$includeFiles = Composer\Autoload\ComposerStaticInit6d4a28cd96a5bc5d5b97781c062572d9::$files;
|
||||
} else {
|
||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||
}
|
||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||
composerRequirea01cedac3fb3abb6b395843685a2b9da($fileIdentifier, $file);
|
||||
composerRequire6d4a28cd96a5bc5d5b97781c062572d9($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
|
||||
function composerRequirea01cedac3fb3abb6b395843685a2b9da($fileIdentifier, $file)
|
||||
function composerRequire6d4a28cd96a5bc5d5b97781c062572d9($fileIdentifier, $file)
|
||||
{
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
require $file;
|
||||
|
||||
516
lib/composer/vendor/composer/autoload_static.php
vendored
516
lib/composer/vendor/composer/autoload_static.php
vendored
@@ -4,10 +4,11 @@
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
class ComposerStaticInit6d4a28cd96a5bc5d5b97781c062572d9
|
||||
{
|
||||
public static $files = array (
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
||||
'2c102faa651ef8ea5874edb585946bce' => __DIR__ . '/..' . '/swiftmailer/swiftmailer/lib/swift_required.php',
|
||||
);
|
||||
|
||||
@@ -39,6 +40,7 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
'P' =>
|
||||
array (
|
||||
'Psr\\Log\\' => 8,
|
||||
'Psr\\Container\\' => 14,
|
||||
),
|
||||
'M' =>
|
||||
array (
|
||||
@@ -54,6 +56,8 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
),
|
||||
'G' =>
|
||||
array (
|
||||
'Grasmash\\YamlExpander\\' => 22,
|
||||
'Grasmash\\Expander\\' => 18,
|
||||
'Gettext\\Languages\\' => 18,
|
||||
'Gettext\\' => 8,
|
||||
),
|
||||
@@ -70,6 +74,7 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
array (
|
||||
'Consolidation\\OutputFormatters\\' => 31,
|
||||
'Consolidation\\Log\\' => 18,
|
||||
'Consolidation\\Config\\' => 21,
|
||||
'Consolidation\\AnnotatedCommand\\' => 31,
|
||||
),
|
||||
);
|
||||
@@ -78,8 +83,8 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
'phpDocumentor\\Reflection\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
|
||||
1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
|
||||
2 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
|
||||
1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
|
||||
2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
|
||||
),
|
||||
'Whoops\\' =>
|
||||
array (
|
||||
@@ -129,6 +134,10 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
|
||||
),
|
||||
'Psr\\Container\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/container/src',
|
||||
),
|
||||
'Monolog\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog',
|
||||
@@ -141,6 +150,14 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container',
|
||||
),
|
||||
'Grasmash\\YamlExpander\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/grasmash/yaml-expander/src',
|
||||
),
|
||||
'Grasmash\\Expander\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/grasmash/expander/src',
|
||||
),
|
||||
'Gettext\\Languages\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/gettext/languages/src',
|
||||
@@ -169,6 +186,10 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/consolidation/log/src',
|
||||
),
|
||||
'Consolidation\\Config\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/consolidation/config/src',
|
||||
),
|
||||
'Consolidation\\AnnotatedCommand\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/consolidation/annotated-command/src',
|
||||
@@ -193,9 +214,24 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/phpspec/prophecy/src',
|
||||
),
|
||||
'PHPDocsMD' =>
|
||||
'PEAR' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/victorjonsson/markdowndocs/src',
|
||||
0 => __DIR__ . '/..' . '/pear/pear_exception',
|
||||
),
|
||||
),
|
||||
'N' =>
|
||||
array (
|
||||
'Net' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/pear/net_smtp',
|
||||
1 => __DIR__ . '/..' . '/pear/net_socket',
|
||||
),
|
||||
),
|
||||
'M' =>
|
||||
array (
|
||||
'Mail' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/pear/mail',
|
||||
),
|
||||
),
|
||||
'D' =>
|
||||
@@ -204,186 +240,200 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/doctrine/lexer/lib',
|
||||
),
|
||||
'Dflydev\\DotAccessData' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/dflydev/dot-access-data/src',
|
||||
),
|
||||
),
|
||||
'C' =>
|
||||
array (
|
||||
'Console' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/pear/console_getopt',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
public static $fallbackDirsPsr0 = array (
|
||||
0 => __DIR__ . '/..' . '/pear/pear-core-minimal/src',
|
||||
);
|
||||
|
||||
public static $classMap = array (
|
||||
'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php',
|
||||
'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php',
|
||||
'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php',
|
||||
'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php',
|
||||
'PHPUnit_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
|
||||
'PHPUnit_Extensions_GroupTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php',
|
||||
'PHPUnit_Extensions_PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestCase.php',
|
||||
'PHPUnit_Extensions_PhptTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php',
|
||||
'PHPUnit_Extensions_RepeatedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/RepeatedTest.php',
|
||||
'PHPUnit_Extensions_TestDecorator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TestDecorator.php',
|
||||
'PHPUnit_Extensions_TicketListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TicketListener.php',
|
||||
'PHPUnit_Framework_Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
|
||||
'PHPUnit_Framework_AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
|
||||
'PHPUnit_Framework_BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
|
||||
'PHPUnit_Framework_CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
|
||||
'PHPUnit_Framework_Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint.php',
|
||||
'PHPUnit_Framework_Constraint_And' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/And.php',
|
||||
'PHPUnit_Framework_Constraint_ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
|
||||
'PHPUnit_Framework_Constraint_ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
|
||||
'PHPUnit_Framework_Constraint_Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
|
||||
'PHPUnit_Framework_Constraint_Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
|
||||
'PHPUnit_Framework_Constraint_ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
|
||||
'PHPUnit_Framework_Constraint_Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
|
||||
'PHPUnit_Framework_Constraint_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php',
|
||||
'PHPUnit_Framework_Constraint_FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
|
||||
'PHPUnit_Framework_Constraint_GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
|
||||
'PHPUnit_Framework_Constraint_IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
|
||||
'PHPUnit_Framework_Constraint_IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
|
||||
'PHPUnit_Framework_Constraint_IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
|
||||
'PHPUnit_Framework_Constraint_IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
|
||||
'PHPUnit_Framework_Constraint_IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
|
||||
'PHPUnit_Framework_Constraint_IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
|
||||
'PHPUnit_Framework_Constraint_IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
|
||||
'PHPUnit_Framework_Constraint_IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
|
||||
'PHPUnit_Framework_Constraint_IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
|
||||
'PHPUnit_Framework_Constraint_IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
|
||||
'PHPUnit_Framework_Constraint_IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
|
||||
'PHPUnit_Framework_Constraint_IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
|
||||
'PHPUnit_Framework_Constraint_IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
|
||||
'PHPUnit_Framework_Constraint_JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
|
||||
'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php',
|
||||
'PHPUnit_Framework_Constraint_LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
|
||||
'PHPUnit_Framework_Constraint_Not' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Not.php',
|
||||
'PHPUnit_Framework_Constraint_ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_Or' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Or.php',
|
||||
'PHPUnit_Framework_Constraint_PCREMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php',
|
||||
'PHPUnit_Framework_Constraint_SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
|
||||
'PHPUnit_Framework_Constraint_StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
|
||||
'PHPUnit_Framework_Constraint_StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
|
||||
'PHPUnit_Framework_Constraint_StringMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php',
|
||||
'PHPUnit_Framework_Constraint_StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
|
||||
'PHPUnit_Framework_Constraint_TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
|
||||
'PHPUnit_Framework_Constraint_TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
|
||||
'PHPUnit_Framework_Constraint_Xor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Xor.php',
|
||||
'PHPUnit_Framework_CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/PHPUnit_Framework_CoveredCodeNotExecutedException.php',
|
||||
'PHPUnit_Framework_Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error.php',
|
||||
'PHPUnit_Framework_Error_Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
|
||||
'PHPUnit_Framework_Error_Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
|
||||
'PHPUnit_Framework_Error_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
|
||||
'PHPUnit_Framework_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php',
|
||||
'PHPUnit_Framework_ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
|
||||
'PHPUnit_Framework_ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
|
||||
'PHPUnit_Framework_IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
|
||||
'PHPUnit_Framework_IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
|
||||
'PHPUnit_Framework_IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
|
||||
'PHPUnit_Framework_InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
|
||||
'PHPUnit_Framework_MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/PHPUnit_Framework_MissingCoversAnnotationException.php',
|
||||
'PHPUnit_Framework_MockObject_BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Namespace' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php',
|
||||
'PHPUnit_Framework_MockObject_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php',
|
||||
'PHPUnit_Framework_MockObject_Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php',
|
||||
'PHPUnit_Framework_MockObject_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation_Object' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation_Static' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php',
|
||||
'PHPUnit_Framework_MockObject_Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php',
|
||||
'PHPUnit_Framework_MockObject_MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php',
|
||||
'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php',
|
||||
'PHPUnit_Framework_MockObject_RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php',
|
||||
'PHPUnit_Framework_MockObject_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_Return' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnReference.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php',
|
||||
'PHPUnit_Framework_MockObject_Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php',
|
||||
'PHPUnit_Framework_OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php',
|
||||
'PHPUnit_Framework_RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php',
|
||||
'PHPUnit_Framework_RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
|
||||
'PHPUnit_Framework_SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
|
||||
'PHPUnit_Framework_SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
|
||||
'PHPUnit_Framework_SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
|
||||
'PHPUnit_Framework_SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
|
||||
'PHPUnit_Framework_SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
|
||||
'PHPUnit_Framework_SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php',
|
||||
'PHPUnit_Framework_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
|
||||
'PHPUnit_Framework_TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
|
||||
'PHPUnit_Framework_TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
|
||||
'PHPUnit_Framework_TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
|
||||
'PHPUnit_Framework_TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
|
||||
'PHPUnit_Framework_TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
||||
'PHPUnit_Framework_TestSuite_DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php',
|
||||
'PHPUnit_Framework_UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
|
||||
'PHPUnit_Framework_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php',
|
||||
'PHPUnit_Framework_WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
|
||||
'PHPUnit_Runner_BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
|
||||
'PHPUnit_Runner_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
|
||||
'PHPUnit_Runner_Filter_Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
|
||||
'PHPUnit_Runner_Filter_GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group.php',
|
||||
'PHPUnit_Runner_Filter_Group_Exclude' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php',
|
||||
'PHPUnit_Runner_Filter_Group_Include' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php',
|
||||
'PHPUnit_Runner_Filter_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Test.php',
|
||||
'PHPUnit_Runner_StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
|
||||
'PHPUnit_Runner_TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
|
||||
'PHPUnit_Runner_Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
|
||||
'PHPUnit_TextUI_Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
|
||||
'PHPUnit_TextUI_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
|
||||
'PHPUnit_TextUI_TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
||||
'PHPUnit_Util_Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
|
||||
'PHPUnit_Util_Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php',
|
||||
'PHPUnit_Util_ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
|
||||
'PHPUnit_Util_ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
||||
'PHPUnit_Util_Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php',
|
||||
'PHPUnit_Util_Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
|
||||
'PHPUnit_Util_Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
|
||||
'PHPUnit_Util_Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php',
|
||||
'PHPUnit_Util_GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
|
||||
'PHPUnit_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
|
||||
'PHPUnit_Util_Log_JSON' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JSON.php',
|
||||
'PHPUnit_Util_Log_JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
|
||||
'PHPUnit_Util_Log_TAP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TAP.php',
|
||||
'PHPUnit_Util_Log_TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
|
||||
'PHPUnit_Util_PHP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP.php',
|
||||
'PHPUnit_Util_PHP_Default' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Default.php',
|
||||
'PHPUnit_Util_PHP_Windows' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Windows.php',
|
||||
'PHPUnit_Util_Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
|
||||
'PHPUnit_Util_Regex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Regex.php',
|
||||
'PHPUnit_Util_String' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/String.php',
|
||||
'PHPUnit_Util_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
|
||||
'PHPUnit_Util_TestDox_NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter_HTML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter_Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/XML.php',
|
||||
'PHPUnit_Util_TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestSuiteIterator.php',
|
||||
'PHPUnit_Util_Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
|
||||
'PHPUnit_Util_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XML.php',
|
||||
'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
|
||||
'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
|
||||
'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
|
||||
'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
|
||||
'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
|
||||
'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php',
|
||||
'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
|
||||
'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
|
||||
'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
|
||||
'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php',
|
||||
'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
|
||||
'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
|
||||
'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
|
||||
'PHPUnit\\Framework\\Error\\Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
|
||||
'PHPUnit\\Framework\\Error\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Error.php',
|
||||
'PHPUnit\\Framework\\Error\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
|
||||
'PHPUnit\\Framework\\Error\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
|
||||
'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php',
|
||||
'PHPUnit\\Framework\\ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
|
||||
'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
|
||||
'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
|
||||
'PHPUnit\\Framework\\IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
|
||||
'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
|
||||
'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
|
||||
'PHPUnit\\Framework\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/BadMethodCallException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Identity.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/InvocationMocker.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Match.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/MethodNameMatch.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/NamespaceMatch.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/ParametersMatch.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Stub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/Exception.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Generator.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/Invocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/InvocationMocker.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/ObjectInvocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/StaticInvocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invokable.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/AnyInvokedCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/AnyParameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/ConsecutiveParameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/Invocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtIndex.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastOnce.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtMostCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedRecorder.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/MethodName.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/Parameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/StatelessInvocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/MockBuilder.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/ForwardCompatibility/MockObject.php',
|
||||
'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/RuntimeException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ConsecutiveCalls.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/Exception.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/MatcherCollection.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnArgument.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnCallback.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnReference.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnSelf.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnStub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnValueMap.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Verifiable.php',
|
||||
'PHPUnit\\Framework\\OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php',
|
||||
'PHPUnit\\Framework\\RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php',
|
||||
'PHPUnit\\Framework\\RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
|
||||
'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
|
||||
'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
|
||||
'PHPUnit\\Framework\\SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
|
||||
'PHPUnit\\Framework\\SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
|
||||
'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
|
||||
'PHPUnit\\Framework\\SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php',
|
||||
'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
|
||||
'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
|
||||
'PHPUnit\\Framework\\TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
|
||||
'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
|
||||
'PHPUnit\\Framework\\TestListenerDefaultImplementation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
|
||||
'PHPUnit\\Framework\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
|
||||
'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
||||
'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
|
||||
'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
|
||||
'PHPUnit\\Framework\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php',
|
||||
'PHPUnit\\Framework\\WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
|
||||
'PHPUnit\\Runner\\BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
|
||||
'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
|
||||
'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
|
||||
'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
|
||||
'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
|
||||
'PHPUnit\\Runner\\StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
|
||||
'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
|
||||
'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
|
||||
'PHPUnit\\TextUI\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
|
||||
'PHPUnit\\TextUI\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
|
||||
'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
||||
'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
|
||||
'PHPUnit\\Util\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php',
|
||||
'PHPUnit\\Util\\ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
|
||||
'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
||||
'PHPUnit\\Util\\Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php',
|
||||
'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
|
||||
'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
|
||||
'PHPUnit\\Util\\Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php',
|
||||
'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
|
||||
'PHPUnit\\Util\\InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
|
||||
'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php',
|
||||
'PHPUnit\\Util\\Log\\JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
|
||||
'PHPUnit\\Util\\Log\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
|
||||
'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
|
||||
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
||||
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
||||
'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
|
||||
'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php',
|
||||
'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
|
||||
'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
|
||||
'PHPUnit\\Util\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\TextResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
|
||||
'PHPUnit\\Util\\TextTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
|
||||
'PHPUnit\\Util\\Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
|
||||
'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XML.php',
|
||||
'PHPUnit\\Util\\XmlTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
|
||||
'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/MockObject.php',
|
||||
'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php',
|
||||
'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
@@ -513,6 +563,7 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
@@ -583,7 +634,72 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'Robo\\composer\\ScriptHandler' => __DIR__ . '/..' . '/consolidation/robo/scripts/composer/ScriptHandler.php',
|
||||
'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php',
|
||||
'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php',
|
||||
'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php',
|
||||
'PharIo\\Manifest\\AuthorCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollection.php',
|
||||
'PharIo\\Manifest\\AuthorCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
|
||||
'PharIo\\Manifest\\AuthorElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElement.php',
|
||||
'PharIo\\Manifest\\AuthorElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
|
||||
'PharIo\\Manifest\\BundledComponent' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponent.php',
|
||||
'PharIo\\Manifest\\BundledComponentCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollection.php',
|
||||
'PharIo\\Manifest\\BundledComponentCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
|
||||
'PharIo\\Manifest\\BundlesElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/BundlesElement.php',
|
||||
'PharIo\\Manifest\\ComponentElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElement.php',
|
||||
'PharIo\\Manifest\\ComponentElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
|
||||
'PharIo\\Manifest\\ContainsElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ContainsElement.php',
|
||||
'PharIo\\Manifest\\CopyrightElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/CopyrightElement.php',
|
||||
'PharIo\\Manifest\\CopyrightInformation' => __DIR__ . '/..' . '/phar-io/manifest/src/values/CopyrightInformation.php',
|
||||
'PharIo\\Manifest\\ElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ElementCollection.php',
|
||||
'PharIo\\Manifest\\Email' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Email.php',
|
||||
'PharIo\\Manifest\\Exception' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/Exception.php',
|
||||
'PharIo\\Manifest\\ExtElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElement.php',
|
||||
'PharIo\\Manifest\\ExtElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElementCollection.php',
|
||||
'PharIo\\Manifest\\Extension' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Extension.php',
|
||||
'PharIo\\Manifest\\ExtensionElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtensionElement.php',
|
||||
'PharIo\\Manifest\\InvalidApplicationNameException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
|
||||
'PharIo\\Manifest\\InvalidEmailException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
|
||||
'PharIo\\Manifest\\InvalidUrlException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
|
||||
'PharIo\\Manifest\\Library' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Library.php',
|
||||
'PharIo\\Manifest\\License' => __DIR__ . '/..' . '/phar-io/manifest/src/values/License.php',
|
||||
'PharIo\\Manifest\\LicenseElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/LicenseElement.php',
|
||||
'PharIo\\Manifest\\Manifest' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Manifest.php',
|
||||
'PharIo\\Manifest\\ManifestDocument' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocument.php',
|
||||
'PharIo\\Manifest\\ManifestDocumentException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
|
||||
'PharIo\\Manifest\\ManifestDocumentLoadingException' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php',
|
||||
'PharIo\\Manifest\\ManifestDocumentMapper' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestDocumentMapper.php',
|
||||
'PharIo\\Manifest\\ManifestDocumentMapperException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
|
||||
'PharIo\\Manifest\\ManifestElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestElement.php',
|
||||
'PharIo\\Manifest\\ManifestElementException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
|
||||
'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php',
|
||||
'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
|
||||
'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php',
|
||||
'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php',
|
||||
'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
|
||||
'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
|
||||
'PharIo\\Manifest\\Requirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Requirement.php',
|
||||
'PharIo\\Manifest\\RequirementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollection.php',
|
||||
'PharIo\\Manifest\\RequirementCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
|
||||
'PharIo\\Manifest\\RequiresElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/RequiresElement.php',
|
||||
'PharIo\\Manifest\\Type' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Type.php',
|
||||
'PharIo\\Manifest\\Url' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Url.php',
|
||||
'PharIo\\Version\\AbstractVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/AbstractVersionConstraint.php',
|
||||
'PharIo\\Version\\AndVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/AndVersionConstraintGroup.php',
|
||||
'PharIo\\Version\\AnyVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/AnyVersionConstraint.php',
|
||||
'PharIo\\Version\\ExactVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/ExactVersionConstraint.php',
|
||||
'PharIo\\Version\\Exception' => __DIR__ . '/..' . '/phar-io/version/src/Exception.php',
|
||||
'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php',
|
||||
'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/InvalidVersionException.php',
|
||||
'PharIo\\Version\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/OrVersionConstraintGroup.php',
|
||||
'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php',
|
||||
'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php',
|
||||
'PharIo\\Version\\SpecificMajorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/SpecificMajorVersionConstraint.php',
|
||||
'PharIo\\Version\\UnsupportedVersionConstraintException' => __DIR__ . '/..' . '/phar-io/version/src/UnsupportedVersionConstraintException.php',
|
||||
'PharIo\\Version\\Version' => __DIR__ . '/..' . '/phar-io/version/src/Version.php',
|
||||
'PharIo\\Version\\VersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraint.php',
|
||||
'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php',
|
||||
'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
|
||||
'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
|
||||
'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php',
|
||||
'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php',
|
||||
@@ -608,6 +724,7 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
|
||||
@@ -616,12 +733,14 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
|
||||
'SebastianBergmann\\CodeCoverage\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
|
||||
'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util.php',
|
||||
'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php',
|
||||
'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
|
||||
'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php',
|
||||
'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php',
|
||||
@@ -641,39 +760,58 @@ class ComposerStaticInita01cedac3fb3abb6b395843685a2b9da
|
||||
'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
|
||||
'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
|
||||
'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
|
||||
'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php',
|
||||
'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
|
||||
'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
|
||||
'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
|
||||
'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
|
||||
'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
|
||||
'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
|
||||
'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
|
||||
'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
|
||||
'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
|
||||
'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
|
||||
'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php',
|
||||
'SebastianBergmann\\Environment\\OperatingSystem' => __DIR__ . '/..' . '/sebastian/environment/src/OperatingSystem.php',
|
||||
'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php',
|
||||
'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php',
|
||||
'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php',
|
||||
'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php',
|
||||
'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/Exception.php',
|
||||
'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/Exception.php',
|
||||
'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php',
|
||||
'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/RuntimeException.php',
|
||||
'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php',
|
||||
'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php',
|
||||
'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php',
|
||||
'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php',
|
||||
'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
|
||||
'SebastianBergmann\\ObjectReflector\\Exception' => __DIR__ . '/..' . '/sebastian/object-reflector/src/Exception.php',
|
||||
'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-reflector/src/InvalidArgumentException.php',
|
||||
'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php',
|
||||
'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php',
|
||||
'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php',
|
||||
'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php',
|
||||
'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php',
|
||||
'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
|
||||
'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php',
|
||||
'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php',
|
||||
'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php',
|
||||
'TheSeer\\Tokenizer\\NamespaceUriException' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUriException.php',
|
||||
'TheSeer\\Tokenizer\\Token' => __DIR__ . '/..' . '/theseer/tokenizer/src/Token.php',
|
||||
'TheSeer\\Tokenizer\\TokenCollection' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollection.php',
|
||||
'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php',
|
||||
'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php',
|
||||
'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php',
|
||||
);
|
||||
|
||||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInita01cedac3fb3abb6b395843685a2b9da::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInita01cedac3fb3abb6b395843685a2b9da::$prefixDirsPsr4;
|
||||
$loader->fallbackDirsPsr4 = ComposerStaticInita01cedac3fb3abb6b395843685a2b9da::$fallbackDirsPsr4;
|
||||
$loader->prefixesPsr0 = ComposerStaticInita01cedac3fb3abb6b395843685a2b9da::$prefixesPsr0;
|
||||
$loader->classMap = ComposerStaticInita01cedac3fb3abb6b395843685a2b9da::$classMap;
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit6d4a28cd96a5bc5d5b97781c062572d9::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit6d4a28cd96a5bc5d5b97781c062572d9::$prefixDirsPsr4;
|
||||
$loader->fallbackDirsPsr4 = ComposerStaticInit6d4a28cd96a5bc5d5b97781c062572d9::$fallbackDirsPsr4;
|
||||
$loader->prefixesPsr0 = ComposerStaticInit6d4a28cd96a5bc5d5b97781c062572d9::$prefixesPsr0;
|
||||
$loader->fallbackDirsPsr0 = ComposerStaticInit6d4a28cd96a5bc5d5b97781c062572d9::$fallbackDirsPsr0;
|
||||
$loader->classMap = ComposerStaticInit6d4a28cd96a5bc5d5b97781c062572d9::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
|
||||
15
lib/composer/vendor/composer/include_paths.php
vendored
Normal file
15
lib/composer/vendor/composer/include_paths.php
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
// include_paths.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
$vendorDir . '/pear/console_getopt',
|
||||
$vendorDir . '/pear/net_smtp',
|
||||
$vendorDir . '/pear/net_socket',
|
||||
$vendorDir . '/pear/pear-core-minimal/src',
|
||||
$vendorDir . '/pear/pear_exception',
|
||||
$vendorDir . '/pear/mail',
|
||||
);
|
||||
5182
lib/composer/vendor/composer/installed.json
vendored
5182
lib/composer/vendor/composer/installed.json
vendored
File diff suppressed because it is too large
Load Diff
@@ -4,16 +4,23 @@ branches:
|
||||
# Only test the master branch and SemVer tags.
|
||||
only:
|
||||
- master
|
||||
- /^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+.*$/
|
||||
- '/^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+.*$/'
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- php: 7.0
|
||||
env: dependencies=highest
|
||||
- php: 5.6
|
||||
- php: 5.5
|
||||
- php: 5.4
|
||||
env: dependencies=lowest
|
||||
-
|
||||
php: 7.1
|
||||
env: 'HIGHEST_LOWEST="update" STABILITY="RC"'
|
||||
-
|
||||
php: 7.0.11
|
||||
env: DO_POST_BUILD_ACTIONS=1
|
||||
-
|
||||
php: 5.6
|
||||
-
|
||||
php: 5.5
|
||||
-
|
||||
php: 5.4
|
||||
env: 'HIGHEST_LOWEST="update --prefer-lowest"'
|
||||
|
||||
sudo: false
|
||||
|
||||
@@ -22,13 +29,71 @@ cache:
|
||||
- $HOME/.composer/cache
|
||||
|
||||
before_script:
|
||||
- if [ -z "$dependencies" ]; then composer install --prefer-dist; fi;
|
||||
- if [ "$dependencies" = "lowest" ]; then composer update --prefer-dist --prefer-lowest -n; fi;
|
||||
- if [ "$dependencies" = "highest" ]; then composer update --prefer-dist -n; fi;
|
||||
# If running a highest/lowest dependencies test, get rid of composer.lock
|
||||
- |
|
||||
if [ -n "$HIGHEST_LOWEST" ] ; then
|
||||
rm composer.lock
|
||||
composer config --unset platform.php
|
||||
composer config minimum-stability ${STABILITY-stable}
|
||||
fi
|
||||
- 'composer -n ${HIGHEST_LOWEST-install} --prefer-dist'
|
||||
- composer why symfony/console
|
||||
# Print out all of the installed packages in alphabetical order, with versions
|
||||
- composer licenses
|
||||
|
||||
script:
|
||||
- vendor/bin/phpunit
|
||||
- vendor/bin/phpcs --standard=PSR2 -n src
|
||||
- 'vendor/bin/phpcs --standard=PSR2 -n src'
|
||||
|
||||
after_success:
|
||||
- travis_retry php vendor/bin/coveralls -v
|
||||
- 'travis_retry php vendor/bin/coveralls -v'
|
||||
- |
|
||||
# Only do post-build actions in one environment, and only if there is a GITHUB token.
|
||||
if [ -z "$DO_POST_BUILD_ACTIONS" ] ; then
|
||||
return
|
||||
fi
|
||||
if [ -z "$GITHUB_TOKEN" ]; then
|
||||
echo "No GITHUB_TOKEN defined; exiting."
|
||||
return
|
||||
fi
|
||||
###
|
||||
# Run composer lock update on cron jobs.
|
||||
# See: https://github.com/danielbachhuber/composer-lock-updater
|
||||
###
|
||||
if [ "$TRAVIS_EVENT_TYPE" != "cron" ] ; then
|
||||
echo "Not a cron job; exiting."
|
||||
return
|
||||
fi
|
||||
###
|
||||
# Only run on one job of a master branch build
|
||||
###
|
||||
if [ "master" != "$TRAVIS_BRANCH" ] ; then
|
||||
echo "composer.lock update only runs on the master branch."
|
||||
return
|
||||
fi
|
||||
###
|
||||
# Install composer-lock-updater
|
||||
###
|
||||
export PATH="$HOME/.composer/vendor/bin:$PATH"
|
||||
composer global require danielbachhuber/composer-lock-updater
|
||||
###
|
||||
# Optional: install Sensio Labs security checker to include security advisories in PR comments
|
||||
###
|
||||
mkdir -p $HOME/bin
|
||||
wget -O $HOME/bin/security-checker.phar http://get.sensiolabs.org/security-checker.phar
|
||||
chmod +x $HOME/bin/security-checker.phar
|
||||
export PATH="$HOME/bin:$PATH"
|
||||
###
|
||||
# Install hub for creating GitHub pull requests
|
||||
###
|
||||
wget -O hub.tgz https://github.com/github/hub/releases/download/v2.2.9/hub-linux-amd64-2.2.9.tgz
|
||||
tar -zxvf hub.tgz
|
||||
export PATH=$PATH:$PWD/hub-linux-amd64-2.2.9/bin/
|
||||
###
|
||||
# Run composer-lock-updater
|
||||
###
|
||||
clu
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,105 @@
|
||||
# Change Log
|
||||
|
||||
### 2.8.2 - 29 Nov 2017
|
||||
|
||||
### 2.0.1 ~ 2.0.3 - 14 November 2016
|
||||
- Allow Symfony 4 components.
|
||||
|
||||
### 2.8.1 - 16 Oct 2017
|
||||
|
||||
- Add hook methods to allow Symfony command events to be added directly to the hook manager, givig better control of hook order. (#131)
|
||||
|
||||
### 2.8.0 - 13 Oct 2017
|
||||
|
||||
- Remove phpdocumentor/reflection-docblock in favor of using a bespoke parser (#130)
|
||||
|
||||
### 2.7.0 - 18 Sept 2017
|
||||
|
||||
- Add support for options with a default value of 'true' (#119)
|
||||
- BUGFIX: Improve handling of options with optional values, which previously was not working correctly. (#118)
|
||||
|
||||
### 2.6.1 - 18 Sep 2017
|
||||
|
||||
- Reverts to contents of the 2.4.13 release.
|
||||
|
||||
### 2.5.0 & 2.5.1 - 17 Sep 2017
|
||||
|
||||
- BACKED OUT. These releases accidentally introduced breaking changes.
|
||||
|
||||
### 2.4.13 - 28 Aug 2017
|
||||
|
||||
- Add a followLinks() method (#108)
|
||||
|
||||
### 2.4.12 - 24 Aug 2017
|
||||
|
||||
- BUGFIX: Allow annotated commands to directly use InputInterface and OutputInterface (#106)
|
||||
|
||||
### 2.4.11 - 27 July 2017
|
||||
|
||||
- Back out #102: do not change behavior of word wrap based on STDOUT redirection.
|
||||
|
||||
### 2.4.10 - 21 July 2017
|
||||
|
||||
- Add a method CommandProcessor::setPassExceptions() to allow applicationsto prevent the command processor from catching exceptions thrown by command methods and hooks. (#103)
|
||||
|
||||
### 2.4.9 - 20 Jul 2017
|
||||
|
||||
- Automatically disable wordwrap when the terminal is not connected to STDOUT (#102)
|
||||
|
||||
### 2.4.8 - 3 Apr 2017
|
||||
|
||||
- Allow multiple annotations with the same key. These are returned as a csv, or, alternately, can be accessed as an array via the new accessor.
|
||||
- Unprotect two methods for benefit of Drush help. (#99)
|
||||
- BUGFIX: Remove symfony/console pin (#100)
|
||||
|
||||
### 2.4.7 & 2.4.6 - 17 Mar 2017
|
||||
|
||||
- Avoid wrapping help text (#93)
|
||||
- Pin symfony/console to version < 3.2.5 (#94)
|
||||
- Add getExampleUsages() to AnnotatedCommand. (#92)
|
||||
|
||||
### 2.4.5 - 28 Feb 2017
|
||||
|
||||
- Ensure that placeholder entries are written into the commandfile cache. (#86)
|
||||
|
||||
### 2.4.4 - 27 Feb 2017
|
||||
|
||||
- BUGFIX: Avoid rewriting the command cache unless something has changed.
|
||||
- BUGFIX: Ensure that the default value of options are correctly cached.
|
||||
|
||||
### 2.4.2 - 24 Feb 2017
|
||||
|
||||
- Add SimpleCacheInterface as a documentation interface (not enforced).
|
||||
|
||||
### 2.4.1 - 20 Feb 2017
|
||||
|
||||
- Support array options: multiple options on the commandline may be passed in to options array as an array of values.
|
||||
- Add php 7.1 to the test matrix.
|
||||
|
||||
### 2.4.0 - 3 Feb 2017
|
||||
|
||||
- Automatically rebuild cached commandfile data when commandfile changes.
|
||||
- Provide path to command file in AnnotationData objects.
|
||||
- Bugfix: Add dynamic options when user runs '--help my:command' (previously, only 'help my:command' worked).
|
||||
- Bugfix: Include description of last parameter in help (was omitted if no options present)
|
||||
- Add Windows testing with Appveyor
|
||||
|
||||
|
||||
### 2.3.0 - 19 Jan 2017
|
||||
|
||||
- Add a command info cache to improve performance of applications with many commands
|
||||
- Bugfix: Allow trailing backslashes in namespaces in CommandFileDiscovery
|
||||
- Bugfix: Rename @topic to @topics
|
||||
|
||||
|
||||
### 2.2.0 - 23 November 2016
|
||||
|
||||
- Support custom events
|
||||
- Add xml and json output for replacement help command. Text / html format for replacement help command not available yet.
|
||||
|
||||
|
||||
### 2.1.0 - 14 November 2016
|
||||
|
||||
- Add support for output formatter wordwrapping
|
||||
- Fix version requirement for output-formatters in composer.json
|
||||
- Use output-formatters ~3
|
||||
- Move php_codesniffer back to require-dev (moved to require by mistake)
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
|
||||
Initialize Symfony Console commands from annotated command class methods.
|
||||
|
||||
[](https://travis-ci.org/consolidation/annotated-command) [](https://scrutinizer-ci.com/g/consolidation/annotated-command/?branch=master) [](https://coveralls.io/github/consolidation/annotated-command?branch=master) [](https://packagist.org/packages/consolidation/annotated-command)
|
||||
[](https://travis-ci.org/consolidation/annotated-command)
|
||||
[](https://ci.appveyor.com/project/greg-1-anderson/annotated-command)
|
||||
[](https://scrutinizer-ci.com/g/consolidation/annotated-command/?branch=master)
|
||||
[](https://coveralls.io/github/consolidation/annotated-command?branch=master)
|
||||
[](https://packagist.org/packages/consolidation/annotated-command)
|
||||
|
||||
## Component Status
|
||||
|
||||
@@ -47,6 +51,7 @@ class MyCommandClass
|
||||
* @command my:cat
|
||||
* @param integer $one The first parameter.
|
||||
* @param integer $two The other parameter.
|
||||
* @option arr An option that takes multiple values.
|
||||
* @option flip Whether or not the second parameter should come first in the result.
|
||||
* @aliases c
|
||||
* @usage bet alpha --flip
|
||||
@@ -61,30 +66,92 @@ class MyCommandClass
|
||||
}
|
||||
}
|
||||
```
|
||||
## Option Default Values
|
||||
|
||||
The `$options` array must be an associative array whose key is the name of the option, and whose value is one of:
|
||||
|
||||
- The boolean value `false`, which indicates that the option takes no value.
|
||||
- A **string** containing the default value for options that may be provided a value, but are not required to.
|
||||
- The special value InputOption::VALUE_REQUIRED, which indicates that the user must provide a value for the option whenever it is used.
|
||||
- The special value InputOption::VALUE_OPTIONAL, which produces the following behavior:
|
||||
- If the option is given a value (e.g. `--foo=bar`), then the value will be a string.
|
||||
- If the option exists on the commandline, but has no value (e.g. `--foo`), then the value will be `true`.
|
||||
- If the option does not exist on the commandline at all, then the value will be `null`.
|
||||
- If the user explicitly sets `--foo=0`, then the value will be converted to `false`.
|
||||
- LIMITATION: If any Input object other than ArgvInput (or a subclass thereof) is used, then the value will be `null` for both the no-value case (`--foo`) and the no-option case. When using a StringInput, use `--foo=1` instead of `--foo` to avoid this problem.
|
||||
- The special value `true` produces the following behavior:
|
||||
- If the option is given a value (e.g. `--foo=bar`), then the value will be a string.
|
||||
- If the option exists on the commandline, but has no value (e.g. `--foo`), then the value will be `true`.
|
||||
- If the option does not exist on the commandline at all, then the value will also be `true`.
|
||||
- If the user explicitly sets `--foo=0`, then the value will be converted to `false`.
|
||||
- If the user adds `--no-foo` on the commandline, then the value of `foo` will be `false`.
|
||||
- An empty array, which indicates that the option may appear multiple times on the command line.
|
||||
|
||||
No other values should be used for the default value. For example, `$options = ['a' => 1]` is **incorrect**; instead, use `$options = ['a' => '1']`.
|
||||
|
||||
Default values for options may also be provided via the `@default` annotation. See hook alter, below.
|
||||
|
||||
## Hooks
|
||||
|
||||
Commandfiles may provide hooks in addition to commands. A commandfile method that contains a @hook annotation is registered as a hook instead of a command. The format of the hook annotation is:
|
||||
```
|
||||
@hook type commandname|annotation
|
||||
@hook type target
|
||||
```
|
||||
The commandname may be the command's primary name (e.g. `my:command`), it's method name (e.g. myCommand) or any of its aliases.
|
||||
The hook **type** determines when during the command lifecycle this hook will be called. The available hook types are described in detail below.
|
||||
|
||||
If an annotation is given instead, then this hook function will run for all commands with the specified annotation.
|
||||
The hook **target** specifies which command or commands the hook will be attached to. There are several different ways to specify the hook target.
|
||||
|
||||
There are ten types of hooks supported:
|
||||
- The command's primary name (e.g. `my:command`) or the command's method name (e.g. myCommand) will attach the hook to only that command.
|
||||
- An annotation (e.g. `@foo`) will attach the hook to any command that is annotated with the given label.
|
||||
- If the target is omitted, then the hook will be attached to every command defined in the same class as the hook implementation.
|
||||
|
||||
- Command Event (Symfony)
|
||||
- Option
|
||||
- Initialize (Symfony)
|
||||
- Interact (Symfony)
|
||||
- Validate
|
||||
- Command
|
||||
- Process
|
||||
- Alter
|
||||
- Status
|
||||
- Extract
|
||||
There are ten types of hooks in the command processing request flow:
|
||||
|
||||
Most of these also have "pre" and "post" varieties, to give more flexibility vis-a-vis hook ordering (and for consistency). Note that many validate, process and alter hooks may run, but the first status or extract hook that successfully returns a result will halt processing of further hooks of the same type.
|
||||
- [Command Event](#command-event-hook) (Symfony)
|
||||
- @pre-command-event
|
||||
- @command-event
|
||||
- @post-command-event
|
||||
- [Option](#option-event-hook)
|
||||
- @pre-option
|
||||
- @option
|
||||
- @post-option
|
||||
- [Initialize](#initialize-hook) (Symfony)
|
||||
- @pre-init
|
||||
- @init
|
||||
- @post-init
|
||||
- [Interact](#interact-hook) (Symfony)
|
||||
- @pre-interact
|
||||
- @interact
|
||||
- @post-interact
|
||||
- [Validate](#validate-hook)
|
||||
- @pre-validate
|
||||
- @validate
|
||||
- @post-validate
|
||||
- [Command](#command-hook)
|
||||
- @pre-command
|
||||
- @command
|
||||
- @command-init
|
||||
- [Process](#process-hook)
|
||||
- @pre-process
|
||||
- @process
|
||||
- @post-process
|
||||
- [Alter](#alter-hook)
|
||||
- @pre-alter
|
||||
- @alter
|
||||
- @post-alter
|
||||
- [Status](#status-hook)
|
||||
- @status
|
||||
- [Extract](#extract-hook)
|
||||
- @extract
|
||||
|
||||
In addition to these, there are two more hooks available:
|
||||
|
||||
- [On-event](#on-event-hook)
|
||||
- @on-event
|
||||
- [Replace Command](#replace-command-hook)
|
||||
- @replace-command
|
||||
|
||||
The "pre" and "post" varieties of these hooks, where avalable, give more flexibility vis-a-vis hook ordering (and for consistency). Within one type of hook, the running order is undefined and not guaranteed. Note that many validate, process and alter hooks may run, but the first status or extract hook that successfully returns a result will halt processing of further hooks of the same type.
|
||||
|
||||
Each hook has an interface that defines its calling conventions; however, any callable may be used when registering a hook, which is convenient if versions of PHP prior to 7.0 (with no anonymous classes) need to be supported.
|
||||
|
||||
@@ -94,15 +161,70 @@ The command-event hook is called via the Symfony Console command event notificat
|
||||
|
||||
### Option Event Hook
|
||||
|
||||
The option event hook ([OptionHookInterface](src/Hooks/OptionHookInterface.php)) is called for a specific command, whenever it is executed, or its help command is called. Any additional options for the command may be added here by instantiating and returnng an InputOption array.
|
||||
The option event hook ([OptionHookInterface](src/Hooks/OptionHookInterface.php)) is called for a specific command, whenever it is executed, or its help command is called. Any additional options for the command may be added here by calling the `addOption` method of the provided `$command` object. Note that the option hook is only necessary for calculating dynamic options. Static options may be added via the @option annotation on any hook that uses them. See the [Alter Hook](https://github.com/consolidation/annotated-command#alter-hook) documentation below for an example.
|
||||
```
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
|
||||
/**
|
||||
* @hook option some:command
|
||||
*/
|
||||
public function additionalOption(Command $command, AnnotationData $annotationData)
|
||||
{
|
||||
$command->addOption(
|
||||
'dynamic',
|
||||
'',
|
||||
InputOption::VALUE_NONE,
|
||||
'Option added by @hook option some:command'
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
### Initialize Hook
|
||||
|
||||
The initialize hook ([InitializeHookInterface](src/Hooks/InitializeHookInterface.php)) runs prior to the interact hook. It may supply command arguments and options from a configuration file or other sources. It should never do any user interaction.
|
||||
|
||||
The [consolidation/config](https://github.com/consolidation/config) project (which is used in [Robo PHP](https://github.com/consolidation/robo)) uses `@hook init` to automatically inject values from `config.yml` configuration files for options that were not provided on the command line.
|
||||
```
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
|
||||
/**
|
||||
* @hook init some:command
|
||||
*/
|
||||
public function initSomeCommand(InputInterface $input, AnnotationData $annotationData)
|
||||
{
|
||||
$value = $input->getOption('some-option');
|
||||
if (!$value) {
|
||||
$input->setOption('some-option', $this->generateRandomOptionValue());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Interact Hook
|
||||
|
||||
The interact hook ([InteractorInterface](src/Hooks/InteractorInterface.php)) runs prior to argument and option validation. Required arguments and options not supplied on the command line may be provided during this phase by prompting the user. Note that the interact hook is not called if the --no-interaction flag is supplied, whereas the command-event hook and the inject-configuration hook are.
|
||||
The interact hook ([InteractorInterface](src/Hooks/InteractorInterface.php)) runs prior to argument and option validation. Required arguments and options not supplied on the command line may be provided during this phase by prompting the user. Note that the interact hook is not called if the --no-interaction flag is supplied, whereas the command-event hook and the init hook are.
|
||||
```
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||
|
||||
/**
|
||||
* @hook interact some:command
|
||||
*/
|
||||
public function interact(InputInterface $input, OutputInterface $output, AnnotationData $annotationData)
|
||||
{
|
||||
$io = new SymfonyStyle($input, $output);
|
||||
|
||||
// If the user did not specify a password, then prompt for one.
|
||||
$password = $input->getOption('password');
|
||||
if (empty($password)) {
|
||||
$password = $io->askHidden("Enter a password:", function ($value) { return $value; });
|
||||
$input->setOption('password', $password);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Validate Hook
|
||||
|
||||
@@ -114,24 +236,112 @@ The purpose of the validate hook ([ValidatorInterface](src/Hooks/ValidatorInterf
|
||||
- Return false. Message is empty, and status is 1. Deprecated.
|
||||
|
||||
The validate hook may change the arguments and options of the command by modifying the Input object in the provided CommandData parameter. Any number of validation hooks may run, but if any fails, then execution of the command stops.
|
||||
```
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
|
||||
/**
|
||||
* @hook validate some:command
|
||||
*/
|
||||
public function validatePassword(CommandData $commandData)
|
||||
{
|
||||
$input = $commandData->input();
|
||||
$password = $input->getOption('password');
|
||||
|
||||
if (strpbrk($password, '!;$`') === false) {
|
||||
throw new \Exception("Your password MUST contain at least one of the characters ! ; ` or $, for no rational reason whatsoever.");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Command Hook
|
||||
|
||||
The command hook is provided for semantic purposes. The pre-command and command hooks are equivalent to the post-validate hook, and should confirm to the interface ([ValidatorInterface](src/Hooks/ValidatorInterface.php)). All of the post-validate hooks will be called before the first pre-command hook is called. Similarly, the post-command hook is equivalent to the pre-process hook, and should implement the interface ([ProcessResultInterface](src/Hooks/ProcessResultInterface.php)).
|
||||
|
||||
The command callback itself (the method annotated @command) is called after the last command hook, and prior to the first post-command hook.
|
||||
```
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
|
||||
/**
|
||||
* @hook pre-command some:command
|
||||
*/
|
||||
public function preCommand(CommandData $commandData)
|
||||
{
|
||||
// Do something before some:command
|
||||
}
|
||||
|
||||
/**
|
||||
* @hook post-command some:command
|
||||
*/
|
||||
public function postCommand($result, CommandData $commandData)
|
||||
{
|
||||
// Do something after some:command
|
||||
}
|
||||
```
|
||||
|
||||
### Process Hook
|
||||
|
||||
The process hook ([ProcessResultInterface](src/Hooks/ProcessResultInterface.php)) is specifically designed to convert a series of processing instructions into a final result. An example of this is implemented in Robo; if a Robo command returns a TaskInterface, then a Robo process hook will execute the task and return the result. This allows a pre-process hook to alter the task, e.g. by adding more operations to a task collection.
|
||||
The process hook ([ProcessResultInterface](src/Hooks/ProcessResultInterface.php)) is specifically designed to convert a series of processing instructions into a final result. An example of this is implemented in Robo in the [CollectionProcessHook](https://github.com/consolidation/Robo/blob/master/src/Collection/CollectionProcessHook.php) class; if a Robo command returns a TaskInterface, then a Robo process hook will execute the task and return the result. This allows a pre-process hook to alter the task, e.g. by adding more operations to a task collection.
|
||||
|
||||
The process hook should not be used for other purposes.
|
||||
```
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
|
||||
/**
|
||||
* @hook process some:command
|
||||
*/
|
||||
public function process($result, CommandData $commandData)
|
||||
{
|
||||
if ($result instanceof MyInterimType) {
|
||||
$result = $this->convertInterimResult($result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Alter Hook
|
||||
|
||||
An alter hook ([AlterResultInterface](src/Hooks/AlterResultInterface.php)) changes the result object. Alter hooks should only operate on result objects of a type they explicitly recognize. They may return an object of the same type, or they may convert the object to some other type.
|
||||
|
||||
If something goes wrong, and the alter hooks wishes to force the command to fail, then it may either return a CommandError object, or throw an exception.
|
||||
```
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
|
||||
/**
|
||||
* Demonstrate an alter hook with an option
|
||||
*
|
||||
* @hook alter some:command
|
||||
* @option $alteration Alter the result of the command in some way.
|
||||
* @usage some:command --alteration
|
||||
*/
|
||||
public function alterSomeCommand($result, CommandData $commandData)
|
||||
{
|
||||
if ($commandData->input()->getOption('alteration')) {
|
||||
$result[] = $this->getOneMoreRow();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
```
|
||||
|
||||
If an option needs to be provided with a default value, that may be done via the `@default` annotation.
|
||||
|
||||
```
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
|
||||
/**
|
||||
* Demonstrate an alter hook with an option that has a default value
|
||||
*
|
||||
* @hook alter some:command
|
||||
* @option $name Give the result a name.
|
||||
* @default $name George
|
||||
* @usage some:command --name=George
|
||||
*/
|
||||
public function nameSomeCommand($result, CommandData $commandData)
|
||||
{
|
||||
$result['name'] = $commandData->input()->getOption('name')
|
||||
|
||||
return $result;
|
||||
}
|
||||
```
|
||||
|
||||
### Status Hook
|
||||
|
||||
@@ -145,6 +355,59 @@ The extract hook ([ExtractOutputInterface](src/Hooks/ExtractOutputInterface.php)
|
||||
|
||||
If no extract hook returns any data, then the result object itself is printed if it is a string; otherwise, no output is emitted (other than any produced by the command itself).
|
||||
|
||||
### On-Event hook
|
||||
|
||||
Commands can define their own custom events; to do so, they need only implement the CustomEventAwareInterface, and use the CustomEventAwareTrait. Event handlers for each custom event can then be defined using the on-event hook.
|
||||
|
||||
A handler using an on-event hook looks something like the following:
|
||||
```
|
||||
/**
|
||||
* @hook on-event custom-event
|
||||
*/
|
||||
public function handlerForCustomEvent(/* arbitrary parameters, as defined by custom-event */)
|
||||
{
|
||||
// do the needful, return what custom-event expects
|
||||
}
|
||||
```
|
||||
Then, to utilize this in a command:
|
||||
```
|
||||
class MyCommands implements CustomEventAwareInterface
|
||||
{
|
||||
use CustomEventAwareTrait;
|
||||
|
||||
/**
|
||||
* @command my-command
|
||||
*/
|
||||
public myCommand($options = [])
|
||||
{
|
||||
$handlers = $this->getCustomEventHandlers('custom-event');
|
||||
// iterate and call $handlers
|
||||
}
|
||||
}
|
||||
```
|
||||
It is up to the command that defines the custom event to declare what the expected parameters for the callback function should be, and what the return value is and how it should be used.
|
||||
|
||||
### Replace Command Hook
|
||||
|
||||
The replace-command ([ReplaceCommandHookInterface](src/Hooks/ReplaceCommandHookInterface.php)) hook permits you to replace a command's method with another method of your own.
|
||||
|
||||
For instance, if you'd like to replace the `foo:bar` command, you could utilize the following code:
|
||||
|
||||
```php
|
||||
<?php
|
||||
class MyReplaceCommandHook {
|
||||
|
||||
/**
|
||||
* @hook replace-command foo:bar
|
||||
*
|
||||
* Parameters must match original command method.
|
||||
*/
|
||||
public function myFooBarReplacement($value) {
|
||||
print "Hello $value!";
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Output
|
||||
|
||||
If a command method returns an integer, it is used as the command exit status code. If the command method returns a string, it is printed.
|
||||
@@ -159,11 +422,11 @@ The Annotated-Command project is completely agnostic to logging. If a command wi
|
||||
|
||||
If you want to use annotations, but still want access to the Symfony Command, e.g. to get a reference to the helpers in order to call some legacy code, you may create an ordinary Symfony Command that extends \Consolidation\AnnotatedCommand\AnnotatedCommand, which is a \Symfony\Component\Console\Command\Command. Omit the configure method, and place your annotations on the `execute()` method.
|
||||
|
||||
It is also possible to add InputInterface or OutputInterface parameters to any annotated method of a command file.
|
||||
It is also possible to add InputInterface and/or OutputInterface parameters to any annotated method of a command file (the parameters must go before command arguments).
|
||||
|
||||
## API Usage
|
||||
|
||||
If you would like to use Annotated Commands to build a commandline tool, it is recommended that you use [Robo as a framework](http://robo.li/framework.md), as it will set up all of the various command classes for you. If you would like to integrate Annotated Commands into some other framework, see the sections below.
|
||||
If you would like to use Annotated Commands to build a commandline tool, it is recommended that you use [Robo as a framework](http://robo.li/framework), as it will set up all of the various command classes for you. If you would like to integrate Annotated Commands into some other framework, see the sections below.
|
||||
|
||||
### Set up Command Factory and Instantiate Commands
|
||||
|
||||
|
||||
66
lib/composer/vendor/consolidation/annotated-command/appveyor.yml
vendored
Normal file
66
lib/composer/vendor/consolidation/annotated-command/appveyor.yml
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
build: false
|
||||
shallow_clone: true
|
||||
platform: 'x86'
|
||||
clone_folder: C:\projects\annotated-commands
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
## Cache composer bits
|
||||
cache:
|
||||
- '%LOCALAPPDATA%\Composer\files -> composer.lock'
|
||||
|
||||
init:
|
||||
#https://github.com/composer/composer/blob/master/appveyor.yml
|
||||
#- SET ANSICON=121x90 (121x90)
|
||||
|
||||
# Inspired by https://github.com/Codeception/base/blob/master/appveyor.yml and https://github.com/phpmd/phpmd/blob/master/appveyor.yml
|
||||
install:
|
||||
- cinst -y curl
|
||||
- SET PATH=C:\Program Files\curl;%PATH%
|
||||
#which is only needed by the test suite.
|
||||
- cinst -y which
|
||||
- SET PATH=C:\Program Files\which;%PATH%
|
||||
- git clone -q https://github.com/acquia/DevDesktopCommon.git #For tar, cksum, ...
|
||||
- SET PATH=%APPVEYOR_BUILD_FOLDER%/DevDesktopCommon/bintools-win/msys/bin;%PATH%
|
||||
- SET PATH=C:\Program Files\MySql\MySQL Server 5.7\bin\;%PATH%
|
||||
#Install PHP per https://blog.wyrihaximus.net/2016/11/running-php-unit-tests-on-windows-using-appveyor-and-chocolatey/
|
||||
- ps: appveyor-retry cinst --ignore-checksums -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $Env:php_ver_target | Select-Object -first 1) -replace '[php|]','')
|
||||
- cd c:\tools\php70
|
||||
- copy php.ini-production php.ini
|
||||
|
||||
- echo extension_dir=ext >> php.ini
|
||||
- echo extension=php_openssl.dll >> php.ini
|
||||
- echo date.timezone="UTC" >> php.ini
|
||||
- echo variables_order="EGPCS" >> php.ini #May be unneeded.
|
||||
- echo mbstring.http_input=pass >> php.ini
|
||||
- echo mbstring.http_output=pass >> php.ini
|
||||
- echo sendmail_path=nul >> php.ini
|
||||
- echo extension=php_mbstring.dll >> php.ini
|
||||
- echo extension=php_curl.dll >> php.ini
|
||||
- echo extension=php_pdo_mysql.dll >> php.ini
|
||||
- echo extension=php_pdo_pgsql.dll >> php.ini
|
||||
- echo extension=php_pdo_sqlite.dll >> php.ini
|
||||
- echo extension=php_pgsql.dll >> php.ini
|
||||
- echo extension=php_gd2.dll >> php.ini
|
||||
- SET PATH=C:\tools\php70;%PATH%
|
||||
#Install Composer
|
||||
- cd %APPVEYOR_BUILD_FOLDER%
|
||||
#- appveyor DownloadFile https://getcomposer.org/composer.phar
|
||||
- php -r "readfile('http://getcomposer.org/installer');" | php
|
||||
#Install dependencies via Composer
|
||||
- php composer.phar -q install --prefer-dist -n
|
||||
- SET PATH=%APPVEYOR_BUILD_FOLDER%;%APPVEYOR_BUILD_FOLDER%/vendor/bin;%PATH%
|
||||
#Create a sandbox for testing. Don't think we need this.
|
||||
- mkdir c:\test_temp
|
||||
|
||||
test_script:
|
||||
- phpunit
|
||||
- php composer.phar cs
|
||||
|
||||
# environment variables
|
||||
environment:
|
||||
global:
|
||||
SHELL_INTERACTIVE: true
|
||||
php_ver_target: 7.0
|
||||
|
||||
@@ -20,18 +20,25 @@
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
"consolidation/output-formatters": "^3.1.3",
|
||||
"psr/log": "~1",
|
||||
"symfony/console": "^2.8|~3",
|
||||
"symfony/event-dispatcher": "^2.5|~3",
|
||||
"symfony/finder": "^2.5|~3",
|
||||
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2"
|
||||
"consolidation/output-formatters": "^3.1.12",
|
||||
"psr/log": "^1",
|
||||
"symfony/console": "^2.8|^3|^4",
|
||||
"symfony/event-dispatcher": "^2.5|^3|^4",
|
||||
"symfony/finder": "^2.5|^3|^4"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "4.*",
|
||||
"satooshi/php-coveralls": "^1.0",
|
||||
"phpunit/phpunit": "^4.8",
|
||||
"satooshi/php-coveralls": "^1.0.2 | dev-master",
|
||||
"squizlabs/php_codesniffer": "^2.7"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
"preferred-install": "dist",
|
||||
"sort-packages": true,
|
||||
"platform": {
|
||||
"php": "5.6"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"cs": "phpcs --standard=PSR2 -n src",
|
||||
"cbf": "phpcbf --standard=PSR2 -n src",
|
||||
|
||||
1069
lib/composer/vendor/consolidation/annotated-command/composer.lock
generated
vendored
1069
lib/composer/vendor/consolidation/annotated-command/composer.lock
generated
vendored
File diff suppressed because it is too large
Load Diff
11
lib/composer/vendor/consolidation/annotated-command/infection.json.dist
vendored
Normal file
11
lib/composer/vendor/consolidation/annotated-command/infection.json.dist
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"timeout": 10,
|
||||
"source": {
|
||||
"directories": [
|
||||
"src"
|
||||
]
|
||||
},
|
||||
"logs": {
|
||||
"text": "infection-log.txt"
|
||||
}
|
||||
}
|
||||
@@ -3,8 +3,7 @@ namespace Consolidation\AnnotatedCommand;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfo;
|
||||
use Consolidation\OutputFormatters\FormatterManager;
|
||||
use Consolidation\OutputFormatters\Options\FormatterOptions;
|
||||
use Consolidation\AnnotatedCommand\Help\HelpDocumentAlter;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
@@ -26,11 +25,13 @@ use Symfony\Component\Console\Output\OutputInterface;
|
||||
*
|
||||
* @package Consolidation\AnnotatedCommand
|
||||
*/
|
||||
class AnnotatedCommand extends Command
|
||||
class AnnotatedCommand extends Command implements HelpDocumentAlter
|
||||
{
|
||||
protected $commandCallback;
|
||||
protected $commandProcessor;
|
||||
protected $annotationData;
|
||||
protected $examples = [];
|
||||
protected $topics = [];
|
||||
protected $usesInputInterface;
|
||||
protected $usesOutputInterface;
|
||||
protected $returnType;
|
||||
@@ -46,7 +47,7 @@ class AnnotatedCommand extends Command
|
||||
// AnnotatedCommand. Alternately, we break out a new subclass.
|
||||
// The command factory instantiates the subclass.
|
||||
if (get_class($this) != 'Consolidation\AnnotatedCommand\AnnotatedCommand') {
|
||||
$commandInfo = new CommandInfo($this, 'execute');
|
||||
$commandInfo = CommandInfo::create($this, 'execute');
|
||||
if (!isset($name)) {
|
||||
$name = $commandInfo->getName();
|
||||
}
|
||||
@@ -106,21 +107,114 @@ class AnnotatedCommand extends Command
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getTopics()
|
||||
{
|
||||
return $this->topics;
|
||||
}
|
||||
|
||||
public function setTopics($topics)
|
||||
{
|
||||
$this->topics = $topics;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setCommandInfo($commandInfo)
|
||||
{
|
||||
$this->setDescription($commandInfo->getDescription());
|
||||
$this->setHelp($commandInfo->getHelp());
|
||||
$this->setAliases($commandInfo->getAliases());
|
||||
$this->setAnnotationData($commandInfo->getAnnotations());
|
||||
$this->setTopics($commandInfo->getTopics());
|
||||
foreach ($commandInfo->getExampleUsages() as $usage => $description) {
|
||||
// Symfony Console does not support attaching a description to a usage
|
||||
$this->addUsage($usage);
|
||||
$this->addUsageOrExample($usage, $description);
|
||||
}
|
||||
$this->setCommandArguments($commandInfo);
|
||||
$this->setReturnType($commandInfo->getReturnType());
|
||||
// Hidden commands available since Symfony 3.2
|
||||
// http://symfony.com/doc/current/console/hide_commands.html
|
||||
if (method_exists($this, 'setHidden')) {
|
||||
$this->setHidden($commandInfo->getHidden());
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getExampleUsages()
|
||||
{
|
||||
return $this->examples;
|
||||
}
|
||||
|
||||
protected function addUsageOrExample($usage, $description)
|
||||
{
|
||||
$this->addUsage($usage);
|
||||
if (!empty($description)) {
|
||||
$this->examples[$usage] = $description;
|
||||
}
|
||||
}
|
||||
|
||||
public function helpAlter(\DomDocument $originalDom)
|
||||
{
|
||||
$dom = new \DOMDocument('1.0', 'UTF-8');
|
||||
$dom->appendChild($commandXML = $dom->createElement('command'));
|
||||
$commandXML->setAttribute('id', $this->getName());
|
||||
$commandXML->setAttribute('name', $this->getName());
|
||||
|
||||
// Get the original <command> element and its top-level elements.
|
||||
$originalCommandXML = $this->getSingleElementByTagName($dom, $originalDom, 'command');
|
||||
$originalUsagesXML = $this->getSingleElementByTagName($dom, $originalCommandXML, 'usages');
|
||||
$originalDescriptionXML = $this->getSingleElementByTagName($dom, $originalCommandXML, 'description');
|
||||
$originalHelpXML = $this->getSingleElementByTagName($dom, $originalCommandXML, 'help');
|
||||
$originalArgumentsXML = $this->getSingleElementByTagName($dom, $originalCommandXML, 'arguments');
|
||||
$originalOptionsXML = $this->getSingleElementByTagName($dom, $originalCommandXML, 'options');
|
||||
|
||||
// Keep only the first of the <usage> elements
|
||||
$newUsagesXML = $dom->createElement('usages');
|
||||
$firstUsageXML = $this->getSingleElementByTagName($dom, $originalUsagesXML, 'usage');
|
||||
$newUsagesXML->appendChild($firstUsageXML);
|
||||
|
||||
// Create our own <example> elements
|
||||
$newExamplesXML = $dom->createElement('examples');
|
||||
foreach ($this->examples as $usage => $description) {
|
||||
$newExamplesXML->appendChild($exampleXML = $dom->createElement('example'));
|
||||
$exampleXML->appendChild($usageXML = $dom->createElement('usage', $usage));
|
||||
$exampleXML->appendChild($descriptionXML = $dom->createElement('description', $description));
|
||||
}
|
||||
|
||||
// Create our own <alias> elements
|
||||
$newAliasesXML = $dom->createElement('aliases');
|
||||
foreach ($this->getAliases() as $alias) {
|
||||
$newAliasesXML->appendChild($dom->createElement('alias', $alias));
|
||||
}
|
||||
|
||||
// Create our own <topic> elements
|
||||
$newTopicsXML = $dom->createElement('topics');
|
||||
foreach ($this->getTopics() as $topic) {
|
||||
$newTopicsXML->appendChild($topicXML = $dom->createElement('topic', $topic));
|
||||
}
|
||||
|
||||
// Place the different elements into the <command> element in the desired order
|
||||
$commandXML->appendChild($newUsagesXML);
|
||||
$commandXML->appendChild($newExamplesXML);
|
||||
$commandXML->appendChild($originalDescriptionXML);
|
||||
$commandXML->appendChild($originalArgumentsXML);
|
||||
$commandXML->appendChild($originalOptionsXML);
|
||||
$commandXML->appendChild($originalHelpXML);
|
||||
$commandXML->appendChild($newAliasesXML);
|
||||
$commandXML->appendChild($newTopicsXML);
|
||||
|
||||
return $dom;
|
||||
}
|
||||
|
||||
protected function getSingleElementByTagName($dom, $parent, $tagName)
|
||||
{
|
||||
// There should always be exactly one '<command>' element.
|
||||
$elements = $parent->getElementsByTagName($tagName);
|
||||
$result = $elements->item(0);
|
||||
|
||||
$result = $dom->importNode($result, true);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function setCommandArguments($commandInfo)
|
||||
{
|
||||
$this->setUsesInputInterface($commandInfo);
|
||||
@@ -134,8 +228,11 @@ class AnnotatedCommand extends Command
|
||||
*/
|
||||
protected function checkUsesInputInterface($params)
|
||||
{
|
||||
/** @var \ReflectionParameter $firstParam */
|
||||
$firstParam = reset($params);
|
||||
return $firstParam instanceof InputInterface;
|
||||
return $firstParam && $firstParam->getClass() && $firstParam->getClass()->implementsInterface(
|
||||
'\\Symfony\\Component\\Console\\Input\\InputInterface'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -160,7 +257,11 @@ class AnnotatedCommand extends Command
|
||||
$index = $this->checkUsesInputInterface($params) ? 1 : 0;
|
||||
$this->usesOutputInterface =
|
||||
(count($params) > $index) &&
|
||||
($params[$index] instanceof OutputInterface);
|
||||
$params[$index]->getClass() &&
|
||||
$params[$index]->getClass()->implementsInterface(
|
||||
'\\Symfony\\Component\\Console\\Output\\OutputInterface'
|
||||
)
|
||||
;
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -264,7 +365,7 @@ class AnnotatedCommand extends Command
|
||||
$this->addOptions($inputOptions);
|
||||
foreach ($commandInfo->getExampleUsages() as $usage => $description) {
|
||||
if (!in_array($usage, $this->getUsages())) {
|
||||
$this->addUsage($usage);
|
||||
$this->addUsageOrExample($usage, $description);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -337,10 +438,15 @@ class AnnotatedCommand extends Command
|
||||
);
|
||||
|
||||
$commandData->setUseIOInterfaces(
|
||||
$this->usesOutputInterface,
|
||||
$this->usesInputInterface
|
||||
$this->usesInputInterface,
|
||||
$this->usesOutputInterface
|
||||
);
|
||||
|
||||
// Allow the commandData to cache the list of options with
|
||||
// special default values ('null' and 'true'), as these will
|
||||
// need special handling. @see CommandData::options().
|
||||
$commandData->cacheSpecialDefaults($this->getDefinition());
|
||||
|
||||
return $commandData;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Cache\CacheWrapper;
|
||||
use Consolidation\AnnotatedCommand\Cache\NullCache;
|
||||
use Consolidation\AnnotatedCommand\Cache\SimpleCacheInterface;
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\Options\AutomaticOptionsProviderInterface;
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfo;
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfoDeserializer;
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfoSerializer;
|
||||
use Consolidation\OutputFormatters\Options\FormatterOptions;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
@@ -27,7 +32,6 @@ class AnnotatedCommandFactory implements AutomaticOptionsProviderInterface
|
||||
protected $listeners = [];
|
||||
|
||||
/** var AutomaticOptionsProvider[] */
|
||||
|
||||
protected $automaticOptionsProviderList = [];
|
||||
|
||||
/** var boolean */
|
||||
@@ -36,8 +40,12 @@ class AnnotatedCommandFactory implements AutomaticOptionsProviderInterface
|
||||
/** var CommandInfoAltererInterface */
|
||||
protected $commandInfoAlterers = [];
|
||||
|
||||
/** var SimpleCacheInterface */
|
||||
protected $dataStore;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->dataStore = new NullCache();
|
||||
$this->commandProcessor = new CommandProcessor(new HookManager());
|
||||
$this->addAutomaticOptionProvider($this);
|
||||
}
|
||||
@@ -92,6 +100,17 @@ class AnnotatedCommandFactory implements AutomaticOptionsProviderInterface
|
||||
public function addListener(CommandCreationListenerInterface $listener)
|
||||
{
|
||||
$this->listeners[] = $listener;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a listener that's just a simple 'callable'.
|
||||
* @param callable $listener
|
||||
*/
|
||||
public function addListernerCallback(callable $listener)
|
||||
{
|
||||
$this->addListener(new CommandCreationListener($listener));
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -131,7 +150,95 @@ class AnnotatedCommandFactory implements AutomaticOptionsProviderInterface
|
||||
return $this->createCommandsFromClassInfo($commandInfoList, $commandFileInstance, $includeAllPublicMethods);
|
||||
}
|
||||
|
||||
public function getCommandInfoListFromClass($classNameOrInstance)
|
||||
public function getCommandInfoListFromClass($commandFileInstance)
|
||||
{
|
||||
$cachedCommandInfoList = $this->getCommandInfoListFromCache($commandFileInstance);
|
||||
$commandInfoList = $this->createCommandInfoListFromClass($commandFileInstance, $cachedCommandInfoList);
|
||||
if (!empty($commandInfoList)) {
|
||||
$cachedCommandInfoList = array_merge($commandInfoList, $cachedCommandInfoList);
|
||||
$this->storeCommandInfoListInCache($commandFileInstance, $cachedCommandInfoList);
|
||||
}
|
||||
return $cachedCommandInfoList;
|
||||
}
|
||||
|
||||
protected function storeCommandInfoListInCache($commandFileInstance, $commandInfoList)
|
||||
{
|
||||
if (!$this->hasDataStore()) {
|
||||
return;
|
||||
}
|
||||
$cache_data = [];
|
||||
$serializer = new CommandInfoSerializer();
|
||||
foreach ($commandInfoList as $i => $commandInfo) {
|
||||
$cache_data[$i] = $serializer->serialize($commandInfo);
|
||||
}
|
||||
$className = get_class($commandFileInstance);
|
||||
$this->getDataStore()->set($className, $cache_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the command info list from the cache
|
||||
*
|
||||
* @param mixed $commandFileInstance
|
||||
* @return array
|
||||
*/
|
||||
protected function getCommandInfoListFromCache($commandFileInstance)
|
||||
{
|
||||
$commandInfoList = [];
|
||||
$className = get_class($commandFileInstance);
|
||||
if (!$this->getDataStore()->has($className)) {
|
||||
return [];
|
||||
}
|
||||
$deserializer = new CommandInfoDeserializer();
|
||||
|
||||
$cache_data = $this->getDataStore()->get($className);
|
||||
foreach ($cache_data as $i => $data) {
|
||||
if (CommandInfoDeserializer::isValidSerializedData((array)$data)) {
|
||||
$commandInfoList[$i] = $deserializer->deserialize((array)$data);
|
||||
}
|
||||
}
|
||||
return $commandInfoList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to see if this factory has a cache datastore.
|
||||
* @return boolean
|
||||
*/
|
||||
public function hasDataStore()
|
||||
{
|
||||
return !($this->dataStore instanceof NullCache);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a cache datastore for this factory. Any object with 'set' and
|
||||
* 'get' methods is acceptable. The key is the classname being cached,
|
||||
* and the value is a nested associative array of strings.
|
||||
*
|
||||
* TODO: Typehint this to SimpleCacheInterface
|
||||
*
|
||||
* This is not done currently to allow clients to use a generic cache
|
||||
* store that does not itself depend on the annotated-command library.
|
||||
*
|
||||
* @param Mixed $dataStore
|
||||
* @return type
|
||||
*/
|
||||
public function setDataStore($dataStore)
|
||||
{
|
||||
if (!($dataStore instanceof SimpleCacheInterface)) {
|
||||
$dataStore = new CacheWrapper($dataStore);
|
||||
}
|
||||
$this->dataStore = $dataStore;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the data store attached to this factory.
|
||||
*/
|
||||
public function getDataStore()
|
||||
{
|
||||
return $this->dataStore;
|
||||
}
|
||||
|
||||
protected function createCommandInfoListFromClass($classNameOrInstance, $cachedCommandInfoList)
|
||||
{
|
||||
$commandInfoList = [];
|
||||
|
||||
@@ -139,13 +246,20 @@ class AnnotatedCommandFactory implements AutomaticOptionsProviderInterface
|
||||
// can never be commands.
|
||||
$commandMethodNames = array_filter(
|
||||
get_class_methods($classNameOrInstance) ?: [],
|
||||
function ($m) {
|
||||
return !preg_match('#^_#', $m);
|
||||
function ($m) use ($classNameOrInstance) {
|
||||
$reflectionMethod = new \ReflectionMethod($classNameOrInstance, $m);
|
||||
return !$reflectionMethod->isStatic() && !preg_match('#^_#', $m);
|
||||
}
|
||||
);
|
||||
|
||||
foreach ($commandMethodNames as $commandMethodName) {
|
||||
$commandInfoList[] = new CommandInfo($classNameOrInstance, $commandMethodName);
|
||||
if (!array_key_exists($commandMethodName, $cachedCommandInfoList)) {
|
||||
$commandInfo = CommandInfo::create($classNameOrInstance, $commandMethodName);
|
||||
if (!static::isCommandOrHookMethod($commandInfo, $this->getIncludeAllPublicMethods())) {
|
||||
$commandInfo->invalidate();
|
||||
}
|
||||
$commandInfoList[$commandMethodName] = $commandInfo;
|
||||
}
|
||||
}
|
||||
|
||||
return $commandInfoList;
|
||||
@@ -153,7 +267,7 @@ class AnnotatedCommandFactory implements AutomaticOptionsProviderInterface
|
||||
|
||||
public function createCommandInfo($classNameOrInstance, $commandMethodName)
|
||||
{
|
||||
return new CommandInfo($classNameOrInstance, $commandMethodName);
|
||||
return CommandInfo::create($classNameOrInstance, $commandMethodName);
|
||||
}
|
||||
|
||||
public function createCommandsFromClassInfo($commandInfoList, $commandFileInstance, $includeAllPublicMethods = null)
|
||||
@@ -173,28 +287,45 @@ class AnnotatedCommandFactory implements AutomaticOptionsProviderInterface
|
||||
|
||||
public function createSelectedCommandsFromClassInfo($commandInfoList, $commandFileInstance, callable $commandSelector)
|
||||
{
|
||||
$commandList = [];
|
||||
$commandInfoList = $this->filterCommandInfoList($commandInfoList, $commandSelector);
|
||||
return array_map(
|
||||
function ($commandInfo) use ($commandFileInstance) {
|
||||
return $this->createCommand($commandInfo, $commandFileInstance);
|
||||
},
|
||||
$commandInfoList
|
||||
);
|
||||
}
|
||||
|
||||
foreach ($commandInfoList as $commandInfo) {
|
||||
if ($commandSelector($commandInfo)) {
|
||||
$command = $this->createCommand($commandInfo, $commandFileInstance);
|
||||
$commandList[] = $command;
|
||||
}
|
||||
}
|
||||
protected function filterCommandInfoList($commandInfoList, callable $commandSelector)
|
||||
{
|
||||
return array_filter($commandInfoList, $commandSelector);
|
||||
}
|
||||
|
||||
return $commandList;
|
||||
public static function isCommandOrHookMethod($commandInfo, $includeAllPublicMethods)
|
||||
{
|
||||
return static::isHookMethod($commandInfo) || static::isCommandMethod($commandInfo, $includeAllPublicMethods);
|
||||
}
|
||||
|
||||
public static function isHookMethod($commandInfo)
|
||||
{
|
||||
return $commandInfo->hasAnnotation('hook');
|
||||
}
|
||||
|
||||
public static function isCommandMethod($commandInfo, $includeAllPublicMethods)
|
||||
{
|
||||
// Ignore everything labeled @hook
|
||||
if ($commandInfo->hasAnnotation('hook')) {
|
||||
if (static::isHookMethod($commandInfo)) {
|
||||
return false;
|
||||
}
|
||||
// Include everything labeled @command
|
||||
if ($commandInfo->hasAnnotation('command')) {
|
||||
return true;
|
||||
}
|
||||
// Skip anything that has a missing or invalid name.
|
||||
$commandName = $commandInfo->getName();
|
||||
if (empty($commandName) || preg_match('#[^a-zA-Z0-9:_-]#', $commandName)) {
|
||||
return false;
|
||||
}
|
||||
// Skip anything named like an accessor ('get' or 'set')
|
||||
if (preg_match('#^(get[A-Z]|set[A-Z])#', $commandInfo->getMethodName())) {
|
||||
return false;
|
||||
@@ -207,7 +338,7 @@ class AnnotatedCommandFactory implements AutomaticOptionsProviderInterface
|
||||
public function registerCommandHooksFromClassInfo($commandInfoList, $commandFileInstance)
|
||||
{
|
||||
foreach ($commandInfoList as $commandInfo) {
|
||||
if ($commandInfo->hasAnnotation('hook')) {
|
||||
if (static::isHookMethod($commandInfo)) {
|
||||
$this->registerCommandHook($commandInfo, $commandFileInstance);
|
||||
}
|
||||
}
|
||||
@@ -236,7 +367,7 @@ class AnnotatedCommandFactory implements AutomaticOptionsProviderInterface
|
||||
public function registerCommandHook(CommandInfo $commandInfo, $commandFileInstance)
|
||||
{
|
||||
// Ignore if the command info has no @hook
|
||||
if (!$commandInfo->hasAnnotation('hook')) {
|
||||
if (!static::isHookMethod($commandInfo)) {
|
||||
return;
|
||||
}
|
||||
$hookData = $commandInfo->getAnnotation('hook');
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Parser\Internal\CsvUtils;
|
||||
|
||||
class AnnotationData extends \ArrayObject
|
||||
{
|
||||
public function get($key, $default)
|
||||
public function get($key, $default = '')
|
||||
{
|
||||
return $this->has($key) ? $this[$key] : $default;
|
||||
return $this->has($key) ? CsvUtils::toString($this[$key]) : $default;
|
||||
}
|
||||
|
||||
public function getList($key, $default = [])
|
||||
{
|
||||
return $this->has($key) ? CsvUtils::toList($this[$key]) : $default;
|
||||
}
|
||||
|
||||
public function has($key)
|
||||
|
||||
49
lib/composer/vendor/consolidation/annotated-command/src/Cache/CacheWrapper.php
vendored
Normal file
49
lib/composer/vendor/consolidation/annotated-command/src/Cache/CacheWrapper.php
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Cache;
|
||||
|
||||
/**
|
||||
* Make a generic cache object conform to our expected interface.
|
||||
*/
|
||||
class CacheWrapper implements SimpleCacheInterface
|
||||
{
|
||||
protected $dataStore;
|
||||
|
||||
public function __construct($dataStore)
|
||||
{
|
||||
$this->dataStore = $dataStore;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for an entry from the cache
|
||||
* @param string $key
|
||||
* @return boolean
|
||||
*/
|
||||
public function has($key)
|
||||
{
|
||||
if (method_exists($this->dataStore, 'has')) {
|
||||
return $this->dataStore->has($key);
|
||||
}
|
||||
$test = $this->dataStore->get($key);
|
||||
return !empty($test);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an entry from the cache
|
||||
* @param string $key
|
||||
* @return array
|
||||
*/
|
||||
public function get($key)
|
||||
{
|
||||
return (array) $this->dataStore->get($key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store an entry in the cache
|
||||
* @param string $key
|
||||
* @param array $data
|
||||
*/
|
||||
public function set($key, $data)
|
||||
{
|
||||
$this->dataStore->set($key, $data);
|
||||
}
|
||||
}
|
||||
37
lib/composer/vendor/consolidation/annotated-command/src/Cache/NullCache.php
vendored
Normal file
37
lib/composer/vendor/consolidation/annotated-command/src/Cache/NullCache.php
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Cache;
|
||||
|
||||
/**
|
||||
* An empty cache that never stores or fetches any objects.
|
||||
*/
|
||||
class NullCache implements SimpleCacheInterface
|
||||
{
|
||||
/**
|
||||
* Test for an entry from the cache
|
||||
* @param string $key
|
||||
* @return boolean
|
||||
*/
|
||||
public function has($key)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an entry from the cache
|
||||
* @param string $key
|
||||
* @return array
|
||||
*/
|
||||
public function get($key)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Store an entry in the cache
|
||||
* @param string $key
|
||||
* @param array $data
|
||||
*/
|
||||
public function set($key, $data)
|
||||
{
|
||||
}
|
||||
}
|
||||
35
lib/composer/vendor/consolidation/annotated-command/src/Cache/SimpleCacheInterface.php
vendored
Normal file
35
lib/composer/vendor/consolidation/annotated-command/src/Cache/SimpleCacheInterface.php
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Cache;
|
||||
|
||||
/**
|
||||
* Documentation interface.
|
||||
*
|
||||
* Clients that use AnnotatedCommandFactory::setDataStore()
|
||||
* are encouraged to provide a data store that implements
|
||||
* this interface.
|
||||
*
|
||||
* This is not currently required to allow clients to use a generic cache
|
||||
* store that does not itself depend on the annotated-command library.
|
||||
* This might be required in a future version.
|
||||
*/
|
||||
interface SimpleCacheInterface
|
||||
{
|
||||
/**
|
||||
* Test for an entry from the cache
|
||||
* @param string $key
|
||||
* @return boolean
|
||||
*/
|
||||
public function has($key);
|
||||
/**
|
||||
* Get an entry from the cache
|
||||
* @param string $key
|
||||
* @return array
|
||||
*/
|
||||
public function get($key);
|
||||
/**
|
||||
* Store an entry in the cache
|
||||
* @param string $key
|
||||
* @param array $data
|
||||
*/
|
||||
public function set($key, $data);
|
||||
}
|
||||
25
lib/composer/vendor/consolidation/annotated-command/src/CommandCreationListener.php
vendored
Normal file
25
lib/composer/vendor/consolidation/annotated-command/src/CommandCreationListener.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand;
|
||||
|
||||
/**
|
||||
* Command cration listeners can be added to the annotation
|
||||
* command factory. These will be notified whenever a new
|
||||
* commandfile is provided to the factory. This is useful for
|
||||
* initializing new commandfile objects.
|
||||
*
|
||||
* @see AnnotatedCommandFactory::addListener()
|
||||
*/
|
||||
class CommandCreationListener implements CommandCreationListenerInterface
|
||||
{
|
||||
protected $listener;
|
||||
|
||||
public function __construct($listener)
|
||||
{
|
||||
$this->listener = $listener;
|
||||
}
|
||||
|
||||
public function notifyCommandFileAdded($command)
|
||||
{
|
||||
call_user_func($this->listener, $command);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand;
|
||||
|
||||
use Symfony\Component\Console\Input\ArgvInput;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
@@ -18,6 +19,8 @@ class CommandData
|
||||
protected $usesOutputInterface;
|
||||
/** var boolean */
|
||||
protected $includeOptionsInArgs;
|
||||
/** var array */
|
||||
protected $specialDefaults = [];
|
||||
|
||||
public function __construct(
|
||||
AnnotationData $annotationData,
|
||||
@@ -80,7 +83,83 @@ class CommandData
|
||||
|
||||
public function options()
|
||||
{
|
||||
return $this->input->getOptions();
|
||||
// We cannot tell the difference between '--foo' (an option without
|
||||
// a value) and the absence of '--foo' when the option has an optional
|
||||
// value, and the current vallue of the option is 'null' using only
|
||||
// the public methods of InputInterface. We'll try to figure out
|
||||
// which is which by other means here.
|
||||
$options = $this->getAdjustedOptions();
|
||||
|
||||
// Make two conversions here:
|
||||
// --foo=0 wil convert $value from '0' to 'false' for binary options.
|
||||
// --foo with $value of 'true' will be forced to 'false' if --no-foo exists.
|
||||
foreach ($options as $option => $value) {
|
||||
if ($this->shouldConvertOptionToFalse($options, $option, $value)) {
|
||||
$options[$option] = false;
|
||||
}
|
||||
}
|
||||
|
||||
return $options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use 'hasParameterOption()' to attempt to disambiguate option states.
|
||||
*/
|
||||
protected function getAdjustedOptions()
|
||||
{
|
||||
$options = $this->input->getOptions();
|
||||
|
||||
// If Input isn't an ArgvInput, then return the options as-is.
|
||||
if (!$this->input instanceof ArgvInput) {
|
||||
return $options;
|
||||
}
|
||||
|
||||
// If we have an ArgvInput, then we can determine if options
|
||||
// are missing from the command line. If the option value is
|
||||
// missing from $input, then we will keep the value `null`.
|
||||
// If it is present, but has no explicit value, then change it its
|
||||
// value to `true`.
|
||||
foreach ($options as $option => $value) {
|
||||
if (($value === null) && ($this->input->hasParameterOption("--$option"))) {
|
||||
$options[$option] = true;
|
||||
}
|
||||
}
|
||||
|
||||
return $options;
|
||||
}
|
||||
|
||||
protected function shouldConvertOptionToFalse($options, $option, $value)
|
||||
{
|
||||
// If the value is 'true' (e.g. the option is '--foo'), then convert
|
||||
// it to false if there is also an option '--no-foo'. n.b. if the
|
||||
// commandline has '--foo=bar' then $value will not be 'true', and
|
||||
// --no-foo will be ignored.
|
||||
if ($value === true) {
|
||||
// Check if the --no-* option exists. Note that none of the other
|
||||
// alteration apply in the $value == true case, so we can exit early here.
|
||||
$negation_key = 'no-' . $option;
|
||||
return array_key_exists($negation_key, $options) && $options[$negation_key];
|
||||
}
|
||||
|
||||
// If the option is '--foo=0', convert the '0' to 'false' when appropriate.
|
||||
if ($value !== '0') {
|
||||
return false;
|
||||
}
|
||||
|
||||
// The '--foo=0' convertion is only applicable when the default value
|
||||
// is not in the special defaults list. i.e. you get a literal '0'
|
||||
// when your default is a string.
|
||||
return in_array($option, $this->specialDefaults);
|
||||
}
|
||||
|
||||
public function cacheSpecialDefaults($definition)
|
||||
{
|
||||
foreach ($definition->getOptions() as $option => $inputOption) {
|
||||
$defaultValue = $inputOption->getDefault();
|
||||
if (($defaultValue === null) || ($defaultValue === true)) {
|
||||
$this->specialDefaults[] = $option;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getArgsWithoutAppName()
|
||||
@@ -93,14 +172,14 @@ class CommandData
|
||||
// to the beginning.
|
||||
array_shift($args);
|
||||
|
||||
if ($this->usesInputInterface) {
|
||||
array_unshift($args, $this->input());
|
||||
}
|
||||
|
||||
if ($this->usesOutputInterface) {
|
||||
array_unshift($args, $this->output());
|
||||
}
|
||||
|
||||
if ($this->usesInputInterface) {
|
||||
array_unshift($args, $this->input());
|
||||
}
|
||||
|
||||
return $args;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@ class CommandFileDiscovery
|
||||
protected $includeFilesAtBase = true;
|
||||
/** @var integer */
|
||||
protected $searchDepth = 2;
|
||||
/** @var bool */
|
||||
protected $followLinks = false;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@@ -101,6 +103,16 @@ class CommandFileDiscovery
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify that the discovery object should follow symlinks. By
|
||||
* default, symlinks are not followed.
|
||||
*/
|
||||
public function followLinks($followLinks = true)
|
||||
{
|
||||
$this->followLinks = $followLinks;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the list of search locations to examine in each directory where
|
||||
* command files may be found. This replaces whatever was there before.
|
||||
@@ -325,6 +337,10 @@ class CommandFileDiscovery
|
||||
$finder->exclude($item);
|
||||
}
|
||||
|
||||
if ($this->followLinks) {
|
||||
$finder->followLinks();
|
||||
}
|
||||
|
||||
return $finder;
|
||||
}
|
||||
|
||||
@@ -357,13 +373,14 @@ class CommandFileDiscovery
|
||||
*/
|
||||
protected function joinPaths(array $pathParts)
|
||||
{
|
||||
return $this->joinParts(
|
||||
$path = $this->joinParts(
|
||||
'/',
|
||||
$pathParts,
|
||||
function ($item) {
|
||||
return !empty($item);
|
||||
}
|
||||
);
|
||||
return str_replace(DIRECTORY_SEPARATOR, '/', $path);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -375,6 +392,12 @@ class CommandFileDiscovery
|
||||
*/
|
||||
protected function joinParts($delimiter, $parts, $filterFunction)
|
||||
{
|
||||
$parts = array_map(
|
||||
function ($item) use ($delimiter) {
|
||||
return rtrim($item, $delimiter);
|
||||
},
|
||||
$parts
|
||||
);
|
||||
return implode(
|
||||
$delimiter,
|
||||
array_filter($parts, $filterFunction)
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand;
|
||||
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Consolidation\AnnotatedCommand\Hooks\Dispatchers\ReplaceCommandHookDispatcher;
|
||||
use Psr\Log\LoggerAwareInterface;
|
||||
use Psr\Log\LoggerAwareTrait;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\Output\ConsoleOutputInterface;
|
||||
@@ -11,14 +13,24 @@ use Consolidation\OutputFormatters\Options\FormatterOptions;
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\Options\PrepareFormatter;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Hooks\Dispatchers\InitializeHookDispatcher;
|
||||
use Consolidation\AnnotatedCommand\Hooks\Dispatchers\OptionsHookDispatcher;
|
||||
use Consolidation\AnnotatedCommand\Hooks\Dispatchers\InteractHookDispatcher;
|
||||
use Consolidation\AnnotatedCommand\Hooks\Dispatchers\ValidateHookDispatcher;
|
||||
use Consolidation\AnnotatedCommand\Hooks\Dispatchers\ProcessResultHookDispatcher;
|
||||
use Consolidation\AnnotatedCommand\Hooks\Dispatchers\StatusDeterminerHookDispatcher;
|
||||
use Consolidation\AnnotatedCommand\Hooks\Dispatchers\ExtracterHookDispatcher;
|
||||
|
||||
/**
|
||||
* Process a command, including hooks and other callbacks.
|
||||
* There should only be one command processor per application.
|
||||
* Provide your command processor to the AnnotatedCommandFactory
|
||||
* via AnnotatedCommandFactory::setCommandProcessor().
|
||||
*/
|
||||
class CommandProcessor
|
||||
class CommandProcessor implements LoggerAwareInterface
|
||||
{
|
||||
use LoggerAwareTrait;
|
||||
|
||||
/** var HookManager */
|
||||
protected $hookManager;
|
||||
/** var FormatterManager */
|
||||
@@ -27,6 +39,8 @@ class CommandProcessor
|
||||
protected $displayErrorFunction;
|
||||
/** var PrepareFormatterOptions[] */
|
||||
protected $prepareOptionsList = [];
|
||||
/** var boolean */
|
||||
protected $passExceptions;
|
||||
|
||||
public function __construct(HookManager $hookManager)
|
||||
{
|
||||
@@ -59,6 +73,32 @@ class CommandProcessor
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a mode to make the annotated command library re-throw
|
||||
* any exception that it catches while processing a command.
|
||||
*
|
||||
* The default behavior in the current (2.x) branch is to catch
|
||||
* the exception and replace it with a CommandError object that
|
||||
* may be processed by the normal output processing passthrough.
|
||||
*
|
||||
* In the 3.x branch, exceptions will never be caught; they will
|
||||
* be passed through, as if setPassExceptions(true) were called.
|
||||
* This is the recommended behavior.
|
||||
*/
|
||||
public function setPassExceptions($passExceptions)
|
||||
{
|
||||
$this->passExceptions = $passExceptions;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function commandErrorForException(\Exception $e)
|
||||
{
|
||||
if ($this->passExceptions) {
|
||||
throw $e;
|
||||
}
|
||||
return new CommandError($e->getMessage(), $e->getCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the formatter manager
|
||||
* @return FormatterManager
|
||||
@@ -73,7 +113,8 @@ class CommandProcessor
|
||||
$names,
|
||||
AnnotationData $annotationData
|
||||
) {
|
||||
return $this->hookManager()->initializeHook($input, $names, $annotationData);
|
||||
$initializeDispatcher = new InitializeHookDispatcher($this->hookManager(), $names);
|
||||
return $initializeDispatcher->initialize($input, $annotationData);
|
||||
}
|
||||
|
||||
public function optionsHook(
|
||||
@@ -81,7 +122,8 @@ class CommandProcessor
|
||||
$names,
|
||||
AnnotationData $annotationData
|
||||
) {
|
||||
$this->hookManager()->optionsHook($command, $names, $annotationData);
|
||||
$optionsDispatcher = new OptionsHookDispatcher($this->hookManager(), $names);
|
||||
$optionsDispatcher->getOptions($command, $annotationData);
|
||||
}
|
||||
|
||||
public function interact(
|
||||
@@ -90,7 +132,8 @@ class CommandProcessor
|
||||
$names,
|
||||
AnnotationData $annotationData
|
||||
) {
|
||||
return $this->hookManager()->interact($input, $output, $names, $annotationData);
|
||||
$interactDispatcher = new InteractHookDispatcher($this->hookManager(), $names);
|
||||
return $interactDispatcher->interact($input, $output, $annotationData);
|
||||
}
|
||||
|
||||
public function process(
|
||||
@@ -108,7 +151,7 @@ class CommandProcessor
|
||||
);
|
||||
return $this->handleResults($output, $names, $result, $commandData);
|
||||
} catch (\Exception $e) {
|
||||
$result = new CommandError($e->getMessage(), $e->getCode());
|
||||
$result = $this->commandErrorForException($e);
|
||||
return $this->handleResults($output, $names, $result, $commandData);
|
||||
}
|
||||
}
|
||||
@@ -120,11 +163,20 @@ class CommandProcessor
|
||||
) {
|
||||
// Validators return any object to signal a validation error;
|
||||
// if the return an array, it replaces the arguments.
|
||||
$validated = $this->hookManager()->validateArguments($names, $commandData);
|
||||
$validateDispatcher = new ValidateHookDispatcher($this->hookManager(), $names);
|
||||
$validated = $validateDispatcher->validate($commandData);
|
||||
if (is_object($validated)) {
|
||||
return $validated;
|
||||
}
|
||||
|
||||
$replaceDispatcher = new ReplaceCommandHookDispatcher($this->hookManager(), $names);
|
||||
if ($this->logger) {
|
||||
$replaceDispatcher->setLogger($this->logger);
|
||||
}
|
||||
if ($replaceDispatcher->hasReplaceCommandHook()) {
|
||||
$commandCallback = $replaceDispatcher->getReplacementCommand($commandData);
|
||||
}
|
||||
|
||||
// Run the command, alter the results, and then handle output and status
|
||||
$result = $this->runCommandCallback($commandCallback, $commandData);
|
||||
return $this->processResults($names, $result, $commandData);
|
||||
@@ -132,7 +184,8 @@ class CommandProcessor
|
||||
|
||||
public function processResults($names, $result, CommandData $commandData)
|
||||
{
|
||||
return $this->hookManager()->alterResult($names, $result, $commandData);
|
||||
$processDispatcher = new ProcessResultHookDispatcher($this->hookManager(), $names);
|
||||
return $processDispatcher->process($result, $commandData);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -140,7 +193,8 @@ class CommandProcessor
|
||||
*/
|
||||
public function handleResults(OutputInterface $output, $names, $result, CommandData $commandData)
|
||||
{
|
||||
$status = $this->hookManager()->determineStatusCode($names, $result);
|
||||
$statusCodeDispatcher = new StatusDeterminerHookDispatcher($this->hookManager(), $names);
|
||||
$status = $statusCodeDispatcher->determineStatusCode($result);
|
||||
// If the result is an integer and no separate status code was provided, then use the result as the status and do no output.
|
||||
if (is_integer($result) && !isset($status)) {
|
||||
return $result;
|
||||
@@ -148,7 +202,8 @@ class CommandProcessor
|
||||
$status = $this->interpretStatusCode($status);
|
||||
|
||||
// Get the structured output, the output stream and the formatter
|
||||
$structuredOutput = $this->hookManager()->extractOutput($names, $result);
|
||||
$extractDispatcher = new ExtracterHookDispatcher($this->hookManager(), $names);
|
||||
$structuredOutput = $extractDispatcher->extractOutput($result);
|
||||
$output = $this->chooseOutputStream($output, $status);
|
||||
if ($status != 0) {
|
||||
return $this->writeErrorMessage($output, $status, $structuredOutput, $result);
|
||||
@@ -179,7 +234,7 @@ class CommandProcessor
|
||||
$args = $commandData->getArgsAndOptions();
|
||||
$result = call_user_func_array($commandCallback, $args);
|
||||
} catch (\Exception $e) {
|
||||
$result = new CommandError($e->getMessage(), $e->getCode());
|
||||
$result = $this->commandErrorForException($e);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
20
lib/composer/vendor/consolidation/annotated-command/src/Events/CustomEventAwareInterface.php
vendored
Normal file
20
lib/composer/vendor/consolidation/annotated-command/src/Events/CustomEventAwareInterface.php
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Events;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
|
||||
interface CustomEventAwareInterface
|
||||
{
|
||||
/**
|
||||
* Set a reference to the hook manager for later use
|
||||
* @param HookManager $hookManager
|
||||
*/
|
||||
public function setHookManager(HookManager $hookManager);
|
||||
|
||||
/**
|
||||
* Get all of the defined event handlers of the specified name.
|
||||
* @param string $eventName
|
||||
* @return Callable[]
|
||||
*/
|
||||
public function getCustomEventHandlers($eventName);
|
||||
}
|
||||
29
lib/composer/vendor/consolidation/annotated-command/src/Events/CustomEventAwareTrait.php
vendored
Normal file
29
lib/composer/vendor/consolidation/annotated-command/src/Events/CustomEventAwareTrait.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Events;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
|
||||
trait CustomEventAwareTrait
|
||||
{
|
||||
/** var HookManager */
|
||||
protected $hookManager;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setHookManager(HookManager $hookManager)
|
||||
{
|
||||
$this->hookManager = $hookManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getCustomEventHandlers($eventName)
|
||||
{
|
||||
if (!$this->hookManager) {
|
||||
return [];
|
||||
}
|
||||
return $this->hookManager->getHook($eventName, HookManager::ON_EVENT);
|
||||
}
|
||||
}
|
||||
48
lib/composer/vendor/consolidation/annotated-command/src/Help/HelpCommand.php
vendored
Normal file
48
lib/composer/vendor/consolidation/annotated-command/src/Help/HelpCommand.php
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Help;
|
||||
|
||||
use Symfony\Component\Console\Application;
|
||||
use Symfony\Component\Console\Descriptor\XmlDescriptor;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class HelpCommand
|
||||
{
|
||||
/** var Application */
|
||||
protected $application;
|
||||
|
||||
/**
|
||||
* Create a help document from a Symfony Console command
|
||||
*/
|
||||
public function __construct(Application $application)
|
||||
{
|
||||
$this->application = $application;
|
||||
}
|
||||
|
||||
public function getApplication()
|
||||
{
|
||||
return $this->application;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the help command
|
||||
*
|
||||
* @command my-help
|
||||
* @return \Consolidation\AnnotatedCommand\Help\HelpDocument
|
||||
*/
|
||||
public function help($commandName = 'help')
|
||||
{
|
||||
$command = $this->getApplication()->find($commandName);
|
||||
|
||||
$helpDocument = $this->getHelpDocument($command);
|
||||
return $helpDocument;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a help document.
|
||||
*/
|
||||
protected function getHelpDocument($command)
|
||||
{
|
||||
return new HelpDocument($command);
|
||||
}
|
||||
}
|
||||
65
lib/composer/vendor/consolidation/annotated-command/src/Help/HelpDocument.php
vendored
Normal file
65
lib/composer/vendor/consolidation/annotated-command/src/Help/HelpDocument.php
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Help;
|
||||
|
||||
use Consolidation\OutputFormatters\StructuredData\Xml\DomDataInterface;
|
||||
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Descriptor\XmlDescriptor;
|
||||
|
||||
class HelpDocument implements DomDataInterface
|
||||
{
|
||||
/** var Command */
|
||||
protected $command;
|
||||
|
||||
/** var \DOMDocument */
|
||||
protected $dom;
|
||||
|
||||
/**
|
||||
* Create a help document from a Symfony Console command
|
||||
*/
|
||||
public function __construct(Command $command)
|
||||
{
|
||||
$dom = $this->generateBaseHelpDom($command);
|
||||
$dom = $this->alterHelpDocument($command, $dom);
|
||||
|
||||
$this->command = $command;
|
||||
$this->dom = $dom;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert data into a \DomDocument.
|
||||
*
|
||||
* @return \DomDocument
|
||||
*/
|
||||
public function getDomData()
|
||||
{
|
||||
return $this->dom;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the base help DOM prior to alteration by the Command object.
|
||||
* @param Command $command
|
||||
* @return \DomDocument
|
||||
*/
|
||||
protected function generateBaseHelpDom(Command $command)
|
||||
{
|
||||
// Use Symfony to generate xml text. If other formats are
|
||||
// requested, convert from xml to the desired form.
|
||||
$descriptor = new XmlDescriptor();
|
||||
return $descriptor->getCommandDocument($command);
|
||||
}
|
||||
|
||||
/**
|
||||
* Alter the DOM document per the command object
|
||||
* @param Command $command
|
||||
* @param \DomDocument $dom
|
||||
* @return \DomDocument
|
||||
*/
|
||||
protected function alterHelpDocument(Command $command, \DomDocument $dom)
|
||||
{
|
||||
if ($command instanceof HelpDocumentAlter) {
|
||||
$dom = $command->helpAlter($dom);
|
||||
}
|
||||
return $dom;
|
||||
}
|
||||
}
|
||||
7
lib/composer/vendor/consolidation/annotated-command/src/Help/HelpDocumentAlter.php
vendored
Normal file
7
lib/composer/vendor/consolidation/annotated-command/src/Help/HelpDocumentAlter.php
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Help;
|
||||
|
||||
interface HelpDocumentAlter
|
||||
{
|
||||
public function helpAlter(\DomDocument $dom);
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\ConsoleEvents;
|
||||
use Symfony\Component\Console\Event\ConsoleCommandEvent;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
/**
|
||||
* Call hooks
|
||||
*/
|
||||
class CommandEventHookDispatcher extends HookDispatcher
|
||||
{
|
||||
/**
|
||||
* @param ConsoleCommandEvent $event
|
||||
*/
|
||||
public function callCommandEventHooks(ConsoleCommandEvent $event)
|
||||
{
|
||||
$hooks = [
|
||||
HookManager::PRE_COMMAND_EVENT,
|
||||
HookManager::COMMAND_EVENT,
|
||||
HookManager::POST_COMMAND_EVENT
|
||||
];
|
||||
$commandEventHooks = $this->getHooks($hooks);
|
||||
foreach ($commandEventHooks as $commandEvent) {
|
||||
if ($commandEvent instanceof EventDispatcherInterface) {
|
||||
$commandEvent->dispatch(ConsoleEvents::COMMAND, $event);
|
||||
}
|
||||
if (is_callable($commandEvent)) {
|
||||
$commandEvent($event);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Hooks\ExtractOutputInterface;
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\OutputDataInterface;
|
||||
|
||||
/**
|
||||
* Call hooks
|
||||
*/
|
||||
class ExtracterHookDispatcher extends HookDispatcher implements ExtractOutputInterface
|
||||
{
|
||||
/**
|
||||
* Convert the result object to printable output in
|
||||
* structured form.
|
||||
*/
|
||||
public function extractOutput($result)
|
||||
{
|
||||
if ($result instanceof OutputDataInterface) {
|
||||
return $result->getOutputData();
|
||||
}
|
||||
|
||||
$hooks = [
|
||||
HookManager::EXTRACT_OUTPUT,
|
||||
];
|
||||
$extractors = $this->getHooks($hooks);
|
||||
foreach ($extractors as $extractor) {
|
||||
$structuredOutput = $this->callExtractor($extractor, $result);
|
||||
if (isset($structuredOutput)) {
|
||||
return $structuredOutput;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function callExtractor($extractor, $result)
|
||||
{
|
||||
if ($extractor instanceof ExtractOutputInterface) {
|
||||
return $extractor->extractOutput($result);
|
||||
}
|
||||
if (is_callable($extractor)) {
|
||||
return $extractor($result);
|
||||
}
|
||||
}
|
||||
}
|
||||
27
lib/composer/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/HookDispatcher.php
vendored
Normal file
27
lib/composer/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/HookDispatcher.php
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
|
||||
/**
|
||||
* Call hooks
|
||||
*/
|
||||
class HookDispatcher
|
||||
{
|
||||
/** var HookManager */
|
||||
protected $hookManager;
|
||||
protected $names;
|
||||
|
||||
public function __construct(HookManager $hookManager, $names)
|
||||
{
|
||||
$this->hookManager = $hookManager;
|
||||
$this->names = $names;
|
||||
}
|
||||
|
||||
public function getHooks($hooks, $annotationData = null)
|
||||
{
|
||||
return $this->hookManager->getHooks($this->names, $hooks, $annotationData);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Consolidation\AnnotatedCommand\Hooks\InitializeHookInterface;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
|
||||
/**
|
||||
* Call hooks
|
||||
*/
|
||||
class InitializeHookDispatcher extends HookDispatcher implements InitializeHookInterface
|
||||
{
|
||||
public function initialize(
|
||||
InputInterface $input,
|
||||
AnnotationData $annotationData
|
||||
) {
|
||||
$hooks = [
|
||||
HookManager::PRE_INITIALIZE,
|
||||
HookManager::INITIALIZE,
|
||||
HookManager::POST_INITIALIZE
|
||||
];
|
||||
$providers = $this->getHooks($hooks, $annotationData);
|
||||
foreach ($providers as $provider) {
|
||||
$this->callInitializeHook($provider, $input, $annotationData);
|
||||
}
|
||||
}
|
||||
|
||||
protected function callInitializeHook($provider, $input, AnnotationData $annotationData)
|
||||
{
|
||||
if ($provider instanceof InitializeHookInterface) {
|
||||
return $provider->initialize($input, $annotationData);
|
||||
}
|
||||
if (is_callable($provider)) {
|
||||
return $provider($input, $annotationData);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
|
||||
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\Hooks\InteractorInterface;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
/**
|
||||
* Call hooks
|
||||
*/
|
||||
class InteractHookDispatcher extends HookDispatcher
|
||||
{
|
||||
public function interact(
|
||||
InputInterface $input,
|
||||
OutputInterface $output,
|
||||
AnnotationData $annotationData
|
||||
) {
|
||||
$hooks = [
|
||||
HookManager::PRE_INTERACT,
|
||||
HookManager::INTERACT,
|
||||
HookManager::POST_INTERACT
|
||||
];
|
||||
$interactors = $this->getHooks($hooks, $annotationData);
|
||||
foreach ($interactors as $interactor) {
|
||||
$this->callInteractor($interactor, $input, $output, $annotationData);
|
||||
}
|
||||
}
|
||||
|
||||
protected function callInteractor($interactor, $input, $output, AnnotationData $annotationData)
|
||||
{
|
||||
if ($interactor instanceof InteractorInterface) {
|
||||
return $interactor->interact($input, $output, $annotationData);
|
||||
}
|
||||
if (is_callable($interactor)) {
|
||||
return $interactor($input, $output, $annotationData);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
|
||||
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Consolidation\AnnotatedCommand\AnnotatedCommand;
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\Hooks\OptionHookInterface;
|
||||
|
||||
/**
|
||||
* Call hooks
|
||||
*/
|
||||
class OptionsHookDispatcher extends HookDispatcher implements OptionHookInterface
|
||||
{
|
||||
public function getOptions(
|
||||
Command $command,
|
||||
AnnotationData $annotationData
|
||||
) {
|
||||
$hooks = [
|
||||
HookManager::PRE_OPTION_HOOK,
|
||||
HookManager::OPTION_HOOK,
|
||||
HookManager::POST_OPTION_HOOK
|
||||
];
|
||||
$optionHooks = $this->getHooks($hooks, $annotationData);
|
||||
foreach ($optionHooks as $optionHook) {
|
||||
$this->callOptionHook($optionHook, $command, $annotationData);
|
||||
}
|
||||
$commandInfoList = $this->hookManager->getHookOptionsForCommand($command);
|
||||
if ($command instanceof AnnotatedCommand) {
|
||||
$command->optionsHookForHookAnnotations($commandInfoList);
|
||||
}
|
||||
}
|
||||
|
||||
protected function callOptionHook($optionHook, $command, AnnotationData $annotationData)
|
||||
{
|
||||
if ($optionHook instanceof OptionHookInterface) {
|
||||
return $optionHook->getOptions($command, $annotationData);
|
||||
}
|
||||
if (is_callable($optionHook)) {
|
||||
return $optionHook($command, $annotationData);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
|
||||
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\Hooks\ProcessResultInterface;
|
||||
|
||||
/**
|
||||
* Call hooks
|
||||
*/
|
||||
class ProcessResultHookDispatcher extends HookDispatcher implements ProcessResultInterface
|
||||
{
|
||||
/**
|
||||
* Process result and decide what to do with it.
|
||||
* Allow client to add transformation / interpretation
|
||||
* callbacks.
|
||||
*/
|
||||
public function process($result, CommandData $commandData)
|
||||
{
|
||||
$hooks = [
|
||||
HookManager::PRE_PROCESS_RESULT,
|
||||
HookManager::PROCESS_RESULT,
|
||||
HookManager::POST_PROCESS_RESULT,
|
||||
HookManager::PRE_ALTER_RESULT,
|
||||
HookManager::ALTER_RESULT,
|
||||
HookManager::POST_ALTER_RESULT,
|
||||
HookManager::POST_COMMAND_HOOK,
|
||||
];
|
||||
$processors = $this->getHooks($hooks, $commandData->annotationData());
|
||||
foreach ($processors as $processor) {
|
||||
$result = $this->callProcessor($processor, $result, $commandData);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function callProcessor($processor, $result, CommandData $commandData)
|
||||
{
|
||||
$processed = null;
|
||||
if ($processor instanceof ProcessResultInterface) {
|
||||
$processed = $processor->process($result, $commandData);
|
||||
}
|
||||
if (is_callable($processor)) {
|
||||
$processed = $processor($result, $commandData);
|
||||
}
|
||||
if (isset($processed)) {
|
||||
return $processed;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
|
||||
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Psr\Log\LoggerAwareInterface;
|
||||
use Psr\Log\LoggerAwareTrait;
|
||||
|
||||
/**
|
||||
* Call hooks.
|
||||
*/
|
||||
class ReplaceCommandHookDispatcher extends HookDispatcher implements LoggerAwareInterface
|
||||
{
|
||||
|
||||
use LoggerAwareTrait;
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function hasReplaceCommandHook()
|
||||
{
|
||||
return (bool) count($this->getReplaceCommandHooks());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \callable[]
|
||||
*/
|
||||
public function getReplaceCommandHooks()
|
||||
{
|
||||
$hooks = [
|
||||
HookManager::REPLACE_COMMAND_HOOK,
|
||||
];
|
||||
$replaceCommandHooks = $this->getHooks($hooks);
|
||||
|
||||
return $replaceCommandHooks;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Consolidation\AnnotatedCommand\CommandData $commandData
|
||||
*
|
||||
* @return callable
|
||||
*/
|
||||
public function getReplacementCommand(CommandData $commandData)
|
||||
{
|
||||
$replaceCommandHooks = $this->getReplaceCommandHooks();
|
||||
|
||||
// We only take the first hook implementation of "replace-command" as the replacement. Commands shouldn't have
|
||||
// more than one replacement.
|
||||
$replacementCommand = reset($replaceCommandHooks);
|
||||
|
||||
if ($this->logger && count($replaceCommandHooks) > 1) {
|
||||
$command_name = $commandData->annotationData()->get('command', 'unknown');
|
||||
$message = "Multiple implementations of the \"replace - command\" hook exist for the \"$command_name\" command.\n";
|
||||
foreach ($replaceCommandHooks as $replaceCommandHook) {
|
||||
$class = get_class($replaceCommandHook[0]);
|
||||
$method = $replaceCommandHook[1];
|
||||
$hook_name = "$class->$method";
|
||||
$message .= " - $hook_name\n";
|
||||
}
|
||||
$this->logger->warning($message);
|
||||
}
|
||||
|
||||
return $replacementCommand;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
|
||||
|
||||
use Consolidation\AnnotatedCommand\ExitCodeInterface;
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\Hooks\StatusDeterminerInterface;
|
||||
|
||||
/**
|
||||
* Call hooks
|
||||
*/
|
||||
class StatusDeterminerHookDispatcher extends HookDispatcher implements StatusDeterminerInterface
|
||||
{
|
||||
/**
|
||||
* Call all status determiners, and see if any of them
|
||||
* know how to convert to a status code.
|
||||
*/
|
||||
public function determineStatusCode($result)
|
||||
{
|
||||
// If the result (post-processing) is an object that
|
||||
// implements ExitCodeInterface, then we will ask it
|
||||
// to give us the status code.
|
||||
if ($result instanceof ExitCodeInterface) {
|
||||
return $result->getExitCode();
|
||||
}
|
||||
|
||||
$hooks = [
|
||||
HookManager::STATUS_DETERMINER,
|
||||
];
|
||||
// If the result does not implement ExitCodeInterface,
|
||||
// then we'll see if there is a determiner that can
|
||||
// extract a status code from the result.
|
||||
$determiners = $this->getHooks($hooks);
|
||||
foreach ($determiners as $determiner) {
|
||||
$status = $this->callDeterminer($determiner, $result);
|
||||
if (isset($status)) {
|
||||
return $status;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function callDeterminer($determiner, $result)
|
||||
{
|
||||
if ($determiner instanceof StatusDeterminerInterface) {
|
||||
return $determiner->determineStatusCode($result);
|
||||
}
|
||||
if (is_callable($determiner)) {
|
||||
return $determiner($result);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
|
||||
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
use Consolidation\AnnotatedCommand\CommandError;
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\Hooks\ValidatorInterface;
|
||||
|
||||
/**
|
||||
* Call hooks
|
||||
*/
|
||||
class ValidateHookDispatcher extends HookDispatcher implements ValidatorInterface
|
||||
{
|
||||
public function validate(CommandData $commandData)
|
||||
{
|
||||
$hooks = [
|
||||
HookManager::PRE_ARGUMENT_VALIDATOR,
|
||||
HookManager::ARGUMENT_VALIDATOR,
|
||||
HookManager::POST_ARGUMENT_VALIDATOR,
|
||||
HookManager::PRE_COMMAND_HOOK,
|
||||
HookManager::COMMAND_HOOK,
|
||||
];
|
||||
$validators = $this->getHooks($hooks, $commandData->annotationData());
|
||||
foreach ($validators as $validator) {
|
||||
$validated = $this->callValidator($validator, $commandData);
|
||||
if ($validated === false) {
|
||||
return new CommandError();
|
||||
}
|
||||
if (is_object($validated)) {
|
||||
return $validated;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function callValidator($validator, CommandData $commandData)
|
||||
{
|
||||
if ($validator instanceof ValidatorInterface) {
|
||||
return $validator->validate($commandData);
|
||||
}
|
||||
if (is_callable($validator)) {
|
||||
return $validator($commandData);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,12 +8,15 @@ use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\ConsoleEvents;
|
||||
use Symfony\Component\Console\Event\ConsoleCommandEvent;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
|
||||
use Consolidation\AnnotatedCommand\ExitCodeInterface;
|
||||
use Consolidation\AnnotatedCommand\OutputDataInterface;
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
use Consolidation\AnnotatedCommand\CommandError;
|
||||
use Consolidation\AnnotatedCommand\Hooks\Dispatchers\CommandEventHookDispatcher;
|
||||
|
||||
/**
|
||||
* Manage named callback hooks
|
||||
@@ -24,6 +27,7 @@ class HookManager implements EventSubscriberInterface
|
||||
/** var CommandInfo[] */
|
||||
protected $hookOptions = [];
|
||||
|
||||
const REPLACE_COMMAND_HOOK = 'replace-command';
|
||||
const PRE_COMMAND_EVENT = 'pre-command-event';
|
||||
const COMMAND_EVENT = 'command-event';
|
||||
const POST_COMMAND_EVENT = 'post-command-event';
|
||||
@@ -50,6 +54,7 @@ class HookManager implements EventSubscriberInterface
|
||||
const POST_ALTER_RESULT = 'post-alter';
|
||||
const STATUS_DETERMINER = 'status';
|
||||
const EXTRACT_OUTPUT = 'extract';
|
||||
const ON_EVENT = 'on-event';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@@ -117,6 +122,44 @@ class HookManager implements EventSubscriberInterface
|
||||
return $reflectionClass->getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a replace command hook
|
||||
*
|
||||
* @param type ReplaceCommandHookInterface $provider
|
||||
* @param type string $command_name The name of the command to replace
|
||||
*/
|
||||
public function addReplaceCommandHook(ReplaceCommandHookInterface $replaceCommandHook, $name)
|
||||
{
|
||||
$this->hooks[$name][self::REPLACE_COMMAND_HOOK][] = $replaceCommandHook;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function addPreCommandEventDispatcher(EventDispatcherInterface $eventDispatcher, $name = '*')
|
||||
{
|
||||
$this->hooks[$name][self::PRE_COMMAND_EVENT][] = $eventDispatcher;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function addCommandEventDispatcher(EventDispatcherInterface $eventDispatcher, $name = '*')
|
||||
{
|
||||
$this->hooks[$name][self::COMMAND_EVENT][] = $eventDispatcher;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function addPostCommandEventDispatcher(EventDispatcherInterface $eventDispatcher, $name = '*')
|
||||
{
|
||||
$this->hooks[$name][self::POST_COMMAND_EVENT][] = $eventDispatcher;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function addCommandEvent(EventSubscriberInterface $eventSubscriber)
|
||||
{
|
||||
// Wrap the event subscriber in a dispatcher and add it
|
||||
$dispatcher = new EventDispatcher();
|
||||
$dispatcher->addSubscriber($eventSubscriber);
|
||||
return $this->addCommandEventDispatcher($dispatcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an configuration provider hook
|
||||
*
|
||||
@@ -281,30 +324,6 @@ class HookManager implements EventSubscriberInterface
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function initializeHook(
|
||||
InputInterface $input,
|
||||
$names,
|
||||
AnnotationData $annotationData
|
||||
) {
|
||||
$providers = $this->getInitializeHooks($names, $annotationData);
|
||||
foreach ($providers as $provider) {
|
||||
$this->callInjectConfigurationHook($provider, $input, $annotationData);
|
||||
}
|
||||
}
|
||||
|
||||
public function optionsHook(
|
||||
\Consolidation\AnnotatedCommand\AnnotatedCommand $command,
|
||||
$names,
|
||||
AnnotationData $annotationData
|
||||
) {
|
||||
$optionHooks = $this->getOptionHooks($names, $annotationData);
|
||||
foreach ($optionHooks as $optionHook) {
|
||||
$this->callOptionHook($optionHook, $command, $annotationData);
|
||||
}
|
||||
$commandInfoList = $this->getHookOptionsForCommand($command);
|
||||
$command->optionsHookForHookAnnotations($commandInfoList);
|
||||
}
|
||||
|
||||
public function getHookOptionsForCommand($command)
|
||||
{
|
||||
$names = $this->addWildcardHooksToNames($command->getNames(), $command->getAnnotationData());
|
||||
@@ -325,210 +344,6 @@ class HookManager implements EventSubscriberInterface
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function interact(
|
||||
InputInterface $input,
|
||||
OutputInterface $output,
|
||||
$names,
|
||||
AnnotationData $annotationData
|
||||
) {
|
||||
$interactors = $this->getInteractors($names, $annotationData);
|
||||
foreach ($interactors as $interactor) {
|
||||
$this->callInteractor($interactor, $input, $output, $annotationData);
|
||||
}
|
||||
}
|
||||
|
||||
public function validateArguments($names, CommandData $commandData)
|
||||
{
|
||||
$validators = $this->getValidators($names, $commandData->annotationData());
|
||||
foreach ($validators as $validator) {
|
||||
$validated = $this->callValidator($validator, $commandData);
|
||||
if ($validated === false) {
|
||||
return new CommandError();
|
||||
}
|
||||
if (is_object($validated)) {
|
||||
return $validated;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process result and decide what to do with it.
|
||||
* Allow client to add transformation / interpretation
|
||||
* callbacks.
|
||||
*/
|
||||
public function alterResult($names, $result, CommandData $commandData)
|
||||
{
|
||||
$processors = $this->getProcessResultHooks($names, $commandData->annotationData());
|
||||
foreach ($processors as $processor) {
|
||||
$result = $this->callProcessor($processor, $result, $commandData);
|
||||
}
|
||||
$alterers = $this->getAlterResultHooks($names, $commandData->annotationData());
|
||||
foreach ($alterers as $alterer) {
|
||||
$result = $this->callProcessor($alterer, $result, $commandData);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Call all status determiners, and see if any of them
|
||||
* know how to convert to a status code.
|
||||
*/
|
||||
public function determineStatusCode($names, $result)
|
||||
{
|
||||
// If the result (post-processing) is an object that
|
||||
// implements ExitCodeInterface, then we will ask it
|
||||
// to give us the status code.
|
||||
if ($result instanceof ExitCodeInterface) {
|
||||
return $result->getExitCode();
|
||||
}
|
||||
|
||||
// If the result does not implement ExitCodeInterface,
|
||||
// then we'll see if there is a determiner that can
|
||||
// extract a status code from the result.
|
||||
$determiners = $this->getStatusDeterminers($names);
|
||||
foreach ($determiners as $determiner) {
|
||||
$status = $this->callDeterminer($determiner, $result);
|
||||
if (isset($status)) {
|
||||
return $status;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the result object to printable output in
|
||||
* structured form.
|
||||
*/
|
||||
public function extractOutput($names, $result)
|
||||
{
|
||||
if ($result instanceof OutputDataInterface) {
|
||||
return $result->getOutputData();
|
||||
}
|
||||
|
||||
$extractors = $this->getOutputExtractors($names);
|
||||
foreach ($extractors as $extractor) {
|
||||
$structuredOutput = $this->callExtractor($extractor, $result);
|
||||
if (isset($structuredOutput)) {
|
||||
return $structuredOutput;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function getCommandEventHooks($names)
|
||||
{
|
||||
return $this->getHooks(
|
||||
$names,
|
||||
[
|
||||
self::PRE_COMMAND_EVENT,
|
||||
self::COMMAND_EVENT,
|
||||
self::POST_COMMAND_EVENT
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
protected function getInitializeHooks($names, AnnotationData $annotationData)
|
||||
{
|
||||
return $this->getHooks(
|
||||
$names,
|
||||
[
|
||||
self::PRE_INITIALIZE,
|
||||
self::INITIALIZE,
|
||||
self::POST_INITIALIZE
|
||||
],
|
||||
$annotationData
|
||||
);
|
||||
}
|
||||
|
||||
protected function getOptionHooks($names, AnnotationData $annotationData)
|
||||
{
|
||||
return $this->getHooks(
|
||||
$names,
|
||||
[
|
||||
self::PRE_OPTION_HOOK,
|
||||
self::OPTION_HOOK,
|
||||
self::POST_OPTION_HOOK
|
||||
],
|
||||
$annotationData
|
||||
);
|
||||
}
|
||||
|
||||
protected function getInteractors($names, AnnotationData $annotationData)
|
||||
{
|
||||
return $this->getHooks(
|
||||
$names,
|
||||
[
|
||||
self::PRE_INTERACT,
|
||||
self::INTERACT,
|
||||
self::POST_INTERACT
|
||||
],
|
||||
$annotationData
|
||||
);
|
||||
}
|
||||
|
||||
protected function getValidators($names, AnnotationData $annotationData)
|
||||
{
|
||||
return $this->getHooks(
|
||||
$names,
|
||||
[
|
||||
self::PRE_ARGUMENT_VALIDATOR,
|
||||
self::ARGUMENT_VALIDATOR,
|
||||
self::POST_ARGUMENT_VALIDATOR,
|
||||
self::PRE_COMMAND_HOOK,
|
||||
self::COMMAND_HOOK,
|
||||
],
|
||||
$annotationData
|
||||
);
|
||||
}
|
||||
|
||||
protected function getProcessResultHooks($names, AnnotationData $annotationData)
|
||||
{
|
||||
return $this->getHooks(
|
||||
$names,
|
||||
[
|
||||
self::PRE_PROCESS_RESULT,
|
||||
self::PROCESS_RESULT,
|
||||
self::POST_PROCESS_RESULT
|
||||
],
|
||||
$annotationData
|
||||
);
|
||||
}
|
||||
|
||||
protected function getAlterResultHooks($names, AnnotationData $annotationData)
|
||||
{
|
||||
return $this->getHooks(
|
||||
$names,
|
||||
[
|
||||
self::PRE_ALTER_RESULT,
|
||||
self::ALTER_RESULT,
|
||||
self::POST_ALTER_RESULT,
|
||||
self::POST_COMMAND_HOOK,
|
||||
],
|
||||
$annotationData
|
||||
);
|
||||
}
|
||||
|
||||
protected function getStatusDeterminers($names)
|
||||
{
|
||||
return $this->getHooks(
|
||||
$names,
|
||||
[
|
||||
self::STATUS_DETERMINER,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
protected function getOutputExtractors($names)
|
||||
{
|
||||
return $this->getHooks(
|
||||
$names,
|
||||
[
|
||||
self::EXTRACT_OUTPUT,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a set of hooks with the provided name(s). Include the
|
||||
* pre- and post- hooks, and also include the global hooks ('*')
|
||||
@@ -583,7 +398,7 @@ class HookManager implements EventSubscriberInterface
|
||||
*
|
||||
* @return callable[]
|
||||
*/
|
||||
protected function getHook($name, $hook)
|
||||
public function getHook($name, $hook)
|
||||
{
|
||||
if (isset($this->hooks[$name][$hook])) {
|
||||
return $this->hooks[$name][$hook];
|
||||
@@ -591,103 +406,22 @@ class HookManager implements EventSubscriberInterface
|
||||
return [];
|
||||
}
|
||||
|
||||
protected function callInjectConfigurationHook($provider, $input, AnnotationData $annotationData)
|
||||
{
|
||||
if ($provider instanceof InitializeHookInterface) {
|
||||
return $provider->applyConfiguration($input, $annotationData);
|
||||
}
|
||||
if (is_callable($provider)) {
|
||||
return $provider($input, $annotationData);
|
||||
}
|
||||
}
|
||||
|
||||
protected function callOptionHook($optionHook, $command, AnnotationData $annotationData)
|
||||
{
|
||||
if ($optionHook instanceof OptionHookInterface) {
|
||||
return $optionHook->getOptions($command, $annotationData);
|
||||
}
|
||||
if (is_callable($optionHook)) {
|
||||
return $optionHook($command, $annotationData);
|
||||
}
|
||||
}
|
||||
|
||||
protected function callInteractor($interactor, $input, $output, AnnotationData $annotationData)
|
||||
{
|
||||
if ($interactor instanceof InteractorInterface) {
|
||||
return $interactor->interact($input, $output, $annotationData);
|
||||
}
|
||||
if (is_callable($interactor)) {
|
||||
return $interactor($input, $output, $annotationData);
|
||||
}
|
||||
}
|
||||
|
||||
protected function callValidator($validator, CommandData $commandData)
|
||||
{
|
||||
if ($validator instanceof ValidatorInterface) {
|
||||
return $validator->validate($commandData);
|
||||
}
|
||||
if (is_callable($validator)) {
|
||||
return $validator($commandData);
|
||||
}
|
||||
}
|
||||
|
||||
protected function callProcessor($processor, $result, CommandData $commandData)
|
||||
{
|
||||
$processed = null;
|
||||
if ($processor instanceof ProcessResultInterface) {
|
||||
$processed = $processor->process($result, $commandData);
|
||||
}
|
||||
if (is_callable($processor)) {
|
||||
$processed = $processor($result, $commandData);
|
||||
}
|
||||
if (isset($processed)) {
|
||||
return $processed;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function callDeterminer($determiner, $result)
|
||||
{
|
||||
if ($determiner instanceof StatusDeterminerInterface) {
|
||||
return $determiner->determineStatusCode($result);
|
||||
}
|
||||
if (is_callable($determiner)) {
|
||||
return $determiner($result);
|
||||
}
|
||||
}
|
||||
|
||||
protected function callExtractor($extractor, $result)
|
||||
{
|
||||
if ($extractor instanceof ExtractOutputInterface) {
|
||||
return $extractor->extractOutput($result);
|
||||
}
|
||||
if (is_callable($extractor)) {
|
||||
return $extractor($result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Call the command event hooks.
|
||||
*
|
||||
* TODO: This should be moved to CommandEventHookDispatcher, which
|
||||
* should become the class that implements EventSubscriberInterface.
|
||||
* This change would break all clients, though, so postpone until next
|
||||
* major release.
|
||||
*
|
||||
* @param ConsoleCommandEvent $event
|
||||
*/
|
||||
public function callCommandEventHooks(ConsoleCommandEvent $event)
|
||||
{
|
||||
/* @var Command $command */
|
||||
$command = $event->getCommand();
|
||||
$names = [$command->getName()];
|
||||
$commandEventHooks = $this->getCommandEventHooks($names);
|
||||
foreach ($commandEventHooks as $commandEvent) {
|
||||
if (is_callable($commandEvent)) {
|
||||
$commandEvent($event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function findAndAddHookOptions($command)
|
||||
{
|
||||
if (!$command instanceof \Consolidation\AnnotatedCommand\AnnotatedCommand) {
|
||||
return;
|
||||
}
|
||||
$command->optionsHook();
|
||||
$dispatcher = new CommandEventHookDispatcher($this, [$command->getName()]);
|
||||
$dispatcher->callCommandEventHooks($event);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,5 +11,5 @@ use Symfony\Component\Console\Input\InputInterface;
|
||||
*/
|
||||
interface InitializeHookInterface
|
||||
{
|
||||
public function initialize(InputInterface $input, Annotation $annotationData);
|
||||
public function initialize(InputInterface $input, AnnotationData $annotationData);
|
||||
}
|
||||
|
||||
@@ -58,7 +58,14 @@ class AlterOptionsCommandEvent implements EventSubscriberInterface
|
||||
$input->bind($command->getDefinition());
|
||||
}
|
||||
|
||||
// Symfony Console helpfully swaps 'command_name' and 'command'
|
||||
// depending on whether the user entered `help foo` or `--help foo`.
|
||||
// One of these is always `help`, and the other is the command we
|
||||
// are actually interested in.
|
||||
$nameOfCommandToDescribe = $event->getInput()->getArgument('command_name');
|
||||
if ($nameOfCommandToDescribe == 'help') {
|
||||
$nameOfCommandToDescribe = $event->getInput()->getArgument('command');
|
||||
}
|
||||
$commandToDescribe = $this->application->find($nameOfCommandToDescribe);
|
||||
$this->findAndAddHookOptions($commandToDescribe);
|
||||
} else {
|
||||
|
||||
@@ -10,6 +10,8 @@ class PrepareTerminalWidthOption implements PrepareFormatter
|
||||
/** var Application */
|
||||
protected $application;
|
||||
|
||||
protected $terminal;
|
||||
|
||||
/** var int */
|
||||
protected $defaultWidth;
|
||||
|
||||
@@ -19,6 +21,9 @@ class PrepareTerminalWidthOption implements PrepareFormatter
|
||||
/** var int */
|
||||
protected $minWidth = 0;
|
||||
|
||||
/* var boolean */
|
||||
protected $shouldWrap = true;
|
||||
|
||||
public function __construct($defaultWidth = 0)
|
||||
{
|
||||
$this->defaultWidth = $defaultWidth;
|
||||
@@ -29,6 +34,24 @@ class PrepareTerminalWidthOption implements PrepareFormatter
|
||||
$this->application = $application;
|
||||
}
|
||||
|
||||
public function setTerminal($terminal)
|
||||
{
|
||||
$this->terminal = $terminal;
|
||||
}
|
||||
|
||||
public function getTerminal()
|
||||
{
|
||||
if (!$this->terminal && class_exists('\Symfony\Component\Console\Terminal')) {
|
||||
$this->terminal = new \Symfony\Component\Console\Terminal();
|
||||
}
|
||||
return $this->terminal;
|
||||
}
|
||||
|
||||
public function enableWrap($shouldWrap)
|
||||
{
|
||||
$this->shouldWrap = $shouldWrap;
|
||||
}
|
||||
|
||||
public function prepare(CommandData $commandData, FormatterOptions $options)
|
||||
{
|
||||
$width = $this->getTerminalWidth();
|
||||
@@ -45,10 +68,24 @@ class PrepareTerminalWidthOption implements PrepareFormatter
|
||||
|
||||
protected function getTerminalWidth()
|
||||
{
|
||||
if (!$this->application) {
|
||||
// Don't wrap if wrapping has been disabled.
|
||||
if (!$this->shouldWrap) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
$terminal = $this->getTerminal();
|
||||
if ($terminal) {
|
||||
return $terminal->getWidth();
|
||||
}
|
||||
|
||||
return $this->getTerminalWidthViaApplication();
|
||||
}
|
||||
|
||||
protected function getTerminalWidthViaApplication()
|
||||
{
|
||||
if (!$this->application) {
|
||||
return 0;
|
||||
}
|
||||
$dimensions = $this->application->getTerminalDimensions();
|
||||
if ($dimensions[0] == null) {
|
||||
return 0;
|
||||
|
||||
@@ -17,6 +17,11 @@ use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
*/
|
||||
class CommandInfo
|
||||
{
|
||||
/**
|
||||
* Serialization schema version. Incremented every time the serialization schema changes.
|
||||
*/
|
||||
const SERIALIZATION_SCHEMA_VERSION = 3;
|
||||
|
||||
/**
|
||||
* @var \ReflectionMethod
|
||||
*/
|
||||
@@ -26,7 +31,7 @@ class CommandInfo
|
||||
* @var boolean
|
||||
* @var string
|
||||
*/
|
||||
protected $docBlockIsParsed;
|
||||
protected $docBlockIsParsed = false;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
@@ -68,6 +73,11 @@ class CommandInfo
|
||||
*/
|
||||
protected $aliases = [];
|
||||
|
||||
/**
|
||||
* @var InputOption[]
|
||||
*/
|
||||
protected $inputOptions;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
@@ -78,33 +88,59 @@ class CommandInfo
|
||||
*/
|
||||
protected $returnType;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $optionParamName;
|
||||
|
||||
/**
|
||||
* Create a new CommandInfo class for a particular method of a class.
|
||||
*
|
||||
* @param string|mixed $classNameOrInstance The name of a class, or an
|
||||
* instance of it.
|
||||
* instance of it, or an array of cached data.
|
||||
* @param string $methodName The name of the method to get info about.
|
||||
* @param array $cache Cached data
|
||||
* @deprecated Use CommandInfo::create() or CommandInfo::deserialize()
|
||||
* instead. In the future, this constructor will be protected.
|
||||
*/
|
||||
public function __construct($classNameOrInstance, $methodName)
|
||||
public function __construct($classNameOrInstance, $methodName, $cache = [])
|
||||
{
|
||||
$this->reflection = new \ReflectionMethod($classNameOrInstance, $methodName);
|
||||
$this->methodName = $methodName;
|
||||
$this->arguments = new DefaultsWithDescriptions();
|
||||
$this->options = new DefaultsWithDescriptions();
|
||||
|
||||
// If the cache came from a newer version, ignore it and
|
||||
// regenerate the cached information.
|
||||
if (!empty($cache) && CommandInfoDeserializer::isValidSerializedData($cache) && !$this->cachedFileIsModified($cache)) {
|
||||
$deserializer = new CommandInfoDeserializer();
|
||||
$deserializer->constructFromCache($this, $cache);
|
||||
$this->docBlockIsParsed = true;
|
||||
} else {
|
||||
$this->constructFromClassAndMethod($classNameOrInstance, $methodName);
|
||||
}
|
||||
}
|
||||
|
||||
public static function create($classNameOrInstance, $methodName)
|
||||
{
|
||||
return new self($classNameOrInstance, $methodName);
|
||||
}
|
||||
|
||||
public static function deserialize($cache)
|
||||
{
|
||||
$cache = (array)$cache;
|
||||
return new self($cache['class'], $cache['method_name'], $cache);
|
||||
}
|
||||
|
||||
public function cachedFileIsModified($cache)
|
||||
{
|
||||
$path = $this->reflection->getFileName();
|
||||
return filemtime($path) != $cache['mtime'];
|
||||
}
|
||||
|
||||
protected function constructFromClassAndMethod($classNameOrInstance, $methodName)
|
||||
{
|
||||
$this->otherAnnotations = new AnnotationData();
|
||||
// Set up a default name for the command from the method name.
|
||||
// This can be overridden via @command or @name annotations.
|
||||
$this->name = $this->convertName($this->reflection->name);
|
||||
$this->name = $this->convertName($methodName);
|
||||
$this->options = new DefaultsWithDescriptions($this->determineOptionsFromParameters(), false);
|
||||
$this->arguments = $this->determineAgumentClassifications();
|
||||
// Remember the name of the last parameter, if it holds the options.
|
||||
// We will use this information to ignore @param annotations for the options.
|
||||
if (!empty($this->options)) {
|
||||
$this->optionParamName = $this->lastParameterName();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -139,6 +175,28 @@ class CommandInfo
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return whether or not this method represents a valid command
|
||||
* or hook.
|
||||
*/
|
||||
public function valid()
|
||||
{
|
||||
return !empty($this->name);
|
||||
}
|
||||
|
||||
/**
|
||||
* If higher-level code decides that this CommandInfo is not interesting
|
||||
* or useful (if it is not a command method or a hook method), then
|
||||
* we will mark it as invalid to prevent it from being created as a command.
|
||||
* We still cache a placeholder record for invalid methods, so that we
|
||||
* do not need to re-parse the method again later simply to determine that
|
||||
* it is invalid.
|
||||
*/
|
||||
public function invalidate()
|
||||
{
|
||||
$this->name = '';
|
||||
}
|
||||
|
||||
public function getReturnType()
|
||||
{
|
||||
$this->parseDocBlock();
|
||||
@@ -164,6 +222,15 @@ class CommandInfo
|
||||
return $this->otherAnnotations;
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace the annotation data.
|
||||
*/
|
||||
public function replaceRawAnnotations($annotationData)
|
||||
{
|
||||
$this->otherAnnotations = new AnnotationData((array) $annotationData);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get any annotations included in the docblock comment,
|
||||
* also including default values such as @command. We add
|
||||
@@ -176,27 +243,49 @@ class CommandInfo
|
||||
*/
|
||||
public function getAnnotations()
|
||||
{
|
||||
// Also provide the path to the commandfile that these annotations
|
||||
// were pulled from and the classname of that file.
|
||||
$path = $this->reflection->getFileName();
|
||||
$className = $this->reflection->getDeclaringClass()->getName();
|
||||
return new AnnotationData(
|
||||
$this->getRawAnnotations()->getArrayCopy() +
|
||||
[
|
||||
'command' => $this->getName(),
|
||||
'_path' => $path,
|
||||
'_classname' => $className,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a specific named annotation for this command.
|
||||
* Return a specific named annotation for this command as a list.
|
||||
*
|
||||
* @param string $annotation The name of the annotation.
|
||||
* @return string
|
||||
* @param string $name The name of the annotation.
|
||||
* @return array|null
|
||||
*/
|
||||
public function getAnnotation($annotation)
|
||||
public function getAnnotationList($name)
|
||||
{
|
||||
// hasAnnotation parses the docblock
|
||||
if (!$this->hasAnnotation($annotation)) {
|
||||
if (!$this->hasAnnotation($name)) {
|
||||
return null;
|
||||
}
|
||||
return $this->otherAnnotations[$annotation];
|
||||
return $this->otherAnnotations->getList($name);
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a specific named annotation for this command as a string.
|
||||
*
|
||||
* @param string $name The name of the annotation.
|
||||
* @return string|null
|
||||
*/
|
||||
public function getAnnotation($name)
|
||||
{
|
||||
// hasAnnotation parses the docblock
|
||||
if (!$this->hasAnnotation($name)) {
|
||||
return null;
|
||||
}
|
||||
return $this->otherAnnotations->get($name);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -217,6 +306,11 @@ class CommandInfo
|
||||
*/
|
||||
public function addAnnotation($name, $content)
|
||||
{
|
||||
// Convert to an array and merge if there are multiple
|
||||
// instances of the same annotation defined.
|
||||
if (isset($this->otherAnnotations[$name])) {
|
||||
$content = array_merge((array) $this->otherAnnotations[$name], (array)$content);
|
||||
}
|
||||
$this->otherAnnotations[$name] = $content;
|
||||
}
|
||||
|
||||
@@ -246,7 +340,7 @@ class CommandInfo
|
||||
*/
|
||||
public function setDescription($description)
|
||||
{
|
||||
$this->description = $description;
|
||||
$this->description = str_replace("\n", ' ', $description);
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -293,6 +387,27 @@ class CommandInfo
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get hidden status for the command.
|
||||
* @return bool
|
||||
*/
|
||||
public function getHidden()
|
||||
{
|
||||
$this->parseDocBlock();
|
||||
return $this->hasAnnotation('hidden');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set hidden status. List command omits hidden commands.
|
||||
*
|
||||
* @param bool $hidden
|
||||
*/
|
||||
public function setHidden($hidden)
|
||||
{
|
||||
$this->hidden = $hidden;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the examples for this command. This is @usage instead of
|
||||
* @example because the later is defined by the phpdoc standard to
|
||||
@@ -319,6 +434,29 @@ class CommandInfo
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overwrite all example usages
|
||||
*/
|
||||
public function replaceExampleUsages($usages)
|
||||
{
|
||||
$this->exampleUsage = $usages;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the topics for this command.
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
public function getTopics()
|
||||
{
|
||||
if (!$this->hasAnnotation('topics')) {
|
||||
return [];
|
||||
}
|
||||
$topics = $this->getAnnotation('topics');
|
||||
return explode(',', trim($topics));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the list of refleaction parameters.
|
||||
*
|
||||
@@ -349,14 +487,6 @@ class CommandInfo
|
||||
return $this->options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the name of the last parameter if it holds the options.
|
||||
*/
|
||||
public function optionParamName()
|
||||
{
|
||||
return $this->optionParamName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the inputOptions for the options associated with this CommandInfo
|
||||
* object, e.g. via @option annotations, or from
|
||||
@@ -366,8 +496,31 @@ class CommandInfo
|
||||
* @return InputOption[]
|
||||
*/
|
||||
public function inputOptions()
|
||||
{
|
||||
if (!isset($this->inputOptions)) {
|
||||
$this->inputOptions = $this->createInputOptions();
|
||||
}
|
||||
return $this->inputOptions;
|
||||
}
|
||||
|
||||
protected function addImplicitNoOptions()
|
||||
{
|
||||
$opts = $this->options()->getValues();
|
||||
foreach ($opts as $name => $defaultValue) {
|
||||
if ($defaultValue === true) {
|
||||
$key = 'no-' . $name;
|
||||
if (!array_key_exists($key, $opts)) {
|
||||
$description = "Negate --$name option.";
|
||||
$this->options()->add($key, $description, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function createInputOptions()
|
||||
{
|
||||
$explicitOptions = [];
|
||||
$this->addImplicitNoOptions();
|
||||
|
||||
$opts = $this->options()->getValues();
|
||||
foreach ($opts as $name => $defaultValue) {
|
||||
@@ -379,10 +532,28 @@ class CommandInfo
|
||||
list($fullName, $shortcut) = explode('|', $name, 2);
|
||||
}
|
||||
|
||||
if (is_bool($defaultValue)) {
|
||||
// Treat the following two cases identically:
|
||||
// - 'foo' => InputOption::VALUE_OPTIONAL
|
||||
// - 'foo' => null
|
||||
// The first form is preferred, but we will convert the value
|
||||
// to 'null' for storage as the option default value.
|
||||
if ($defaultValue === InputOption::VALUE_OPTIONAL) {
|
||||
$defaultValue = null;
|
||||
}
|
||||
|
||||
if ($defaultValue === false) {
|
||||
$explicitOptions[$fullName] = new InputOption($fullName, $shortcut, InputOption::VALUE_NONE, $description);
|
||||
} elseif ($defaultValue === InputOption::VALUE_REQUIRED) {
|
||||
$explicitOptions[$fullName] = new InputOption($fullName, $shortcut, InputOption::VALUE_REQUIRED, $description);
|
||||
} elseif (is_array($defaultValue)) {
|
||||
$optionality = count($defaultValue) ? InputOption::VALUE_OPTIONAL : InputOption::VALUE_REQUIRED;
|
||||
$explicitOptions[$fullName] = new InputOption(
|
||||
$fullName,
|
||||
$shortcut,
|
||||
InputOption::VALUE_IS_ARRAY | $optionality,
|
||||
$description,
|
||||
count($defaultValue) ? $defaultValue : null
|
||||
);
|
||||
} else {
|
||||
$explicitOptions[$fullName] = new InputOption($fullName, $shortcut, InputOption::VALUE_OPTIONAL, $description, $defaultValue);
|
||||
}
|
||||
@@ -460,7 +631,7 @@ class CommandInfo
|
||||
$result = new DefaultsWithDescriptions();
|
||||
$params = $this->reflection->getParameters();
|
||||
$optionsFromParameters = $this->determineOptionsFromParameters();
|
||||
if (!empty($optionsFromParameters)) {
|
||||
if ($this->lastParameterIsOptionsArray()) {
|
||||
array_pop($params);
|
||||
}
|
||||
foreach ($params as $param) {
|
||||
@@ -514,14 +685,26 @@ class CommandInfo
|
||||
return $param->getDefaultValue();
|
||||
}
|
||||
|
||||
protected function lastParameterName()
|
||||
/**
|
||||
* Determine if the last argument contains $options.
|
||||
*
|
||||
* Two forms indicate options:
|
||||
* - $options = []
|
||||
* - $options = ['flag' => 'default-value']
|
||||
*
|
||||
* Any other form, including `array $foo`, is not options.
|
||||
*/
|
||||
protected function lastParameterIsOptionsArray()
|
||||
{
|
||||
$params = $this->reflection->getParameters();
|
||||
$param = end($params);
|
||||
if (!$param) {
|
||||
return '';
|
||||
if (empty($params)) {
|
||||
return [];
|
||||
}
|
||||
return $param->name;
|
||||
$param = end($params);
|
||||
if (!$param->isDefaultValueAvailable()) {
|
||||
return [];
|
||||
}
|
||||
return is_array($param->getDefaultValue());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -529,7 +712,7 @@ class CommandInfo
|
||||
* is not associative if its keys are numeric, and numbered sequentially
|
||||
* from zero. All other arrays are considered to be associative.
|
||||
*
|
||||
* @param arrau $arr The array
|
||||
* @param array $arr The array
|
||||
* @return boolean
|
||||
*/
|
||||
protected function isAssoc($arr)
|
||||
|
||||
87
lib/composer/vendor/consolidation/annotated-command/src/Parser/CommandInfoDeserializer.php
vendored
Normal file
87
lib/composer/vendor/consolidation/annotated-command/src/Parser/CommandInfoDeserializer.php
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Parser;
|
||||
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Consolidation\AnnotatedCommand\Parser\Internal\CommandDocBlockParser;
|
||||
use Consolidation\AnnotatedCommand\Parser\Internal\CommandDocBlockParserFactory;
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
|
||||
/**
|
||||
* Deserialize a CommandInfo object
|
||||
*/
|
||||
class CommandInfoDeserializer
|
||||
{
|
||||
// TODO: in a future version, move CommandInfo::deserialize here
|
||||
public function deserialize($data)
|
||||
{
|
||||
return CommandInfo::deserialize((array)$data);
|
||||
}
|
||||
|
||||
protected static function cachedMethodExists($cache)
|
||||
{
|
||||
return method_exists($cache['class'], $cache['method_name']);
|
||||
}
|
||||
|
||||
public static function isValidSerializedData($cache)
|
||||
{
|
||||
return
|
||||
isset($cache['schema']) &&
|
||||
isset($cache['method_name']) &&
|
||||
isset($cache['mtime']) &&
|
||||
($cache['schema'] > 0) &&
|
||||
($cache['schema'] <= CommandInfo::SERIALIZATION_SCHEMA_VERSION) &&
|
||||
self::cachedMethodExists($cache);
|
||||
}
|
||||
|
||||
public function constructFromCache(CommandInfo $commandInfo, $info_array)
|
||||
{
|
||||
$info_array += $this->defaultSerializationData();
|
||||
|
||||
$commandInfo
|
||||
->setName($info_array['name'])
|
||||
->replaceRawAnnotations($info_array['annotations'])
|
||||
->setAliases($info_array['aliases'])
|
||||
->setHelp($info_array['help'])
|
||||
->setDescription($info_array['description'])
|
||||
->replaceExampleUsages($info_array['example_usages'])
|
||||
->setReturnType($info_array['return_type'])
|
||||
;
|
||||
|
||||
$this->constructDefaultsWithDescriptions($commandInfo->arguments(), (array)$info_array['arguments']);
|
||||
$this->constructDefaultsWithDescriptions($commandInfo->options(), (array)$info_array['options']);
|
||||
}
|
||||
|
||||
protected function constructDefaultsWithDescriptions(DefaultsWithDescriptions $defaults, $data)
|
||||
{
|
||||
foreach ($data as $key => $info) {
|
||||
$info = (array)$info;
|
||||
$defaults->add($key, $info['description']);
|
||||
if (array_key_exists('default', $info)) {
|
||||
$defaults->setDefaultValue($key, $info['default']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Default data. Everything should be provided during serialization;
|
||||
* this is just as a fallback for unusual circumstances.
|
||||
* @return array
|
||||
*/
|
||||
protected function defaultSerializationData()
|
||||
{
|
||||
return [
|
||||
'name' => '',
|
||||
'description' => '',
|
||||
'help' => '',
|
||||
'aliases' => [],
|
||||
'annotations' => [],
|
||||
'example_usages' => [],
|
||||
'return_type' => [],
|
||||
'parameters' => [],
|
||||
'arguments' => [],
|
||||
'options' => [],
|
||||
'mtime' => 0,
|
||||
];
|
||||
}
|
||||
}
|
||||
59
lib/composer/vendor/consolidation/annotated-command/src/Parser/CommandInfoSerializer.php
vendored
Normal file
59
lib/composer/vendor/consolidation/annotated-command/src/Parser/CommandInfoSerializer.php
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Parser;
|
||||
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Consolidation\AnnotatedCommand\Parser\Internal\CommandDocBlockParser;
|
||||
use Consolidation\AnnotatedCommand\Parser\Internal\CommandDocBlockParserFactory;
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
|
||||
/**
|
||||
* Serialize a CommandInfo object
|
||||
*/
|
||||
class CommandInfoSerializer
|
||||
{
|
||||
public function serialize(CommandInfo $commandInfo)
|
||||
{
|
||||
$allAnnotations = $commandInfo->getAnnotations();
|
||||
$path = $allAnnotations['_path'];
|
||||
$className = $allAnnotations['_classname'];
|
||||
|
||||
// Include the minimum information for command info (including placeholder records)
|
||||
$info = [
|
||||
'schema' => CommandInfo::SERIALIZATION_SCHEMA_VERSION,
|
||||
'class' => $className,
|
||||
'method_name' => $commandInfo->getMethodName(),
|
||||
'mtime' => filemtime($path),
|
||||
];
|
||||
|
||||
// If this is a valid method / hook, then add more information.
|
||||
if ($commandInfo->valid()) {
|
||||
$info += [
|
||||
'name' => $commandInfo->getName(),
|
||||
'description' => $commandInfo->getDescription(),
|
||||
'help' => $commandInfo->getHelp(),
|
||||
'aliases' => $commandInfo->getAliases(),
|
||||
'annotations' => $commandInfo->getRawAnnotations()->getArrayCopy(),
|
||||
'example_usages' => $commandInfo->getExampleUsages(),
|
||||
'return_type' => $commandInfo->getReturnType(),
|
||||
];
|
||||
$info['arguments'] = $this->serializeDefaultsWithDescriptions($commandInfo->arguments());
|
||||
$info['options'] = $this->serializeDefaultsWithDescriptions($commandInfo->options());
|
||||
}
|
||||
|
||||
return $info;
|
||||
}
|
||||
|
||||
protected function serializeDefaultsWithDescriptions(DefaultsWithDescriptions $defaults)
|
||||
{
|
||||
$result = [];
|
||||
foreach ($defaults->getValues() as $key => $val) {
|
||||
$result[$key] = [
|
||||
'description' => $defaults->getDescription($key),
|
||||
];
|
||||
if ($defaults->hasDefault($key)) {
|
||||
$result[$key]['default'] = $val;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -32,7 +32,9 @@ class DefaultsWithDescriptions
|
||||
public function __construct($values = [], $defaultDefault = null)
|
||||
{
|
||||
$this->values = $values;
|
||||
$this->hasDefault = [];
|
||||
$this->hasDefault = array_filter($this->values, function ($value) {
|
||||
return isset($value);
|
||||
});
|
||||
$this->descriptions = [];
|
||||
$this->defaultDefault = $defaultDefault;
|
||||
}
|
||||
|
||||
@@ -1,252 +0,0 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Parser\Internal;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfo;
|
||||
use Consolidation\AnnotatedCommand\Parser\DefaultsWithDescriptions;
|
||||
|
||||
/**
|
||||
* Given a class and method name, parse the annotations in the
|
||||
* DocBlock comment, and provide accessor methods for all of
|
||||
* the elements that are needed to create an annotated Command.
|
||||
*/
|
||||
abstract class AbstractCommandDocBlockParser
|
||||
{
|
||||
/**
|
||||
* @var CommandInfo
|
||||
*/
|
||||
protected $commandInfo;
|
||||
|
||||
/**
|
||||
* @var \ReflectionMethod
|
||||
*/
|
||||
protected $reflection;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $tagProcessors = [
|
||||
'command' => 'processCommandTag',
|
||||
'name' => 'processCommandTag',
|
||||
'arg' => 'processArgumentTag',
|
||||
'param' => 'processParamTag',
|
||||
'return' => 'processReturnTag',
|
||||
'option' => 'processOptionTag',
|
||||
'default' => 'processDefaultTag',
|
||||
'aliases' => 'processAliases',
|
||||
'usage' => 'processUsageTag',
|
||||
'description' => 'processAlternateDescriptionTag',
|
||||
'desc' => 'processAlternateDescriptionTag',
|
||||
];
|
||||
|
||||
public function __construct(CommandInfo $commandInfo, \ReflectionMethod $reflection)
|
||||
{
|
||||
$this->commandInfo = $commandInfo;
|
||||
$this->reflection = $reflection;
|
||||
}
|
||||
|
||||
protected function processAllTags($phpdoc)
|
||||
{
|
||||
// Iterate over all of the tags, and process them as necessary.
|
||||
foreach ($phpdoc->getTags() as $tag) {
|
||||
$processFn = [$this, 'processGenericTag'];
|
||||
if (array_key_exists($tag->getName(), $this->tagProcessors)) {
|
||||
$processFn = [$this, $this->tagProcessors[$tag->getName()]];
|
||||
}
|
||||
$processFn($tag);
|
||||
}
|
||||
}
|
||||
|
||||
abstract protected function getTagContents($tag);
|
||||
|
||||
/**
|
||||
* Parse the docBlock comment for this command, and set the
|
||||
* fields of this class with the data thereby obtained.
|
||||
*/
|
||||
abstract public function parse();
|
||||
|
||||
/**
|
||||
* Save any tag that we do not explicitly recognize in the
|
||||
* 'otherAnnotations' map.
|
||||
*/
|
||||
protected function processGenericTag($tag)
|
||||
{
|
||||
$this->commandInfo->addAnnotation($tag->getName(), $this->getTagContents($tag));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the name of the command from a @command or @name annotation.
|
||||
*/
|
||||
protected function processCommandTag($tag)
|
||||
{
|
||||
$commandName = $this->getTagContents($tag);
|
||||
$this->commandInfo->setName($commandName);
|
||||
// We also store the name in the 'other annotations' so that is is
|
||||
// possible to determine if the method had a @command annotation.
|
||||
$this->commandInfo->addAnnotation($tag->getName(), $commandName);
|
||||
}
|
||||
|
||||
/**
|
||||
* The @description and @desc annotations may be used in
|
||||
* place of the synopsis (which we call 'description').
|
||||
* This is discouraged.
|
||||
*
|
||||
* @deprecated
|
||||
*/
|
||||
protected function processAlternateDescriptionTag($tag)
|
||||
{
|
||||
$this->commandInfo->setDescription($this->getTagContents($tag));
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @arg annotation in our argument descriptions.
|
||||
*/
|
||||
protected function processArgumentTag($tag)
|
||||
{
|
||||
if (!$this->pregMatchNameAndDescription((string)$tag->getDescription(), $match)) {
|
||||
return;
|
||||
}
|
||||
$this->addOptionOrArgumentTag($tag, $this->commandInfo->arguments(), $match);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from an @option annotation in our option descriptions.
|
||||
*/
|
||||
protected function processOptionTag($tag)
|
||||
{
|
||||
if (!$this->pregMatchOptionNameAndDescription((string)$tag->getDescription(), $match)) {
|
||||
return;
|
||||
}
|
||||
$this->addOptionOrArgumentTag($tag, $this->commandInfo->options(), $match);
|
||||
}
|
||||
|
||||
protected function addOptionOrArgumentTag($tag, DefaultsWithDescriptions $set, $nameAndDescription)
|
||||
{
|
||||
$variableName = $this->commandInfo->findMatchingOption($nameAndDescription['name']);
|
||||
$desc = $nameAndDescription['description'];
|
||||
$description = static::removeLineBreaks($desc);
|
||||
$set->add($variableName, $description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @default annotation in our argument or option store,
|
||||
* as appropriate.
|
||||
*/
|
||||
protected function processDefaultTag($tag)
|
||||
{
|
||||
if (!$this->pregMatchNameAndDescription((string)$tag->getDescription(), $match)) {
|
||||
return;
|
||||
}
|
||||
$variableName = $match['name'];
|
||||
$defaultValue = $this->interpretDefaultValue($match['description']);
|
||||
if ($this->commandInfo->arguments()->exists($variableName)) {
|
||||
$this->commandInfo->arguments()->setDefaultValue($variableName, $defaultValue);
|
||||
return;
|
||||
}
|
||||
$variableName = $this->commandInfo->findMatchingOption($variableName);
|
||||
if ($this->commandInfo->options()->exists($variableName)) {
|
||||
$this->commandInfo->options()->setDefaultValue($variableName, $defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @usage annotation in our example usage list.
|
||||
*/
|
||||
protected function processUsageTag($tag)
|
||||
{
|
||||
$lines = explode("\n", $this->getTagContents($tag));
|
||||
$usage = array_shift($lines);
|
||||
$description = static::removeLineBreaks(implode("\n", $lines));
|
||||
|
||||
$this->commandInfo->setExampleUsage($usage, $description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process the comma-separated list of aliases
|
||||
*/
|
||||
protected function processAliases($tag)
|
||||
{
|
||||
$this->commandInfo->setAliases((string)$tag->getDescription());
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @param annotation in our argument descriptions.
|
||||
*/
|
||||
protected function processParamTag($tag)
|
||||
{
|
||||
$variableName = $tag->getVariableName();
|
||||
$variableName = str_replace('$', '', $variableName);
|
||||
$description = static::removeLineBreaks((string)$tag->getDescription());
|
||||
if ($variableName == $this->commandInfo->optionParamName()) {
|
||||
return;
|
||||
}
|
||||
$this->commandInfo->arguments()->add($variableName, $description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @return annotation in our argument descriptions.
|
||||
*/
|
||||
abstract protected function processReturnTag($tag);
|
||||
|
||||
protected function interpretDefaultValue($defaultValue)
|
||||
{
|
||||
$defaults = [
|
||||
'null' => null,
|
||||
'true' => true,
|
||||
'false' => false,
|
||||
"''" => '',
|
||||
'[]' => [],
|
||||
];
|
||||
foreach ($defaults as $defaultName => $defaultTypedValue) {
|
||||
if ($defaultValue == $defaultName) {
|
||||
return $defaultTypedValue;
|
||||
}
|
||||
}
|
||||
return $defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a docblock description in the form "$variable description",
|
||||
* return the variable name and description via the 'match' parameter.
|
||||
*/
|
||||
protected function pregMatchNameAndDescription($source, &$match)
|
||||
{
|
||||
$nameRegEx = '\\$(?P<name>[^ \t]+)[ \t]+';
|
||||
$descriptionRegEx = '(?P<description>.*)';
|
||||
$optionRegEx = "/{$nameRegEx}{$descriptionRegEx}/s";
|
||||
|
||||
return preg_match($optionRegEx, $source, $match);
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a docblock description in the form "$variable description",
|
||||
* return the variable name and description via the 'match' parameter.
|
||||
*/
|
||||
protected function pregMatchOptionNameAndDescription($source, &$match)
|
||||
{
|
||||
// Strip type and $ from the text before the @option name, if present.
|
||||
$source = preg_replace('/^[a-zA-Z]* ?\\$/', '', $source);
|
||||
$nameRegEx = '(?P<name>[^ \t]+)[ \t]+';
|
||||
$descriptionRegEx = '(?P<description>.*)';
|
||||
$optionRegEx = "/{$nameRegEx}{$descriptionRegEx}/s";
|
||||
|
||||
return preg_match($optionRegEx, $source, $match);
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a list that might be 'a b c' or 'a, b, c' or 'a,b,c',
|
||||
* convert the data into the last of these forms.
|
||||
*/
|
||||
protected static function convertListToCommaSeparated($text)
|
||||
{
|
||||
return preg_replace('#[ \t\n\r,]+#', ',', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Take a multiline description and convert it into a single
|
||||
* long unbroken line.
|
||||
*/
|
||||
protected static function removeLineBreaks($text)
|
||||
{
|
||||
return trim(preg_replace('#[ \t\n\r]+#', ' ', $text));
|
||||
}
|
||||
}
|
||||
322
lib/composer/vendor/consolidation/annotated-command/src/Parser/Internal/BespokeDocBlockParser.php
vendored
Normal file
322
lib/composer/vendor/consolidation/annotated-command/src/Parser/Internal/BespokeDocBlockParser.php
vendored
Normal file
@@ -0,0 +1,322 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Parser\Internal;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfo;
|
||||
use Consolidation\AnnotatedCommand\Parser\DefaultsWithDescriptions;
|
||||
|
||||
/**
|
||||
* Given a class and method name, parse the annotations in the
|
||||
* DocBlock comment, and provide accessor methods for all of
|
||||
* the elements that are needed to create an annotated Command.
|
||||
*/
|
||||
class BespokeDocBlockParser
|
||||
{
|
||||
protected $fqcnCache;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $tagProcessors = [
|
||||
'command' => 'processCommandTag',
|
||||
'name' => 'processCommandTag',
|
||||
'arg' => 'processArgumentTag',
|
||||
'param' => 'processArgumentTag',
|
||||
'return' => 'processReturnTag',
|
||||
'option' => 'processOptionTag',
|
||||
'default' => 'processDefaultTag',
|
||||
'aliases' => 'processAliases',
|
||||
'usage' => 'processUsageTag',
|
||||
'description' => 'processAlternateDescriptionTag',
|
||||
'desc' => 'processAlternateDescriptionTag',
|
||||
];
|
||||
|
||||
public function __construct(CommandInfo $commandInfo, \ReflectionMethod $reflection, $fqcnCache = null)
|
||||
{
|
||||
$this->commandInfo = $commandInfo;
|
||||
$this->reflection = $reflection;
|
||||
$this->fqcnCache = $fqcnCache ?: new FullyQualifiedClassCache();
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the docBlock comment for this command, and set the
|
||||
* fields of this class with the data thereby obtained.
|
||||
*/
|
||||
public function parse()
|
||||
{
|
||||
$doc = $this->reflection->getDocComment();
|
||||
$this->parseDocBlock($doc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save any tag that we do not explicitly recognize in the
|
||||
* 'otherAnnotations' map.
|
||||
*/
|
||||
protected function processGenericTag($tag)
|
||||
{
|
||||
$this->commandInfo->addAnnotation($tag->getTag(), $tag->getContent());
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the name of the command from a @command or @name annotation.
|
||||
*/
|
||||
protected function processCommandTag($tag)
|
||||
{
|
||||
if (!$tag->hasWordAndDescription($matches)) {
|
||||
throw new \Exception('Could not determine command name from tag ' . (string)$tag);
|
||||
}
|
||||
$commandName = $matches['word'];
|
||||
$this->commandInfo->setName($commandName);
|
||||
// We also store the name in the 'other annotations' so that is is
|
||||
// possible to determine if the method had a @command annotation.
|
||||
$this->commandInfo->addAnnotation($tag->getTag(), $commandName);
|
||||
}
|
||||
|
||||
/**
|
||||
* The @description and @desc annotations may be used in
|
||||
* place of the synopsis (which we call 'description').
|
||||
* This is discouraged.
|
||||
*
|
||||
* @deprecated
|
||||
*/
|
||||
protected function processAlternateDescriptionTag($tag)
|
||||
{
|
||||
$this->commandInfo->setDescription($tag->getContent());
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @arg annotation in our argument descriptions.
|
||||
*/
|
||||
protected function processArgumentTag($tag)
|
||||
{
|
||||
if (!$tag->hasVariable($matches)) {
|
||||
throw new \Exception('Could not determine argument name from tag ' . (string)$tag);
|
||||
}
|
||||
if ($matches['variable'] == $this->optionParamName()) {
|
||||
return;
|
||||
}
|
||||
$this->addOptionOrArgumentTag($tag, $this->commandInfo->arguments(), $matches['variable'], $matches['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from an @option annotation in our option descriptions.
|
||||
*/
|
||||
protected function processOptionTag($tag)
|
||||
{
|
||||
if (!$tag->hasVariable($matches)) {
|
||||
throw new \Exception('Could not determine option name from tag ' . (string)$tag);
|
||||
}
|
||||
$this->addOptionOrArgumentTag($tag, $this->commandInfo->options(), $matches['variable'], $matches['description']);
|
||||
}
|
||||
|
||||
protected function addOptionOrArgumentTag($tag, DefaultsWithDescriptions $set, $name, $description)
|
||||
{
|
||||
$variableName = $this->commandInfo->findMatchingOption($name);
|
||||
$description = static::removeLineBreaks($description);
|
||||
$set->add($variableName, $description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @default annotation in our argument or option store,
|
||||
* as appropriate.
|
||||
*/
|
||||
protected function processDefaultTag($tag)
|
||||
{
|
||||
if (!$tag->hasVariable($matches)) {
|
||||
throw new \Exception('Could not determine parameter name for default value from tag ' . (string)$tag);
|
||||
}
|
||||
$variableName = $matches['variable'];
|
||||
$defaultValue = $this->interpretDefaultValue($matches['description']);
|
||||
if ($this->commandInfo->arguments()->exists($variableName)) {
|
||||
$this->commandInfo->arguments()->setDefaultValue($variableName, $defaultValue);
|
||||
return;
|
||||
}
|
||||
$variableName = $this->commandInfo->findMatchingOption($variableName);
|
||||
if ($this->commandInfo->options()->exists($variableName)) {
|
||||
$this->commandInfo->options()->setDefaultValue($variableName, $defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @usage annotation in our example usage list.
|
||||
*/
|
||||
protected function processUsageTag($tag)
|
||||
{
|
||||
$lines = explode("\n", $tag->getContent());
|
||||
$usage = trim(array_shift($lines));
|
||||
$description = static::removeLineBreaks(implode("\n", array_map(function ($line) {
|
||||
return trim($line);
|
||||
}, $lines)));
|
||||
|
||||
$this->commandInfo->setExampleUsage($usage, $description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process the comma-separated list of aliases
|
||||
*/
|
||||
protected function processAliases($tag)
|
||||
{
|
||||
$this->commandInfo->setAliases((string)$tag->getContent());
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @return annotation in our argument descriptions.
|
||||
*/
|
||||
protected function processReturnTag($tag)
|
||||
{
|
||||
// The return type might be a variable -- '$this'. It will
|
||||
// usually be a type, like RowsOfFields, or \Namespace\RowsOfFields.
|
||||
if (!$tag->hasVariableAndDescription($matches)) {
|
||||
throw new \Exception('Could not determine return type from tag ' . (string)$tag);
|
||||
}
|
||||
// Look at namespace and `use` statments to make returnType a fqdn
|
||||
$returnType = $matches['variable'];
|
||||
$returnType = $this->findFullyQualifiedClass($returnType);
|
||||
$this->commandInfo->setReturnType($returnType);
|
||||
}
|
||||
|
||||
protected function findFullyQualifiedClass($className)
|
||||
{
|
||||
if (strpos($className, '\\') !== false) {
|
||||
return $className;
|
||||
}
|
||||
|
||||
return $this->fqcnCache->qualify($this->reflection->getFileName(), $className);
|
||||
}
|
||||
|
||||
private function parseDocBlock($doc)
|
||||
{
|
||||
// Remove the leading /** and the trailing */
|
||||
$doc = preg_replace('#^\s*/\*+\s*#', '', $doc);
|
||||
$doc = preg_replace('#\s*\*+/\s*#', '', $doc);
|
||||
|
||||
// Nothing left? Exit.
|
||||
if (empty($doc)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$tagFactory = new TagFactory();
|
||||
$lines = [];
|
||||
|
||||
foreach (explode("\n", $doc) as $row) {
|
||||
// Remove trailing whitespace and leading space + '*'s
|
||||
$row = rtrim($row);
|
||||
$row = preg_replace('#^[ \t]*\**#', '', $row);
|
||||
|
||||
if (!$tagFactory->parseLine($row)) {
|
||||
$lines[] = $row;
|
||||
}
|
||||
}
|
||||
|
||||
$this->processDescriptionAndHelp($lines);
|
||||
$this->processAllTags($tagFactory->getTags());
|
||||
}
|
||||
|
||||
protected function processDescriptionAndHelp($lines)
|
||||
{
|
||||
// Trim all of the lines individually.
|
||||
$lines =
|
||||
array_map(
|
||||
function ($line) {
|
||||
return trim($line);
|
||||
},
|
||||
$lines
|
||||
);
|
||||
|
||||
// Everything up to the first blank line goes in the description.
|
||||
$description = array_shift($lines);
|
||||
while ($this->nextLineIsNotEmpty($lines)) {
|
||||
$description .= ' ' . array_shift($lines);
|
||||
}
|
||||
|
||||
// Everything else goes in the help.
|
||||
$help = trim(implode("\n", $lines));
|
||||
|
||||
$this->commandInfo->setDescription($description);
|
||||
$this->commandInfo->setHelp($help);
|
||||
}
|
||||
|
||||
protected function nextLineIsNotEmpty($lines)
|
||||
{
|
||||
if (empty($lines)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$nextLine = trim($lines[0]);
|
||||
return !empty($nextLine);
|
||||
}
|
||||
|
||||
protected function processAllTags($tags)
|
||||
{
|
||||
// Iterate over all of the tags, and process them as necessary.
|
||||
foreach ($tags as $tag) {
|
||||
$processFn = [$this, 'processGenericTag'];
|
||||
if (array_key_exists($tag->getTag(), $this->tagProcessors)) {
|
||||
$processFn = [$this, $this->tagProcessors[$tag->getTag()]];
|
||||
}
|
||||
$processFn($tag);
|
||||
}
|
||||
}
|
||||
|
||||
protected function lastParameterName()
|
||||
{
|
||||
$params = $this->commandInfo->getParameters();
|
||||
$param = end($params);
|
||||
if (!$param) {
|
||||
return '';
|
||||
}
|
||||
return $param->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the name of the last parameter if it holds the options.
|
||||
*/
|
||||
public function optionParamName()
|
||||
{
|
||||
// Remember the name of the last parameter, if it holds the options.
|
||||
// We will use this information to ignore @param annotations for the options.
|
||||
if (!isset($this->optionParamName)) {
|
||||
$this->optionParamName = '';
|
||||
$options = $this->commandInfo->options();
|
||||
if (!$options->isEmpty()) {
|
||||
$this->optionParamName = $this->lastParameterName();
|
||||
}
|
||||
}
|
||||
|
||||
return $this->optionParamName;
|
||||
}
|
||||
|
||||
protected function interpretDefaultValue($defaultValue)
|
||||
{
|
||||
$defaults = [
|
||||
'null' => null,
|
||||
'true' => true,
|
||||
'false' => false,
|
||||
"''" => '',
|
||||
'[]' => [],
|
||||
];
|
||||
foreach ($defaults as $defaultName => $defaultTypedValue) {
|
||||
if ($defaultValue == $defaultName) {
|
||||
return $defaultTypedValue;
|
||||
}
|
||||
}
|
||||
return $defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a list that might be 'a b c' or 'a, b, c' or 'a,b,c',
|
||||
* convert the data into the last of these forms.
|
||||
*/
|
||||
protected static function convertListToCommaSeparated($text)
|
||||
{
|
||||
return preg_replace('#[ \t\n\r,]+#', ',', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Take a multiline description and convert it into a single
|
||||
* long unbroken line.
|
||||
*/
|
||||
protected static function removeLineBreaks($text)
|
||||
{
|
||||
return trim(preg_replace('#[ \t\n\r]+#', ' ', $text));
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Parser\Internal;
|
||||
|
||||
use phpDocumentor\Reflection\DocBlock;
|
||||
use phpDocumentor\Reflection\DocBlock\Tag\ParamTag;
|
||||
use phpDocumentor\Reflection\DocBlock\Tag\ReturnTag;
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfo;
|
||||
use Consolidation\AnnotatedCommand\Parser\DefaultsWithDescriptions;
|
||||
|
||||
/**
|
||||
* Given a class and method name, parse the annotations in the
|
||||
* DocBlock comment, and provide accessor methods for all of
|
||||
* the elements that are needed to create an annotated Command.
|
||||
*/
|
||||
class CommandDocBlockParser2 extends AbstractCommandDocBlockParser
|
||||
{
|
||||
/**
|
||||
* Parse the docBlock comment for this command, and set the
|
||||
* fields of this class with the data thereby obtained.
|
||||
*/
|
||||
public function parse()
|
||||
{
|
||||
$docblockComment = $this->reflection->getDocComment();
|
||||
$phpdoc = new DocBlock($docblockComment);
|
||||
|
||||
// First set the description (synopsis) and help.
|
||||
$this->commandInfo->setDescription((string)$phpdoc->getShortDescription());
|
||||
$this->commandInfo->setHelp((string)$phpdoc->getLongDescription());
|
||||
|
||||
$this->processAllTags($phpdoc);
|
||||
}
|
||||
|
||||
protected function getTagContents($tag)
|
||||
{
|
||||
return $tag->getContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @arg annotation in our argument descriptions.
|
||||
*/
|
||||
protected function processArgumentTag($tag)
|
||||
{
|
||||
if (!$this->pregMatchNameAndDescription((string)$tag->getDescription(), $match)) {
|
||||
return;
|
||||
}
|
||||
$this->addOptionOrArgumentTag($tag, $this->commandInfo->arguments(), $match);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @param annotation in our argument descriptions.
|
||||
*/
|
||||
protected function processParamTag($tag)
|
||||
{
|
||||
if (!$tag instanceof ParamTag) {
|
||||
return;
|
||||
}
|
||||
return parent::processParamTag($tag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @return annotation in our argument descriptions.
|
||||
*/
|
||||
protected function processReturnTag($tag)
|
||||
{
|
||||
if (!$tag instanceof ReturnTag) {
|
||||
return;
|
||||
}
|
||||
$this->commandInfo->setReturnType($tag->getType());
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Parser\Internal;
|
||||
|
||||
use phpDocumentor\Reflection\DocBlock\Tags\Param;
|
||||
use phpDocumentor\Reflection\DocBlock\Tags\Return_;
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfo;
|
||||
use Consolidation\AnnotatedCommand\Parser\DefaultsWithDescriptions;
|
||||
|
||||
/**
|
||||
* Given a class and method name, parse the annotations in the
|
||||
* DocBlock comment, and provide accessor methods for all of
|
||||
* the elements that are needed to create an annotated Command.
|
||||
*/
|
||||
class CommandDocBlockParser3 extends AbstractCommandDocBlockParser
|
||||
{
|
||||
/**
|
||||
* Parse the docBlock comment for this command, and set the
|
||||
* fields of this class with the data thereby obtained.
|
||||
*/
|
||||
public function parse()
|
||||
{
|
||||
// DocBlockFactory::create fails if the comment is empty.
|
||||
$docComment = $this->reflection->getDocComment();
|
||||
if (empty($docComment)) {
|
||||
return;
|
||||
}
|
||||
$phpdoc = $this->createDocBlock();
|
||||
|
||||
// First set the description (synopsis) and help.
|
||||
$this->commandInfo->setDescription((string)$phpdoc->getSummary());
|
||||
$this->commandInfo->setHelp((string)$phpdoc->getDescription());
|
||||
|
||||
$this->processAllTags($phpdoc);
|
||||
}
|
||||
|
||||
public function createDocBlock()
|
||||
{
|
||||
$docBlockFactory = \phpDocumentor\Reflection\DocBlockFactory::createInstance();
|
||||
$contextFactory = new \phpDocumentor\Reflection\Types\ContextFactory();
|
||||
|
||||
return $docBlockFactory->create(
|
||||
$this->reflection,
|
||||
$contextFactory->createFromReflector($this->reflection)
|
||||
);
|
||||
}
|
||||
|
||||
protected function getTagContents($tag)
|
||||
{
|
||||
return (string)$tag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @param annotation in our argument descriptions.
|
||||
*/
|
||||
protected function processParamTag($tag)
|
||||
{
|
||||
if (!$tag instanceof Param) {
|
||||
return;
|
||||
}
|
||||
return parent::processParamTag($tag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the data from a @return annotation in our argument descriptions.
|
||||
*/
|
||||
protected function processReturnTag($tag)
|
||||
{
|
||||
if (!$tag instanceof Return_) {
|
||||
return;
|
||||
}
|
||||
// If there is a spurrious trailing space on the return type, remove it.
|
||||
$this->commandInfo->setReturnType(trim($this->getTagContents($tag)));
|
||||
}
|
||||
}
|
||||
@@ -15,14 +15,6 @@ class CommandDocBlockParserFactory
|
||||
|
||||
private static function create(CommandInfo $commandInfo, \ReflectionMethod $reflection)
|
||||
{
|
||||
if (static::hasReflectionDocBlock3()) {
|
||||
return new CommandDocBlockParser3($commandInfo, $reflection);
|
||||
}
|
||||
return new CommandDocBlockParser2($commandInfo, $reflection);
|
||||
}
|
||||
|
||||
private static function hasReflectionDocBlock3()
|
||||
{
|
||||
return class_exists('phpDocumentor\Reflection\DocBlockFactory') && class_exists('phpDocumentor\Reflection\Types\ContextFactory');
|
||||
return new BespokeDocBlockParser($commandInfo, $reflection);
|
||||
}
|
||||
}
|
||||
|
||||
49
lib/composer/vendor/consolidation/annotated-command/src/Parser/Internal/CsvUtils.php
vendored
Normal file
49
lib/composer/vendor/consolidation/annotated-command/src/Parser/Internal/CsvUtils.php
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Parser\Internal;
|
||||
|
||||
/**
|
||||
* Methods to convert to / from a csv string.
|
||||
*/
|
||||
class CsvUtils
|
||||
{
|
||||
/**
|
||||
* Ensure that the provided data is a string.
|
||||
*
|
||||
* @param string|array $data The data to convert to a string.
|
||||
* @return string
|
||||
*/
|
||||
public static function toString($data)
|
||||
{
|
||||
if (is_array($data)) {
|
||||
return static::csvEscape($data);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a string to a csv.
|
||||
*/
|
||||
public static function csvEscape(array $data, $delimiter = ',')
|
||||
{
|
||||
$buffer = fopen('php://temp', 'r+');
|
||||
fputcsv($buffer, $data, $delimiter);
|
||||
rewind($buffer);
|
||||
$csv = fgets($buffer);
|
||||
fclose($buffer);
|
||||
return rtrim($csv);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a specific named annotation for this command.
|
||||
*
|
||||
* @param string|array $data The data to convert to an array.
|
||||
* @return array
|
||||
*/
|
||||
public static function toList($data)
|
||||
{
|
||||
if (!is_array($data)) {
|
||||
return str_getcsv($data);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
155
lib/composer/vendor/consolidation/annotated-command/src/Parser/Internal/DocblockTag.php
vendored
Normal file
155
lib/composer/vendor/consolidation/annotated-command/src/Parser/Internal/DocblockTag.php
vendored
Normal file
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Parser\Internal;
|
||||
|
||||
/**
|
||||
* Hold the tag definition for one tag in a DocBlock.
|
||||
*
|
||||
* The tag can be sliced into the following forms:
|
||||
* - "@tag content"
|
||||
* - "@tag word description"
|
||||
* - "@tag $variable description"
|
||||
* - "@tag word $variable description"
|
||||
*/
|
||||
class DocblockTag
|
||||
{
|
||||
/** @var string Name of the tag */
|
||||
protected $tag;
|
||||
|
||||
/** @var string|null Contents of the tag. */
|
||||
protected $content;
|
||||
|
||||
const TAG_REGEX = '@(?P<tag>[^\s$]+)[\s]*';
|
||||
const VARIABLE_REGEX = '\\$(?P<variable>[^\s$]+)[\s]*';
|
||||
const VARIABLE_OR_WORD_REGEX = '\\$?(?P<variable>[^\s$]+)[\s]*';
|
||||
const TYPE_REGEX = '(?P<type>[^\s$]+)[\s]*';
|
||||
const WORD_REGEX = '(?P<word>[^\s$]+)[\s]*';
|
||||
const DESCRIPTION_REGEX = '(?P<description>.*)';
|
||||
const IS_TAG_REGEX = '/^[*\s]*@/';
|
||||
|
||||
/**
|
||||
* Check if the provided string begins with a tag
|
||||
* @param string $subject
|
||||
* @return bool
|
||||
*/
|
||||
public static function isTag($subject)
|
||||
{
|
||||
return preg_match(self::IS_TAG_REGEX, $subject);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use a regular expression to separate the tag from the content.
|
||||
*
|
||||
* @param string $subject
|
||||
* @param string[] &$matches Sets $matches['tag'] and $matches['description']
|
||||
* @return bool
|
||||
*/
|
||||
public static function splitTagAndContent($subject, &$matches)
|
||||
{
|
||||
$regex = '/' . self::TAG_REGEX . self::DESCRIPTION_REGEX . '/s';
|
||||
return preg_match($regex, $subject, $matches);
|
||||
}
|
||||
|
||||
/**
|
||||
* DockblockTag constructor
|
||||
*/
|
||||
public function __construct($tag, $content = null)
|
||||
{
|
||||
$this->tag = $tag;
|
||||
$this->content = $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add more content onto a tag during parsing.
|
||||
*/
|
||||
public function appendContent($line)
|
||||
{
|
||||
$this->content .= "\n$line";
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the tag - e.g. "@foo description" returns 'foo'
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getTag()
|
||||
{
|
||||
return $this->tag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the content portion of the tag - e.g. "@foo bar baz boz" returns
|
||||
* "bar baz boz"
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getContent()
|
||||
{
|
||||
return $this->content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert tag back into a string.
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
return '@' . $this->getTag() . ' ' . $this->getContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if tag is one of:
|
||||
* - "@tag variable description"
|
||||
* - "@tag $variable description"
|
||||
* - "@tag type $variable description"
|
||||
*
|
||||
* @param string $subject
|
||||
* @param string[] &$matches Sets $matches['variable'] and
|
||||
* $matches['description']; might set $matches['type'].
|
||||
* @return bool
|
||||
*/
|
||||
public function hasVariable(&$matches)
|
||||
{
|
||||
return
|
||||
$this->hasTypeVariableAndDescription($matches) ||
|
||||
$this->hasVariableAndDescription($matches);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if tag is "@tag $variable description"
|
||||
* @param string $subject
|
||||
* @param string[] &$matches Sets $matches['variable'] and
|
||||
* $matches['description']
|
||||
* @return bool
|
||||
*/
|
||||
public function hasVariableAndDescription(&$matches)
|
||||
{
|
||||
$regex = '/^\s*' . self::VARIABLE_OR_WORD_REGEX . self::DESCRIPTION_REGEX . '/s';
|
||||
return preg_match($regex, $this->getContent(), $matches);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if tag is "@tag type $variable description"
|
||||
*
|
||||
* @param string $subject
|
||||
* @param string[] &$matches Sets $matches['variable'],
|
||||
* $matches['description'] and $matches['type'].
|
||||
* @return bool
|
||||
*/
|
||||
public function hasTypeVariableAndDescription(&$matches)
|
||||
{
|
||||
$regex = '/^\s*' . self::TYPE_REGEX . self::VARIABLE_REGEX . self::DESCRIPTION_REGEX . '/s';
|
||||
return preg_match($regex, $this->getContent(), $matches);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if tag is "@tag word description"
|
||||
* @param string $subject
|
||||
* @param string[] &$matches Sets $matches['word'] and
|
||||
* $matches['description']
|
||||
* @return bool
|
||||
*/
|
||||
public function hasWordAndDescription(&$matches)
|
||||
{
|
||||
$regex = '/^\s*' . self::WORD_REGEX . self::DESCRIPTION_REGEX . '/s';
|
||||
return preg_match($regex, $this->getContent(), $matches);
|
||||
}
|
||||
}
|
||||
106
lib/composer/vendor/consolidation/annotated-command/src/Parser/Internal/FullyQualifiedClassCache.php
vendored
Normal file
106
lib/composer/vendor/consolidation/annotated-command/src/Parser/Internal/FullyQualifiedClassCache.php
vendored
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Parser\Internal;
|
||||
|
||||
class FullyQualifiedClassCache
|
||||
{
|
||||
protected $classCache = [];
|
||||
protected $namespaceCache = [];
|
||||
|
||||
public function qualify($filename, $className)
|
||||
{
|
||||
$this->primeCache($filename, $className);
|
||||
return $this->cached($filename, $className);
|
||||
}
|
||||
|
||||
protected function cached($filename, $className)
|
||||
{
|
||||
return isset($this->classCache[$filename][$className]) ? $this->classCache[$filename][$className] : $className;
|
||||
}
|
||||
|
||||
protected function primeCache($filename, $className)
|
||||
{
|
||||
// If the cache has already been primed, do no further work
|
||||
if (isset($this->namespaceCache[$filename])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$handle = fopen($filename, "r");
|
||||
if (!$handle) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$namespaceName = $this->primeNamespaceCache($filename, $handle);
|
||||
$this->primeUseCache($filename, $handle);
|
||||
|
||||
// If there is no 'use' statement for the className, then
|
||||
// generate an effective classname from the namespace
|
||||
if (!isset($this->classCache[$filename][$className])) {
|
||||
$this->classCache[$filename][$className] = $namespaceName . '\\' . $className;
|
||||
}
|
||||
|
||||
fclose($handle);
|
||||
}
|
||||
|
||||
protected function primeNamespaceCache($filename, $handle)
|
||||
{
|
||||
$namespaceName = $this->readNamespace($handle);
|
||||
if (!$namespaceName) {
|
||||
return false;
|
||||
}
|
||||
$this->namespaceCache[$filename] = $namespaceName;
|
||||
return $namespaceName;
|
||||
}
|
||||
|
||||
protected function primeUseCache($filename, $handle)
|
||||
{
|
||||
$usedClasses = $this->readUseStatements($handle);
|
||||
if (empty($usedClasses)) {
|
||||
return false;
|
||||
}
|
||||
$this->classCache[$filename] = $usedClasses;
|
||||
}
|
||||
|
||||
protected function readNamespace($handle)
|
||||
{
|
||||
$namespaceRegex = '#^\s*namespace\s+#';
|
||||
$line = $this->readNextRelevantLine($handle);
|
||||
if (!$line || !preg_match($namespaceRegex, $line)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$namespaceName = preg_replace($namespaceRegex, '', $line);
|
||||
$namespaceName = rtrim($namespaceName, ';');
|
||||
return $namespaceName;
|
||||
}
|
||||
|
||||
protected function readUseStatements($handle)
|
||||
{
|
||||
$useRegex = '#^\s*use\s+#';
|
||||
$result = [];
|
||||
while (true) {
|
||||
$line = $this->readNextRelevantLine($handle);
|
||||
if (!$line || !preg_match($useRegex, $line)) {
|
||||
return $result;
|
||||
}
|
||||
$usedClass = preg_replace($useRegex, '', $line);
|
||||
$usedClass = rtrim($usedClass, ';');
|
||||
$unqualifiedClass = preg_replace('#.*\\\\#', '', $usedClass);
|
||||
// If this is an aliased class, 'use \Foo\Bar as Baz', then adjust
|
||||
if (strpos($usedClass, ' as ')) {
|
||||
$unqualifiedClass = preg_replace('#.*\sas\s+#', '', $usedClass);
|
||||
$usedClass = preg_replace('#\s+as\s+#', '', $usedClass);
|
||||
}
|
||||
$result[$unqualifiedClass] = $usedClass;
|
||||
}
|
||||
}
|
||||
|
||||
protected function readNextRelevantLine($handle)
|
||||
{
|
||||
while (($line = fgets($handle)) !== false) {
|
||||
if (preg_match('#^\s*\w#', $line)) {
|
||||
return trim($line);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
67
lib/composer/vendor/consolidation/annotated-command/src/Parser/Internal/TagFactory.php
vendored
Normal file
67
lib/composer/vendor/consolidation/annotated-command/src/Parser/Internal/TagFactory.php
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand\Parser\Internal;
|
||||
|
||||
/**
|
||||
* Hold some state. Collect tags.
|
||||
*/
|
||||
class TagFactory
|
||||
{
|
||||
/** @var DocblockTag|null Current tag */
|
||||
protected $current;
|
||||
|
||||
/** @var DocblockTag[] All tag */
|
||||
protected $tags;
|
||||
|
||||
/**
|
||||
* DocblockTag constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->current = null;
|
||||
$this->tags = [];
|
||||
}
|
||||
|
||||
public function parseLine($line)
|
||||
{
|
||||
if (DocblockTag::isTag($line)) {
|
||||
return $this->createTag($line);
|
||||
}
|
||||
if (empty($line)) {
|
||||
return $this->storeCurrentTag();
|
||||
}
|
||||
return $this->accumulateContent($line);
|
||||
}
|
||||
|
||||
public function getTags()
|
||||
{
|
||||
$this->storeCurrentTag();
|
||||
return $this->tags;
|
||||
}
|
||||
|
||||
protected function createTag($line)
|
||||
{
|
||||
DocblockTag::splitTagAndContent($line, $matches);
|
||||
$this->storeCurrentTag();
|
||||
$this->current = new DocblockTag($matches['tag'], $matches['description']);
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function storeCurrentTag()
|
||||
{
|
||||
if (!$this->current) {
|
||||
return false;
|
||||
}
|
||||
$this->tags[] = $this->current;
|
||||
$this->current = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function accumulateContent($line)
|
||||
{
|
||||
if (!$this->current) {
|
||||
return false;
|
||||
}
|
||||
$this->current->appendContent($line);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
59
lib/composer/vendor/consolidation/annotated-command/tests/FullyQualifiedClassCacheTests.php
vendored
Normal file
59
lib/composer/vendor/consolidation/annotated-command/tests/FullyQualifiedClassCacheTests.php
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand;
|
||||
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\Options\AlterOptionsCommandEvent;
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfo;
|
||||
use Consolidation\TestUtils\ExampleCommandInfoAlterer;
|
||||
use Symfony\Component\Console\Application;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Input\ArgvInput;
|
||||
use Symfony\Component\Console\Input\StringInput;
|
||||
use Symfony\Component\Console\Output\BufferedOutput;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
use \Consolidation\AnnotatedCommand\Parser\Internal\FullyQualifiedClassCache;
|
||||
|
||||
class FullyQualifiedClassCacheTests extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
function testFqcn()
|
||||
{
|
||||
$reflectionMethod = new \ReflectionMethod('\Consolidation\TestUtils\alpha\AlphaCommandFile', 'exampleTableTwo');
|
||||
$filename = $reflectionMethod->getFileName();
|
||||
|
||||
$fqcnCache = new FullyQualifiedClassCache();
|
||||
|
||||
$handle = fopen($filename, "r");
|
||||
$this->assertTrue($handle !== false);
|
||||
|
||||
$namespaceName = $this->callProtected($fqcnCache, 'readNamespace', [$handle]);
|
||||
|
||||
$this->assertEquals('Consolidation\TestUtils\alpha', $namespaceName);
|
||||
|
||||
$usedClasses = $this->callProtected($fqcnCache, 'readUseStatements', [$handle]);
|
||||
|
||||
$this->assertTrue(isset($usedClasses['RowsOfFields']));
|
||||
$this->assertEquals('Consolidation\OutputFormatters\StructuredData\RowsOfFields', $usedClasses['RowsOfFields']);
|
||||
|
||||
fclose($handle);
|
||||
|
||||
$fqcn = $fqcnCache->qualify($filename, 'RowsOfFields');
|
||||
$this->assertEquals('Consolidation\OutputFormatters\StructuredData\RowsOfFields', $fqcn);
|
||||
|
||||
$fqcn = $fqcnCache->qualify($filename, 'ClassWithoutUse');
|
||||
$this->assertEquals('Consolidation\TestUtils\alpha\ClassWithoutUse', $fqcn);
|
||||
|
||||
$fqcn = $fqcnCache->qualify($filename, 'ExampleAliasedClass');
|
||||
$this->assertEquals('Consolidation\TestUtils\ExampleCommandFile', $fqcn);
|
||||
}
|
||||
|
||||
function callProtected($object, $method, $args = [])
|
||||
{
|
||||
$r = new \ReflectionMethod($object, $method);
|
||||
$r->setAccessible(true);
|
||||
return $r->invokeArgs($object, $args);
|
||||
}
|
||||
}
|
||||
@@ -19,12 +19,12 @@ class ExampleAnnotatedCommand extends AnnotatedCommand
|
||||
/**
|
||||
* Do the main function of the my:cat command.
|
||||
*/
|
||||
public function myCat($one, $two = '', $flip = false)
|
||||
public function myCat($one, $two = '', $multiple = [], $flip = false)
|
||||
{
|
||||
if ($flip) {
|
||||
return "{$two}{$one}";
|
||||
return "{$two}{$one}" . implode('', array_reverse($multiple));
|
||||
}
|
||||
return "{$one}{$two}";
|
||||
return "{$one}{$two}" . implode('', $multiple);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -37,6 +37,8 @@ class ExampleAnnotatedCommand extends AnnotatedCommand
|
||||
* @arg string $one The first parameter.
|
||||
* @arg string $two The other parameter.
|
||||
* @default $two ''
|
||||
* @option array $multiple An array of values
|
||||
* @default $multiple []
|
||||
* @option boolean $flip Whether or not the second parameter should come first in the result.
|
||||
* @aliases c
|
||||
* @usage bet alpha --flip
|
||||
@@ -46,9 +48,10 @@ class ExampleAnnotatedCommand extends AnnotatedCommand
|
||||
{
|
||||
$one = $input->getArgument('one');
|
||||
$two = $input->getArgument('two');
|
||||
$multiple = $input->getOption('multiple');
|
||||
$flip = $input->getOption('flip');
|
||||
|
||||
$result = $this->myCat($one, $two, $flip);
|
||||
$result = $this->myCat($one, $two, $multiple, $flip);
|
||||
|
||||
// We could also just use $output->writeln($result) here,
|
||||
// but calling processResults enables the use of output
|
||||
|
||||
@@ -7,6 +7,7 @@ use Consolidation\AnnotatedCommand\CommandError;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Event\ConsoleCommandEvent;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
/**
|
||||
@@ -32,6 +33,65 @@ class ExampleCommandFile
|
||||
$this->output = $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Import config from a config directory.
|
||||
*
|
||||
* @command config:import
|
||||
* @param $label A config directory label (i.e. a key in \$config_directories array in settings.php).
|
||||
* @interact-config-label
|
||||
* @option preview Format for displaying proposed changes. Recognized values: list, diff.
|
||||
* @option source An arbitrary directory that holds the configuration files. An alternative to label argument
|
||||
* @option partial Allows for partial config imports from the source directory. Only updates and new configs will be processed with this flag (missing configs will not be deleted).
|
||||
* @aliases cim,config-import
|
||||
*/
|
||||
public function import($label = null, $options = ['preview' => 'list', 'source' => InputOption::VALUE_REQUIRED, 'partial' => false])
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the fibonacci sequence between two numbers.
|
||||
*
|
||||
* Graphic output will look like
|
||||
* +----+---+-------------+
|
||||
* | | | |
|
||||
* | |-+-| |
|
||||
* |----+-+-+ |
|
||||
* | | |
|
||||
* | | |
|
||||
* | | |
|
||||
* +--------+-------------+
|
||||
*
|
||||
* @param int $start Number to start from
|
||||
* @param int $steps Number of steps to perform
|
||||
* @param array $opts
|
||||
* @option $graphic Display the sequence graphically using cube
|
||||
* representation
|
||||
*/
|
||||
public function fibonacci($start, $steps, $opts = ['graphic' => false])
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Code sniffer.
|
||||
*
|
||||
* Run the PHP Codesniffer on a file or directory.
|
||||
*
|
||||
* @param string $file
|
||||
* A file or directory to analyze.
|
||||
* @option $autofix Whether to run the automatic fixer or not.
|
||||
* @option $strict Show warnings as well as errors.
|
||||
* Default is to show only errors.
|
||||
*/
|
||||
public function sniff(
|
||||
$file = 'src',
|
||||
array $options = [
|
||||
'autofix' => false,
|
||||
'strict' => false,
|
||||
]
|
||||
) {
|
||||
return var_export($options, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the my:cat command
|
||||
*
|
||||
@@ -46,7 +106,7 @@ class ExampleCommandFile
|
||||
* Concatenate "alpha" and "bet".
|
||||
* @arbitrary This annotation is here merely as a marker used in testing.
|
||||
*/
|
||||
public function myCat($one, $two = '', $options = ['flip' => false])
|
||||
public function myCat($one, $two = '', array $options = ['flip' => false])
|
||||
{
|
||||
if ($options['flip']) {
|
||||
return "{$two}{$one}";
|
||||
@@ -57,15 +117,23 @@ class ExampleCommandFile
|
||||
/**
|
||||
* @command my:repeat
|
||||
*/
|
||||
public function myRepeat($one, $two = '', $options = ['repeat' => 1])
|
||||
public function myRepeat($one, $two = '', array $options = ['repeat' => 1])
|
||||
{
|
||||
return str_repeat("{$one}{$two}", $options['repeat']);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the my:join command
|
||||
*
|
||||
* This command will join its parameters together. It can also reverse and repeat its arguments.
|
||||
*
|
||||
* @command my:join
|
||||
* @usage a b
|
||||
* Join a and b to produce "a,b"
|
||||
* @usage
|
||||
* Example with no parameters or options
|
||||
*/
|
||||
public function myJoin(array $args, $options = ['flip' => false, 'repeat' => 1])
|
||||
public function myJoin(array $args, array $options = ['flip' => false, 'repeat' => 1])
|
||||
{
|
||||
if ($options['flip']) {
|
||||
$args = array_reverse($args);
|
||||
@@ -90,6 +158,16 @@ class ExampleCommandFile
|
||||
return "{$one}{$two}";
|
||||
}
|
||||
|
||||
/**
|
||||
* This command work with app's input and output
|
||||
*
|
||||
* @command command:with-io-parameters
|
||||
*/
|
||||
public function commandWithIOParameters(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
return $input->getFirstArgument();
|
||||
}
|
||||
|
||||
/**
|
||||
* This command has no arguments--only options
|
||||
*
|
||||
@@ -97,7 +175,7 @@ class ExampleCommandFile
|
||||
*
|
||||
* @option silent Supress output.
|
||||
*/
|
||||
public function commandWithNoArguments($opts = ['silent|s' => false])
|
||||
public function commandWithNoArguments(array $opts = ['silent|s' => false])
|
||||
{
|
||||
if (!$opts['silent']) {
|
||||
return "Hello, world";
|
||||
@@ -112,7 +190,7 @@ class ExampleCommandFile
|
||||
* @param $opts The options
|
||||
* @option silent|s Supress output.
|
||||
*/
|
||||
public function shortcutOnAnnotation($opts = ['silent' => false])
|
||||
public function shortcutOnAnnotation(array $opts = ['silent' => false])
|
||||
{
|
||||
if (!$opts['silent']) {
|
||||
return "Hello, world";
|
||||
@@ -133,8 +211,10 @@ class ExampleCommandFile
|
||||
* @usage 2 2 --negate
|
||||
* Add two plus two and then negate.
|
||||
* @custom
|
||||
* @dup one
|
||||
* @dup two
|
||||
*/
|
||||
public function testArithmatic($one, $two, $options = ['negate' => false])
|
||||
public function testArithmatic($one, $two = 2, array $options = ['negate' => false, 'unused' => 'bob'])
|
||||
{
|
||||
$result = $one + $two;
|
||||
if ($options['negate']) {
|
||||
@@ -246,6 +326,22 @@ class ExampleCommandFile
|
||||
return "fantabulous";
|
||||
}
|
||||
|
||||
/**
|
||||
* @command test:replace-command
|
||||
*/
|
||||
public function testReplaceCommand($value)
|
||||
{
|
||||
$this->output->writeln($value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @hook replace-command test:replace-command
|
||||
*/
|
||||
public function hookTestReplaceCommandHook($value)
|
||||
{
|
||||
$this->output->writeln("bar");
|
||||
}
|
||||
|
||||
/**
|
||||
* @hook pre-command test:post-command
|
||||
*/
|
||||
@@ -348,4 +444,78 @@ class ExampleCommandFile
|
||||
}
|
||||
return "nothing provided";
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function defaultOptionOne(array $options = ['foo' => '1'])
|
||||
{
|
||||
return "Foo is " . $options['foo'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function defaultOptionTwo(array $options = ['foo' => '2'])
|
||||
{
|
||||
return "Foo is " . $options['foo'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function defaultOptionNone(array $options = ['foo' => InputOption::VALUE_REQUIRED])
|
||||
{
|
||||
return "Foo is " . $options['foo'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function defaultOptionalValue(array $options = ['foo' => InputOption::VALUE_OPTIONAL])
|
||||
{
|
||||
return "Foo is " . var_export($options['foo'], true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function defaultOptionDefaultsToTrue(array $options = ['foo' => true])
|
||||
{
|
||||
return "Foo is " . var_export($options['foo'], true);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the test:required-array-option command
|
||||
*
|
||||
* This command will print all the valused of passed option
|
||||
*
|
||||
* @param array $opts
|
||||
* @return string
|
||||
*/
|
||||
public function testRequiredArrayOption(array $opts = ['arr|a' => []])
|
||||
{
|
||||
return implode(' ', $opts['arr']);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the test:array-option command
|
||||
*
|
||||
* This command will print all the valused of passed option
|
||||
*
|
||||
* @param array $opts
|
||||
* @return string
|
||||
*/
|
||||
public function testArrayOption(array $opts = ['arr|a' => ['1', '2', '3']])
|
||||
{
|
||||
return implode(' ', $opts['arr']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @command global-options-only
|
||||
*/
|
||||
public function globalOptionsOnly($arg, array $options = [])
|
||||
{
|
||||
return "Arg is $arg, options[help] is " . var_export($options['help'], true) . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
50
lib/composer/vendor/consolidation/annotated-command/tests/src/InMemoryCacheStore.php
vendored
Normal file
50
lib/composer/vendor/consolidation/annotated-command/tests/src/InMemoryCacheStore.php
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
namespace Consolidation\TestUtils;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Cache\SimpleCacheInterface;
|
||||
|
||||
/**
|
||||
* A simple in-memory cache for testing
|
||||
*/
|
||||
class InMemoryCacheStore implements SimpleCacheInterface
|
||||
{
|
||||
protected $cache;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->cache = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for an entry from the cache
|
||||
* @param string $key
|
||||
* @return boolean
|
||||
*/
|
||||
public function has($key)
|
||||
{
|
||||
return array_key_exists($key, $this->cache);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an entry from the cache
|
||||
* @param string $key
|
||||
* @return array
|
||||
*/
|
||||
public function get($key)
|
||||
{
|
||||
if (!$this->has($key)) {
|
||||
return [];
|
||||
}
|
||||
return $this->cache[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Store an entry in the cache
|
||||
* @param string $key
|
||||
* @param array $data
|
||||
*/
|
||||
public function set($key, $data)
|
||||
{
|
||||
$this->cache[$key] = $data;
|
||||
}
|
||||
}
|
||||
22
lib/composer/vendor/consolidation/annotated-command/tests/src/TestTerminal.php
vendored
Normal file
22
lib/composer/vendor/consolidation/annotated-command/tests/src/TestTerminal.php
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
namespace Consolidation\TestUtils;
|
||||
|
||||
class TestTerminal
|
||||
{
|
||||
protected $width = 0;
|
||||
|
||||
public function __construct($width)
|
||||
{
|
||||
$this->width = $width;
|
||||
}
|
||||
|
||||
public function getWidth()
|
||||
{
|
||||
return $this->width;
|
||||
}
|
||||
|
||||
public function setWidth($width)
|
||||
{
|
||||
$this->width = $width;
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,11 @@ use Consolidation\OutputFormatters\StructuredData\AssociativeList;
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
use Consolidation\AnnotatedCommand\Events\CustomEventAwareInterface;
|
||||
use Consolidation\AnnotatedCommand\Events\CustomEventAwareTrait;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
|
||||
use Consolidation\TestUtils\ExampleCommandFile as ExampleAliasedClass;
|
||||
|
||||
/**
|
||||
* Test file used in the testCommandDiscovery() test.
|
||||
@@ -15,8 +20,10 @@ use Consolidation\AnnotatedCommand\CommandData;
|
||||
* 'src' directory, and 'alpha' is one of the search directories available
|
||||
* for searching.
|
||||
*/
|
||||
class AlphaCommandFile
|
||||
class AlphaCommandFile implements CustomEventAwareInterface
|
||||
{
|
||||
use CustomEventAwareTrait;
|
||||
|
||||
/**
|
||||
* @command always:fail
|
||||
*/
|
||||
@@ -25,6 +32,11 @@ class AlphaCommandFile
|
||||
return new CommandError('This command always fails.', 13);
|
||||
}
|
||||
|
||||
public static function ignoredStaticMethod()
|
||||
{
|
||||
return 'This method is static; it should not generate a command.';
|
||||
}
|
||||
|
||||
/**
|
||||
* @command simulated:status
|
||||
*/
|
||||
@@ -72,17 +84,52 @@ class AlphaCommandFile
|
||||
* Test command with formatters
|
||||
*
|
||||
* @command example:table
|
||||
* @param $unused An unused argument
|
||||
* @field-labels
|
||||
* first: I
|
||||
* second: II
|
||||
* third: III
|
||||
* @usage example:table --format=yaml
|
||||
* @usage example:table --format=csv
|
||||
* @usage example:table --format=yml
|
||||
* Show the example table in yml format.
|
||||
* @usage example:table --fields=first,third
|
||||
* @usage example:table --fields=III,II
|
||||
* @return \Consolidation\OutputFormatters\StructuredData\RowsOfFields
|
||||
* Show only the first and third fields in the table.
|
||||
* @usage example:table --fields=II,III
|
||||
* Note that either the field ID or the visible field label may be used.
|
||||
* @aliases extab
|
||||
* @topics docs-tables
|
||||
* @return \Consolidation\OutputFormatters\StructuredData\RowsOfFields Fully-qualified class name
|
||||
*/
|
||||
public function exampleTable($options = ['format' => 'table', 'fields' => ''])
|
||||
public function exampleTable($unused = '', $options = ['format' => 'table', 'fields' => ''])
|
||||
{
|
||||
$outputData = [
|
||||
[ 'first' => 'One', 'second' => 'Two', 'third' => 'Three' ],
|
||||
[ 'first' => 'Eins', 'second' => 'Zwei', 'third' => 'Drei' ],
|
||||
[ 'first' => 'Ichi', 'second' => 'Ni', 'third' => 'San' ],
|
||||
[ 'first' => 'Uno', 'second' => 'Dos', 'third' => 'Tres' ],
|
||||
];
|
||||
return new RowsOfFields($outputData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test command with formatters using a short classname in @return
|
||||
*
|
||||
* @command example:table2
|
||||
* @param $unused An unused argument
|
||||
* @field-labels
|
||||
* first: I
|
||||
* second: II
|
||||
* third: III
|
||||
* @usage example:table --format=yml
|
||||
* Show the example table in yml format.
|
||||
* @usage example:table --fields=first,third
|
||||
* Show only the first and third fields in the table.
|
||||
* @usage example:table --fields=II,III
|
||||
* Note that either the field ID or the visible field label may be used.
|
||||
* @aliases extab
|
||||
* @topics docs-tables
|
||||
* @return RowsOfFields Short class names are converted to fqcns
|
||||
*/
|
||||
public function exampleTableTwo($unused = '', $options = ['format' => 'table', 'fields' => ''])
|
||||
{
|
||||
$outputData = [
|
||||
[ 'first' => 'One', 'second' => 'Two', 'third' => 'Three' ],
|
||||
@@ -117,7 +164,7 @@ class AlphaCommandFile
|
||||
/**
|
||||
* @hook option example:table
|
||||
*/
|
||||
public function additionalOptionForExampleTable($command, $annotationData)
|
||||
public function additionalOptionForExampleTable(Command $command, AnnotationData $annotationData)
|
||||
{
|
||||
$command->addOption(
|
||||
'dynamic',
|
||||
@@ -240,4 +287,39 @@ class AlphaCommandFile
|
||||
{
|
||||
return 'very lost';
|
||||
}
|
||||
|
||||
/**
|
||||
* This command uses a custom event 'my-event' to collect data. Note that
|
||||
* the event handlers will not be found unless the hook manager is
|
||||
* injected into this command handler object via `setHookManager()`
|
||||
* (defined in CustomEventAwareTrait).
|
||||
*
|
||||
* @command use:event
|
||||
*/
|
||||
public function useEvent()
|
||||
{
|
||||
$myEventHandlers = $this->getCustomEventHandlers('my-event');
|
||||
$result = [];
|
||||
foreach ($myEventHandlers as $handler) {
|
||||
$result[] = $handler();
|
||||
}
|
||||
sort($result);
|
||||
return implode(',', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @hook on-event my-event
|
||||
*/
|
||||
public function hookOne()
|
||||
{
|
||||
return 'one';
|
||||
}
|
||||
|
||||
/**
|
||||
* @hook on-event my-event
|
||||
*/
|
||||
public function hookTwo()
|
||||
{
|
||||
return 'two';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,10 +20,10 @@ class AnnotatedCommandTests extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals("This command will concatenate two parameters. If the --flip flag\nis provided, then the result is the concatenation of two and one.", $command->getHelp());
|
||||
$this->assertEquals('c', implode(',', $command->getAliases()));
|
||||
// Symfony Console composes the synopsis; perhaps we should not test it. Remove if this gives false failures.
|
||||
$this->assertEquals('my:cat [--flip] [--] <one> [<two>]', $command->getSynopsis());
|
||||
$this->assertEquals('my:cat [--multiple MULTIPLE] [--flip] [--] <one> [<two>]', $command->getSynopsis());
|
||||
$this->assertEquals('my:cat bet alpha --flip', implode(',', $command->getUsages()));
|
||||
|
||||
$input = new StringInput('my:cat bet alpha --flip');
|
||||
$input = new StringInput('my:cat b alpha --multiple=t --multiple=e --flip');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'alphabet');
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ use Consolidation\TestUtils\ExampleCommandInfoAlterer;
|
||||
use Symfony\Component\Console\Application;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Input\ArgvInput;
|
||||
use Symfony\Component\Console\Input\StringInput;
|
||||
use Symfony\Component\Console\Output\BufferedOutput;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
@@ -19,6 +20,207 @@ class AnnotatedCommandFactoryTests extends \PHPUnit_Framework_TestCase
|
||||
protected $commandFileInstance;
|
||||
protected $commandFactory;
|
||||
|
||||
function testFibonacci()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'fibonacci');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
$this->assertEquals('fibonacci', $command->getName());
|
||||
$this->assertEquals('fibonacci [--graphic] [--] <start> <steps>', $command->getSynopsis());
|
||||
$this->assertEquals('Calculate the fibonacci sequence between two numbers.', $command->getDescription());
|
||||
$this->assertEquals("Graphic output will look like
|
||||
+----+---+-------------+
|
||||
| | | |
|
||||
| |-+-| |
|
||||
|----+-+-+ |
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
+--------+-------------+", $command->getHelp());
|
||||
|
||||
$this->assertInstanceOf('\Symfony\Component\Console\Command\Command', $command);
|
||||
|
||||
$input = new StringInput('help fibonacci');
|
||||
$this->assertRunCommandViaApplicationContains($command, $input, ['Display the sequence graphically using cube representation']);
|
||||
}
|
||||
|
||||
function testSniff()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'sniff');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
$this->assertEquals('sniff', $command->getName());
|
||||
$this->assertEquals('sniff [--autofix] [--strict] [--] [<file>]', $command->getSynopsis());
|
||||
|
||||
$this->assertInstanceOf('\Symfony\Component\Console\Command\Command', $command);
|
||||
|
||||
$input = new StringInput('help sniff');
|
||||
$this->assertRunCommandViaApplicationContains($command, $input, ['A file or directory to analyze.']);
|
||||
|
||||
$input = new StringInput('sniff --autofix --strict -- foo');
|
||||
$this->assertRunCommandViaApplicationContains($command, $input, ["'autofix' => true",
|
||||
"'strict' => true"]);
|
||||
}
|
||||
|
||||
function testOptionDefaultValue()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'defaultOptionOne');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
$this->assertEquals('default:option-one', $command->getName());
|
||||
$this->assertEquals('default:option-one [--foo [FOO]]', $command->getSynopsis());
|
||||
|
||||
$this->assertInstanceOf('\Symfony\Component\Console\Command\Command', $command);
|
||||
|
||||
$input = new StringInput('default:option-one');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'Foo is 1');
|
||||
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'defaultOptionTwo');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
$this->assertEquals('default:option-two', $command->getName());
|
||||
$this->assertEquals('default:option-two [--foo [FOO]]', $command->getSynopsis());
|
||||
|
||||
$input = new StringInput('default:option-two');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'Foo is 2');
|
||||
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'defaultOptionNone');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
$this->assertEquals('default:option-none', $command->getName());
|
||||
$this->assertEquals('default:option-none [--foo FOO]', $command->getSynopsis());
|
||||
|
||||
// Skip failing test until Symfony is fixed.
|
||||
$this->markTestSkipped('Symfony Console 3.2.5 and 3.2.6 do not handle default options with required values correctly.');
|
||||
|
||||
$input = new StringInput('default:option-none --foo');
|
||||
$this->assertRunCommandViaApplicationContains($command, $input, ['The "--foo" option requires a value.'], 1);
|
||||
}
|
||||
|
||||
function testGlobalOptionsOnly()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'globalOptionsOnly');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
|
||||
$input = new StringInput('global-options-only test');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, "Arg is test, options[help] is false");
|
||||
}
|
||||
|
||||
function testOptionWithOptionalValue()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'defaultOptionalValue');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
|
||||
// Test to see if we can differentiate between a missing option, and
|
||||
// an option that has no value at all.
|
||||
$input = new StringInput('default:optional-value --foo=bar');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, "Foo is 'bar'");
|
||||
|
||||
$input = new StringInput('default:optional-value --foo');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'Foo is true');
|
||||
|
||||
$input = new StringInput('default:optional-value');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'Foo is NULL');
|
||||
}
|
||||
|
||||
function testOptionThatDefaultsToTrue()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'defaultOptionDefaultsToTrue');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
|
||||
// Test to see if we can differentiate between a missing option, and
|
||||
// an option that has no value at all.
|
||||
$input = new StringInput('default:option-defaults-to-true --foo=bar');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, "Foo is 'bar'");
|
||||
|
||||
$input = new StringInput('default:option-defaults-to-true --foo');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'Foo is true');
|
||||
|
||||
$input = new StringInput('default:option-defaults-to-true');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'Foo is true');
|
||||
|
||||
$input = new StringInput('help default:option-defaults-to-true');
|
||||
$this->assertRunCommandViaApplicationContains(
|
||||
$command,
|
||||
$input,
|
||||
[
|
||||
'--no-foo',
|
||||
'Negate --foo option',
|
||||
]
|
||||
);
|
||||
$input = new StringInput('default:option-defaults-to-true --no-foo');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'Foo is false');
|
||||
}
|
||||
/**
|
||||
* Test CommandInfo command caching.
|
||||
*
|
||||
* Sequence:
|
||||
* - Create all of the command info objects from one class, caching them.
|
||||
* - Change the method name of one of the items in the cache to a non-existent method
|
||||
* - Restore all of the cached commandinfo objects
|
||||
* - Ensure that the non-existent method cached commandinfo was not created
|
||||
* - Ensure that the now-missing cached commandinfo was still created
|
||||
*
|
||||
* This tests both save/restore, plus adding a new command method to
|
||||
* a class, and removing a command method from a class.
|
||||
*/
|
||||
function testAnnotatedCommandCache()
|
||||
{
|
||||
$testCacheStore = new \Consolidation\TestUtils\InMemoryCacheStore();
|
||||
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
$this->commandFactory->setDataStore($testCacheStore);
|
||||
|
||||
// Make commandInfo objects for every command in the test commandfile.
|
||||
// These will also be stored in our cache.
|
||||
$commandInfoList = $this->commandFactory->getCommandInfoListFromClass($this->commandFileInstance);
|
||||
|
||||
$cachedClassName = get_class($this->commandFileInstance);
|
||||
|
||||
$this->assertTrue($testCacheStore->has($cachedClassName));
|
||||
|
||||
$cachedData = $testCacheStore->get($cachedClassName);
|
||||
$this->assertFalse(empty($cachedData));
|
||||
$this->assertTrue(array_key_exists('testArithmatic', $cachedData));
|
||||
|
||||
$alterCommandInfoCache = $cachedData['testArithmatic'];
|
||||
unset($cachedData['testArithmatic']);
|
||||
$alterCommandInfoCache['method_name'] = 'nonExistentMethod';
|
||||
$cachedData[$alterCommandInfoCache['method_name']] = $alterCommandInfoCache;
|
||||
|
||||
$testCacheStore->set($cachedClassName, $cachedData);
|
||||
|
||||
$restoredCommandInfoList = $this->commandFactory->getCommandInfoListFromClass($this->commandFileInstance);
|
||||
|
||||
$rebuiltCachedData = $testCacheStore->get($cachedClassName);
|
||||
|
||||
$this->assertFalse(empty($rebuiltCachedData));
|
||||
$this->assertTrue(array_key_exists('testArithmatic', $rebuiltCachedData));
|
||||
$this->assertFalse(array_key_exists('nonExistentMethod', $rebuiltCachedData));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test CommandInfo command annotation parsing.
|
||||
*/
|
||||
@@ -35,7 +237,7 @@ class AnnotatedCommandFactoryTests extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals('This is the test:arithmatic command', $command->getDescription());
|
||||
$this->assertEquals("This command will add one and two. If the --negate flag\nis provided, then the result is negated.", $command->getHelp());
|
||||
$this->assertEquals('arithmatic', implode(',', $command->getAliases()));
|
||||
$this->assertEquals('test:arithmatic [--negate] [--] <one> <two>', $command->getSynopsis());
|
||||
$this->assertEquals('test:arithmatic [--negate] [--unused [UNUSED]] [--] <one> [<two>]', $command->getSynopsis());
|
||||
$this->assertEquals('test:arithmatic 2 2 --negate', implode(',', $command->getUsages()));
|
||||
|
||||
$input = new StringInput('arithmatic 2 3 --negate');
|
||||
@@ -86,6 +288,29 @@ class AnnotatedCommandFactoryTests extends \PHPUnit_Framework_TestCase
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'alphabet');
|
||||
}
|
||||
|
||||
function testJoinCommandHelp()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'myJoin');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
|
||||
$this->assertInstanceOf('\Symfony\Component\Console\Command\Command', $command);
|
||||
$this->assertEquals('my:join', $command->getName());
|
||||
$this->assertEquals('This is the my:join command', $command->getDescription());
|
||||
$this->assertEquals("This command will join its parameters together. It can also reverse and repeat its arguments.", $command->getHelp());
|
||||
$this->assertEquals('my:join [--flip] [--repeat [REPEAT]] [--] [<args>]...', $command->getSynopsis());
|
||||
|
||||
// TODO: Extra whitespace character if there are no options et. al. in the
|
||||
// usage. This is uncommon, and the defect is invisible. Maybe find it someday.
|
||||
$actualUsages = implode(',', $command->getUsages());
|
||||
$this->assertEquals('my:join a b,my:join ', $actualUsages);
|
||||
|
||||
$input = new StringInput('my:join bet alpha --flip --repeat=2');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'alphabetalphabet');
|
||||
}
|
||||
|
||||
function testDefaultsCommand()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
@@ -126,6 +351,34 @@ class AnnotatedCommandFactoryTests extends \PHPUnit_Framework_TestCase
|
||||
|
||||
$input = new StringInput('command:with-no-options something');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'somethingdefault');
|
||||
|
||||
$input = new StringInput('help command:with-no-options something');
|
||||
$this->assertRunCommandViaApplicationContains(
|
||||
$command,
|
||||
$input,
|
||||
[
|
||||
'The first parameter.',
|
||||
'The other parameter.',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
function testCommandWithIOParameters()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'commandWithIOParameters');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
|
||||
$this->assertInstanceOf('\Symfony\Component\Console\Command\Command', $command);
|
||||
$this->assertEquals('command:with-io-parameters', $command->getName());
|
||||
$this->assertEquals("This command work with app's input and output", $command->getDescription());
|
||||
$this->assertEquals('', $command->getHelp());
|
||||
$this->assertEquals('command:with-io-parameters', $command->getSynopsis());
|
||||
|
||||
$input = new StringInput('command:with-io-parameters');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'command:with-io-parameters');
|
||||
}
|
||||
|
||||
function testCommandWithNoArguments()
|
||||
@@ -237,6 +490,41 @@ class AnnotatedCommandFactoryTests extends \PHPUnit_Framework_TestCase
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'betxyzbetxyz');
|
||||
}
|
||||
|
||||
function testRequiredArrayOption()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'testRequiredArrayOption');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
$this->assertEquals('test:required-array-option [-a|--arr ARR]', $command->getSynopsis());
|
||||
|
||||
$input = new StringInput('test:required-array-option --arr=1 --arr=2 --arr=3');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, '1 2 3');
|
||||
|
||||
$input = new StringInput('test:required-array-option -a 1 -a 2 -a 3');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, '1 2 3');
|
||||
}
|
||||
|
||||
function testArrayOption()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile;
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'testArrayOption');
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
$this->assertEquals('test:array-option [-a|--arr [ARR]]', $command->getSynopsis());
|
||||
|
||||
$input = new StringInput('test:array-option');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, '1 2 3');
|
||||
|
||||
$input = new StringInput('test:array-option --arr=a --arr=b --arr=c');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'a b c');
|
||||
|
||||
$input = new StringInput('test:array-option -a a');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'a');
|
||||
}
|
||||
|
||||
function testHookedCommand()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile();
|
||||
@@ -264,6 +552,33 @@ class AnnotatedCommandFactoryTests extends \PHPUnit_Framework_TestCase
|
||||
|
||||
$input = new StringInput('test:hook bar');
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, '<[bar]>');
|
||||
|
||||
$input = new StringInput('list --raw');
|
||||
$this->assertRunCommandViaApplicationContains($command, $input, ['This command wraps its parameter in []; its alter hook then wraps the result in .']);
|
||||
}
|
||||
|
||||
function testReplaceCommandHook(){
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile();
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
|
||||
$hookInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'hookTestReplaceCommandHook');
|
||||
|
||||
$this->assertTrue($hookInfo->hasAnnotation('hook'));
|
||||
$this->assertEquals('replace-command test:replace-command', $hookInfo->getAnnotation('hook'));
|
||||
|
||||
$this->commandFactory->registerCommandHook($hookInfo, $this->commandFileInstance);
|
||||
|
||||
$hookCallback = $this->commandFactory->hookManager()->get('test:replace-command', [HookManager::REPLACE_COMMAND_HOOK]);
|
||||
$this->assertTrue($hookCallback != null);
|
||||
$this->assertEquals(1, count($hookCallback));
|
||||
$this->assertEquals(2, count($hookCallback[0]));
|
||||
$this->assertTrue(is_callable($hookCallback[0]));
|
||||
$this->assertEquals('hookTestReplaceCommandHook', $hookCallback[0][1]);
|
||||
|
||||
$input = new StringInput('test:replace-command foo');
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'testReplaceCommand');
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, "bar", 0);
|
||||
}
|
||||
|
||||
function testPostCommandCalledAfterCommand()
|
||||
@@ -338,6 +653,22 @@ class AnnotatedCommandFactoryTests extends \PHPUnit_Framework_TestCase
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, '*** bar ***');
|
||||
}
|
||||
|
||||
function testDoubleDashWithVersion()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleHookAllCommandFile();
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($this->commandFileInstance, 'doCat');
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
|
||||
$input = new ArgvInput(['placeholder', 'do:cat', 'one', '--', '--version']);
|
||||
list($statusCode, $commandOutput) = $this->runCommandViaApplication($command, $input);
|
||||
|
||||
if ($commandOutput == 'TestApplication version 0.0.0') {
|
||||
$this->markTestSkipped('Symfony/Console 2.x does not respect -- with --version');
|
||||
}
|
||||
$this->assertEquals('one--version', $commandOutput);
|
||||
}
|
||||
|
||||
function testAnnotatedHookedCommand()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile();
|
||||
@@ -404,7 +735,7 @@ class AnnotatedCommandFactoryTests extends \PHPUnit_Framework_TestCase
|
||||
$annotationData = $commandInfo->getRawAnnotations();
|
||||
$this->assertEquals('addmycommandname', implode(',', $annotationData->keys()));
|
||||
$annotationData = $commandInfo->getAnnotations();
|
||||
$this->assertEquals('addmycommandname,command', implode(',', $annotationData->keys()));
|
||||
$this->assertEquals('addmycommandname,command,_path,_classname', implode(',', $annotationData->keys()));
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $this->commandFileInstance);
|
||||
|
||||
@@ -415,7 +746,6 @@ class AnnotatedCommandFactoryTests extends \PHPUnit_Framework_TestCase
|
||||
$this->assertRunCommandViaApplicationEquals($command, $input, 'fantabulous from alter:me-too');
|
||||
}
|
||||
|
||||
|
||||
function testHookedCommandWithHookAddedLater()
|
||||
{
|
||||
$this->commandFileInstance = new \Consolidation\TestUtils\ExampleCommandFile();
|
||||
@@ -612,7 +942,25 @@ class AnnotatedCommandFactoryTests extends \PHPUnit_Framework_TestCase
|
||||
return $r->invokeArgs($object, $args);
|
||||
}
|
||||
|
||||
function assertRunCommandViaApplicationContains($command, $input, $containsList, $expectedStatusCode = 0)
|
||||
{
|
||||
list($statusCode, $commandOutput) = $this->runCommandViaApplication($command, $input);
|
||||
|
||||
foreach ($containsList as $contains) {
|
||||
$this->assertContains($contains, $commandOutput);
|
||||
}
|
||||
$this->assertEquals($expectedStatusCode, $statusCode);
|
||||
}
|
||||
|
||||
function assertRunCommandViaApplicationEquals($command, $input, $expectedOutput, $expectedStatusCode = 0)
|
||||
{
|
||||
list($statusCode, $commandOutput) = $this->runCommandViaApplication($command, $input);
|
||||
|
||||
$this->assertEquals($expectedOutput, $commandOutput);
|
||||
$this->assertEquals($expectedStatusCode, $statusCode);
|
||||
}
|
||||
|
||||
function runCommandViaApplication($command, $input)
|
||||
{
|
||||
$output = new BufferedOutput();
|
||||
if ($this->commandFileInstance && method_exists($this->commandFileInstance, 'setOutput')) {
|
||||
@@ -624,16 +972,15 @@ class AnnotatedCommandFactoryTests extends \PHPUnit_Framework_TestCase
|
||||
|
||||
$eventDispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher();
|
||||
$eventDispatcher->addSubscriber($this->commandFactory->commandProcessor()->hookManager());
|
||||
$eventDispatcher->addSubscriber($alterOptionsEventManager);
|
||||
$this->commandFactory->commandProcessor()->hookManager()->addCommandEvent($alterOptionsEventManager);
|
||||
$application->setDispatcher($eventDispatcher);
|
||||
|
||||
$application->setAutoExit(false);
|
||||
$application->add($command);
|
||||
|
||||
$statusCode = $application->run($input, $output);
|
||||
$commandOutput = trim($output->fetch());
|
||||
$commandOutput = trim(str_replace("\r", '', $output->fetch()));
|
||||
|
||||
$this->assertEquals($expectedOutput, $commandOutput);
|
||||
$this->assertEquals($expectedStatusCode, $statusCode);
|
||||
return [$statusCode, $commandOutput];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
namespace Consolidation\AnnotatedCommand;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfo;
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfoSerializer;
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfoDeserializer;
|
||||
|
||||
class CommandInfoTests extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
@@ -22,8 +24,31 @@ class CommandInfoTests extends \PHPUnit_Framework_TestCase
|
||||
*/
|
||||
function testParsing()
|
||||
{
|
||||
$commandInfo = new CommandInfo('\Consolidation\TestUtils\ExampleCommandFile', 'testArithmatic');
|
||||
$commandInfo = CommandInfo::create('\Consolidation\TestUtils\ExampleCommandFile', 'testArithmatic');
|
||||
$this->assertCommandInfoIsAsExpected($commandInfo);
|
||||
|
||||
$serializer = new CommandInfoSerializer();
|
||||
$serialized = $serializer->serialize($commandInfo);
|
||||
|
||||
$deserializer = new CommandInfoDeserializer();
|
||||
|
||||
$deserializedCommandInfo = $deserializer->deserialize($serialized);
|
||||
$this->assertCommandInfoIsAsExpected($deserializedCommandInfo);
|
||||
}
|
||||
|
||||
function testWithConfigImport()
|
||||
{
|
||||
$commandInfo = CommandInfo::create('\Consolidation\TestUtils\ExampleCommandFile', 'import');
|
||||
$this->assertEquals('config:import', $commandInfo->getName());
|
||||
|
||||
$this->assertEquals(
|
||||
'A config directory label (i.e. a key in \$config_directories array in settings.php).',
|
||||
$commandInfo->arguments()->getDescription('label')
|
||||
);
|
||||
}
|
||||
|
||||
function assertCommandInfoIsAsExpected($commandInfo)
|
||||
{
|
||||
$this->assertEquals('test:arithmatic', $commandInfo->getName());
|
||||
$this->assertEquals(
|
||||
'This is the test:arithmatic command',
|
||||
@@ -46,15 +71,31 @@ class CommandInfoTests extends \PHPUnit_Framework_TestCase
|
||||
'The other number to add.',
|
||||
$commandInfo->arguments()->getDescription('two')
|
||||
);
|
||||
$this->assertEquals(
|
||||
'2',
|
||||
$commandInfo->arguments()->get('two')
|
||||
);
|
||||
$this->assertEquals(
|
||||
'Whether or not the result should be negated.',
|
||||
$commandInfo->options()->getDescription('negate')
|
||||
);
|
||||
$this->assertEquals(
|
||||
'bob',
|
||||
$commandInfo->options()->get('unused')
|
||||
);
|
||||
$this->assertEquals(
|
||||
'one,two',
|
||||
$commandInfo->getAnnotation('dup')
|
||||
);
|
||||
$this->assertEquals(
|
||||
['one','two'],
|
||||
$commandInfo->getAnnotationList('dup')
|
||||
);
|
||||
}
|
||||
|
||||
function testReturnValue()
|
||||
{
|
||||
$commandInfo = new CommandInfo('\Consolidation\TestUtils\alpha\AlphaCommandFile', 'exampleTable');
|
||||
$commandInfo = CommandInfo::create('\Consolidation\TestUtils\alpha\AlphaCommandFile', 'exampleTable');
|
||||
$this->assertEquals('example:table', $commandInfo->getName());
|
||||
$this->assertEquals('\Consolidation\OutputFormatters\StructuredData\RowsOfFields', $commandInfo->getReturnType());
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ use Consolidation\AnnotatedCommand\Hooks\ValidatorInterface;
|
||||
use Consolidation\AnnotatedCommand\Options\AlterOptionsCommandEvent;
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfo;
|
||||
use Consolidation\OutputFormatters\FormatterManager;
|
||||
use Consolidation\TestUtils\TestTerminal;
|
||||
use Symfony\Component\Console\Application;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
@@ -21,6 +22,8 @@ use Symfony\Component\Console\Output\BufferedOutput;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Consolidation\TestUtils\ApplicationWithTerminalWidth;
|
||||
use Consolidation\AnnotatedCommand\Options\PrepareTerminalWidthOption;
|
||||
use Consolidation\AnnotatedCommand\Events\CustomEventAwareInterface;
|
||||
use Consolidation\AnnotatedCommand\Events\CustomEventAwareTrait;
|
||||
|
||||
/**
|
||||
* Do a test of all of the classes in this project, top-to-bottom.
|
||||
@@ -36,7 +39,7 @@ class FullStackTests extends \PHPUnit_Framework_TestCase
|
||||
$alterOptionsEventManager = new AlterOptionsCommandEvent($this->application);
|
||||
$eventDispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher();
|
||||
$eventDispatcher->addSubscriber($this->commandFactory->commandProcessor()->hookManager());
|
||||
$eventDispatcher->addSubscriber($alterOptionsEventManager);
|
||||
$this->commandFactory->commandProcessor()->hookManager()->addCommandEvent($alterOptionsEventManager);
|
||||
$this->application->setDispatcher($eventDispatcher);
|
||||
$this->application->setAutoExit(false);
|
||||
}
|
||||
@@ -46,7 +49,7 @@ class FullStackTests extends \PHPUnit_Framework_TestCase
|
||||
$formatter = new FormatterManager();
|
||||
$formatter->addDefaultFormatters();
|
||||
$formatter->addDefaultSimplifiers();
|
||||
$commandInfo = new CommandInfo('\Consolidation\TestUtils\alpha\AlphaCommandFile', 'exampleTable');
|
||||
$commandInfo = CommandInfo::create('\Consolidation\TestUtils\alpha\AlphaCommandFile', 'exampleTable');
|
||||
$this->assertEquals('example:table', $commandInfo->getName());
|
||||
$this->assertEquals('\Consolidation\OutputFormatters\StructuredData\RowsOfFields', $commandInfo->getReturnType());
|
||||
}
|
||||
@@ -59,7 +62,13 @@ class FullStackTests extends \PHPUnit_Framework_TestCase
|
||||
$formatter->addDefaultSimplifiers();
|
||||
|
||||
$this->commandFactory->commandProcessor()->setFormatterManager($formatter);
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($commandFileInstance, 'exampleTable');
|
||||
$this->assertAutomaticOptionsForCommand($commandFileInstance, 'exampleTable', 'example:table');
|
||||
$this->assertAutomaticOptionsForCommand($commandFileInstance, 'exampleTableTwo', 'example:table2');
|
||||
}
|
||||
|
||||
function assertAutomaticOptionsForCommand($commandFileInstance, $functionName, $commandName)
|
||||
{
|
||||
$commandInfo = $this->commandFactory->createCommandInfo($commandFileInstance, $functionName);
|
||||
|
||||
$command = $this->commandFactory->createCommand($commandInfo, $commandFileInstance);
|
||||
$this->application->add($command);
|
||||
@@ -69,7 +78,7 @@ class FullStackTests extends \PHPUnit_Framework_TestCase
|
||||
'--format[=FORMAT] Format the result data. Available formats: csv,json,list,php,print-r,sections,string,table,tsv,var_export,xml,yaml [default: "table"]',
|
||||
'--fields[=FIELDS] Available fields: I (first), II (second), III (third) [default: ""]',
|
||||
];
|
||||
$this->assertRunCommandViaApplicationContains('help example:table', $containsList);
|
||||
$this->assertRunCommandViaApplicationContains('help ' . $commandName, $containsList);
|
||||
}
|
||||
|
||||
function testCommandsAndHooks()
|
||||
@@ -92,18 +101,24 @@ class FullStackTests extends \PHPUnit_Framework_TestCase
|
||||
$formatter->addDefaultSimplifiers();
|
||||
$hookManager = new HookManager();
|
||||
$terminalWidthOption = new PrepareTerminalWidthOption();
|
||||
$terminalWidthOption->enableWrap(true);
|
||||
$terminalWidthOption->setApplication($this->application);
|
||||
$testTerminal = new TestTerminal(0);
|
||||
$terminalWidthOption->setTerminal($testTerminal);
|
||||
$commandProcessor = new CommandProcessor($hookManager);
|
||||
$commandProcessor->setFormatterManager($formatter);
|
||||
$commandProcessor->addPrepareFormatter($terminalWidthOption);
|
||||
|
||||
// Create a new factory, and load all of the files
|
||||
// discovered above. The command factory class is
|
||||
// tested in isolation in testAnnotatedCommandFactory.php,
|
||||
// but this is the only place where
|
||||
// discovered above.
|
||||
$factory = new AnnotatedCommandFactory();
|
||||
$factory->setCommandProcessor($commandProcessor);
|
||||
// $factory->addListener(...);
|
||||
// Add a listener to configure our command handler object
|
||||
$factory->addListernerCallback(function($command) use($hookManager) {
|
||||
if ($command instanceof CustomEventAwareInterface) {
|
||||
$command->setHookManager($hookManager);
|
||||
}
|
||||
} );
|
||||
$factory->setIncludeAllPublicMethods(false);
|
||||
$this->addDiscoveredCommands($factory, $commandFiles);
|
||||
|
||||
@@ -112,6 +127,12 @@ class FullStackTests extends \PHPUnit_Framework_TestCase
|
||||
$this->assertTrue($this->application->has('example:table'));
|
||||
$this->assertFalse($this->application->has('without:annotations'));
|
||||
|
||||
// Run the use:event command that defines a custom event, my-event.
|
||||
$this->assertRunCommandViaApplicationEquals('use:event', 'one,two');
|
||||
// Watch as we dynamically add a custom event to the hook manager to change the command results:
|
||||
$hookManager->add(function () { return 'three'; }, HookManager::ON_EVENT, 'my-event');
|
||||
$this->assertRunCommandViaApplicationEquals('use:event', 'one,three,two');
|
||||
|
||||
// Fetch a reference to the 'example:table' command and test its valid format types
|
||||
$exampleTableCommand = $this->application->find('example:table');
|
||||
$returnType = $exampleTableCommand->getReturnType();
|
||||
@@ -238,20 +259,21 @@ EOT;
|
||||
$this->assertRunCommandViaApplicationEquals('example:wrap', $expectedUnwrappedOutput);
|
||||
|
||||
$expectedWrappedOutput = <<<EOT
|
||||
------------------- --------------------
|
||||
First Second
|
||||
------------------- --------------------
|
||||
This is a really This is the second
|
||||
long cell that column of the same
|
||||
contains a lot of table. It is also
|
||||
data. When it is very long, and
|
||||
rendered, it should be wrapped
|
||||
should be wrapped across multiple
|
||||
across multiple lines, just like
|
||||
lines. the first column.
|
||||
------------------- --------------------
|
||||
------------------ --------------------
|
||||
First Second
|
||||
------------------ --------------------
|
||||
This is a really This is the second
|
||||
long cell that column of the same
|
||||
contains a lot table. It is also
|
||||
of data. When it very long, and
|
||||
is rendered, it should be wrapped
|
||||
should be across multiple
|
||||
wrapped across lines, just like
|
||||
multiple lines. the first column.
|
||||
------------------ --------------------
|
||||
EOT;
|
||||
$this->application->setWidthAndHeight(42, 24);
|
||||
$testTerminal->setWidth(42);
|
||||
$this->assertRunCommandViaApplicationEquals('example:wrap', $expectedWrappedOutput);
|
||||
}
|
||||
|
||||
@@ -333,7 +355,7 @@ EOT;
|
||||
$allRegisteredHooks = $hookManager->getAllHooks();
|
||||
$registeredHookNames = array_keys($allRegisteredHooks);
|
||||
sort($registeredHookNames);
|
||||
$this->assertEquals('*,example:table', implode(',', $registeredHookNames));
|
||||
$this->assertEquals('*,example:table,my-event', implode(',', $registeredHookNames));
|
||||
$allHooksForExampleTable = $allRegisteredHooks['example:table'];
|
||||
$allHookPhasesForExampleTable = array_keys($allHooksForExampleTable);
|
||||
sort($allHookPhasesForExampleTable);
|
||||
@@ -443,7 +465,7 @@ EOT;
|
||||
|
||||
function simplifyWhitespace($data)
|
||||
{
|
||||
return trim(preg_replace('#[ \t]+$#m', '', $data));
|
||||
return trim(preg_replace('#\s+$#m', '', $data));
|
||||
}
|
||||
|
||||
function callProtected($object, $method, $args = [])
|
||||
|
||||
313
lib/composer/vendor/consolidation/annotated-command/tests/testHelp.php
vendored
Normal file
313
lib/composer/vendor/consolidation/annotated-command/tests/testHelp.php
vendored
Normal file
@@ -0,0 +1,313 @@
|
||||
<?php
|
||||
namespace Consolidation\AnnotatedCommand;
|
||||
|
||||
use Consolidation\AnnotatedCommand\Help\HelpCommand;
|
||||
|
||||
use Consolidation\AnnotatedCommand\AnnotationData;
|
||||
use Consolidation\AnnotatedCommand\CommandData;
|
||||
use Consolidation\AnnotatedCommand\CommandProcessor;
|
||||
use Consolidation\AnnotatedCommand\Hooks\AlterResultInterface;
|
||||
use Consolidation\AnnotatedCommand\Hooks\ExtractOutputInterface;
|
||||
use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
||||
use Consolidation\AnnotatedCommand\Hooks\ProcessResultInterface;
|
||||
use Consolidation\AnnotatedCommand\Hooks\StatusDeterminerInterface;
|
||||
use Consolidation\AnnotatedCommand\Hooks\ValidatorInterface;
|
||||
use Consolidation\AnnotatedCommand\Options\AlterOptionsCommandEvent;
|
||||
use Consolidation\AnnotatedCommand\Parser\CommandInfo;
|
||||
use Consolidation\OutputFormatters\FormatterManager;
|
||||
use Symfony\Component\Console\Application;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Input\StringInput;
|
||||
use Symfony\Component\Console\Output\BufferedOutput;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Consolidation\TestUtils\ApplicationWithTerminalWidth;
|
||||
use Consolidation\AnnotatedCommand\Options\PrepareTerminalWidthOption;
|
||||
|
||||
/**
|
||||
* Test our 'help' command.
|
||||
*/
|
||||
class HelpTests extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
protected $application;
|
||||
protected $commandFactory;
|
||||
|
||||
function setup()
|
||||
{
|
||||
$this->application = new ApplicationWithTerminalWidth('TestApplication', '0.0.0');
|
||||
$this->commandFactory = new AnnotatedCommandFactory();
|
||||
// $factory->addListener(...);
|
||||
$alterOptionsEventManager = new AlterOptionsCommandEvent($this->application);
|
||||
$eventDispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher();
|
||||
$eventDispatcher->addSubscriber($this->commandFactory->commandProcessor()->hookManager());
|
||||
$this->commandFactory->commandProcessor()->hookManager()->addCommandEvent($alterOptionsEventManager);
|
||||
$this->application->setDispatcher($eventDispatcher);
|
||||
$this->application->setAutoExit(false);
|
||||
|
||||
$discovery = new CommandFileDiscovery();
|
||||
$discovery
|
||||
->setSearchPattern('*CommandFile.php')
|
||||
->setIncludeFilesAtBase(false)
|
||||
->setSearchLocations(['alpha']);
|
||||
|
||||
chdir(__DIR__);
|
||||
$commandFiles = $discovery->discover('.', '\Consolidation\TestUtils');
|
||||
|
||||
$formatter = new FormatterManager();
|
||||
$formatter->addDefaultFormatters();
|
||||
$formatter->addDefaultSimplifiers();
|
||||
$terminalWidthOption = new PrepareTerminalWidthOption();
|
||||
$terminalWidthOption->setApplication($this->application);
|
||||
$this->commandFactory->commandProcessor()->setFormatterManager($formatter);
|
||||
$this->commandFactory->commandProcessor()->addPrepareFormatter($terminalWidthOption);
|
||||
|
||||
$this->commandFactory->setIncludeAllPublicMethods(false);
|
||||
$this->addDiscoveredCommands($this->commandFactory, $commandFiles);
|
||||
|
||||
$helpCommandfile = new HelpCommand($this->application);
|
||||
$commandList = $this->commandFactory->createCommandsFromClass($helpCommandfile);
|
||||
foreach ($commandList as $command) {
|
||||
$this->application->add($command);
|
||||
}
|
||||
}
|
||||
|
||||
public function addDiscoveredCommands($factory, $commandFiles) {
|
||||
foreach ($commandFiles as $path => $commandClass) {
|
||||
$this->assertFileExists($path);
|
||||
if (!class_exists($commandClass)) {
|
||||
include $path;
|
||||
}
|
||||
$commandInstance = new $commandClass();
|
||||
$commandList = $factory->createCommandsFromClass($commandInstance);
|
||||
foreach ($commandList as $command) {
|
||||
$this->application->add($command);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function assertRunCommandViaApplicationEquals($cmd, $expectedOutput, $expectedStatusCode = 0)
|
||||
{
|
||||
$input = new StringInput($cmd);
|
||||
$output = new BufferedOutput();
|
||||
|
||||
$statusCode = $this->application->run($input, $output);
|
||||
$commandOutput = trim($output->fetch());
|
||||
|
||||
$expectedOutput = $this->simplifyWhitespace($expectedOutput);
|
||||
$commandOutput = $this->simplifyWhitespace($commandOutput);
|
||||
|
||||
$this->assertEquals($expectedOutput, $commandOutput);
|
||||
$this->assertEquals($expectedStatusCode, $statusCode);
|
||||
}
|
||||
|
||||
function simplifyWhitespace($data)
|
||||
{
|
||||
return trim(preg_replace('#\s+$#m', '', $data));
|
||||
}
|
||||
|
||||
function testHelp()
|
||||
{
|
||||
$expectedXML = <<<EOT
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<command id="example:table" name="example:table">
|
||||
<usages>
|
||||
<usage>example:table [--format [FORMAT]] [--fields [FIELDS]] [--field FIELD] [--] [<unused>]</usage>
|
||||
</usages>
|
||||
<examples>
|
||||
<example>
|
||||
<usage>example:table --format=yml</usage>
|
||||
<description>Show the example table in yml format.</description>
|
||||
</example>
|
||||
<example>
|
||||
<usage>example:table --fields=first,third</usage>
|
||||
<description>Show only the first and third fields in the table.</description>
|
||||
</example>
|
||||
<example>
|
||||
<usage>example:table --fields=II,III</usage>
|
||||
<description>Note that either the field ID or the visible field label may be used.</description>
|
||||
</example>
|
||||
</examples>
|
||||
<description>Test command with formatters</description>
|
||||
<arguments>
|
||||
<argument name="unused" is_required="0" is_array="0">
|
||||
<description>An unused argument</description>
|
||||
<defaults/>
|
||||
</argument>
|
||||
</arguments>
|
||||
<options>
|
||||
<option name="--format" shortcut="" accept_value="1" is_value_required="0" is_multiple="0">
|
||||
<description>Format the result data. Available formats: csv,json,list,php,print-r,sections,string,table,tsv,var_export,xml,yaml</description>
|
||||
<defaults>
|
||||
<default>table</default>
|
||||
</defaults>
|
||||
</option>
|
||||
<option name="--fields" shortcut="" accept_value="1" is_value_required="0" is_multiple="0">
|
||||
<description>Available fields: I (first), II (second), III (third)</description>
|
||||
<defaults/>
|
||||
</option>
|
||||
<option name="--field" shortcut="" accept_value="1" is_value_required="1" is_multiple="0">
|
||||
<description>Select just one field, and force format to 'string'.</description>
|
||||
<defaults/>
|
||||
</option>
|
||||
<option name="--help" shortcut="-h" accept_value="0" is_value_required="0" is_multiple="0">
|
||||
<description>Display this help message</description>
|
||||
</option>
|
||||
<option name="--quiet" shortcut="-q" accept_value="0" is_value_required="0" is_multiple="0">
|
||||
<description>Do not output any message</description>
|
||||
</option>
|
||||
<option name="--verbose" shortcut="-v" shortcuts="-v|-vv|-vvv" accept_value="0" is_value_required="0" is_multiple="0">
|
||||
<description>Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug</description>
|
||||
</option>
|
||||
<option name="--version" shortcut="-V" accept_value="0" is_value_required="0" is_multiple="0">
|
||||
<description>Display this application version</description>
|
||||
</option>
|
||||
<option name="--ansi" shortcut="" accept_value="0" is_value_required="0" is_multiple="0">
|
||||
<description>Force ANSI output</description>
|
||||
</option>
|
||||
<option name="--no-ansi" shortcut="" accept_value="0" is_value_required="0" is_multiple="0">
|
||||
<description>Disable ANSI output</description>
|
||||
</option>
|
||||
<option name="--no-interaction" shortcut="-n" accept_value="0" is_value_required="0" is_multiple="0">
|
||||
<description>Do not ask any interactive question</description>
|
||||
</option>
|
||||
</options>
|
||||
<help>Test command with formatters</help>
|
||||
<aliases>
|
||||
<alias>extab</alias>
|
||||
</aliases>
|
||||
<topics>
|
||||
<topic>docs-tables</topic>
|
||||
</topics>
|
||||
</command>
|
||||
EOT;
|
||||
|
||||
$this->assertRunCommandViaApplicationEquals('my-help --format=xml example:table', $expectedXML);
|
||||
|
||||
$expectedJSON = <<<EOT
|
||||
{
|
||||
"id": "example:table",
|
||||
"name": "example:table",
|
||||
"usages": [
|
||||
"example:table [--format [FORMAT]] [--fields [FIELDS]] [--field FIELD] [--] [<unused>]"
|
||||
],
|
||||
"examples": [
|
||||
{
|
||||
"usage": "example:table --format=yml",
|
||||
"description": "Show the example table in yml format."
|
||||
},
|
||||
{
|
||||
"usage": "example:table --fields=first,third",
|
||||
"description": "Show only the first and third fields in the table."
|
||||
},
|
||||
{
|
||||
"usage": "example:table --fields=II,III",
|
||||
"description": "Note that either the field ID or the visible field label may be used."
|
||||
}
|
||||
],
|
||||
"description": "Test command with formatters",
|
||||
"arguments": {
|
||||
"unused": {
|
||||
"name": "unused",
|
||||
"is_required": "0",
|
||||
"is_array": "0",
|
||||
"description": "An unused argument"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"format": {
|
||||
"name": "--format",
|
||||
"shortcut": "",
|
||||
"accept_value": "1",
|
||||
"is_value_required": "0",
|
||||
"is_multiple": "0",
|
||||
"description": "Format the result data. Available formats: csv,json,list,php,print-r,sections,string,table,tsv,var_export,xml,yaml",
|
||||
"defaults": [
|
||||
"table"
|
||||
]
|
||||
},
|
||||
"fields": {
|
||||
"name": "--fields",
|
||||
"shortcut": "",
|
||||
"accept_value": "1",
|
||||
"is_value_required": "0",
|
||||
"is_multiple": "0",
|
||||
"description": "Available fields: I (first), II (second), III (third)"
|
||||
},
|
||||
"field": {
|
||||
"name": "--field",
|
||||
"shortcut": "",
|
||||
"accept_value": "1",
|
||||
"is_value_required": "1",
|
||||
"is_multiple": "0",
|
||||
"description": "Select just one field, and force format to 'string'."
|
||||
},
|
||||
"help": {
|
||||
"name": "--help",
|
||||
"shortcut": "-h",
|
||||
"accept_value": "0",
|
||||
"is_value_required": "0",
|
||||
"is_multiple": "0",
|
||||
"description": "Display this help message"
|
||||
},
|
||||
"quiet": {
|
||||
"name": "--quiet",
|
||||
"shortcut": "-q",
|
||||
"accept_value": "0",
|
||||
"is_value_required": "0",
|
||||
"is_multiple": "0",
|
||||
"description": "Do not output any message"
|
||||
},
|
||||
"verbose": {
|
||||
"name": "--verbose",
|
||||
"shortcut": "-v",
|
||||
"shortcuts": "-v|-vv|-vvv",
|
||||
"accept_value": "0",
|
||||
"is_value_required": "0",
|
||||
"is_multiple": "0",
|
||||
"description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug"
|
||||
},
|
||||
"version": {
|
||||
"name": "--version",
|
||||
"shortcut": "-V",
|
||||
"accept_value": "0",
|
||||
"is_value_required": "0",
|
||||
"is_multiple": "0",
|
||||
"description": "Display this application version"
|
||||
},
|
||||
"ansi": {
|
||||
"name": "--ansi",
|
||||
"shortcut": "",
|
||||
"accept_value": "0",
|
||||
"is_value_required": "0",
|
||||
"is_multiple": "0",
|
||||
"description": "Force ANSI output"
|
||||
},
|
||||
"no-ansi": {
|
||||
"name": "--no-ansi",
|
||||
"shortcut": "",
|
||||
"accept_value": "0",
|
||||
"is_value_required": "0",
|
||||
"is_multiple": "0",
|
||||
"description": "Disable ANSI output"
|
||||
},
|
||||
"no-interaction": {
|
||||
"name": "--no-interaction",
|
||||
"shortcut": "-n",
|
||||
"accept_value": "0",
|
||||
"is_value_required": "0",
|
||||
"is_multiple": "0",
|
||||
"description": "Do not ask any interactive question"
|
||||
}
|
||||
},
|
||||
"help": "Test command with formatters",
|
||||
"aliases": [
|
||||
"extab"
|
||||
],
|
||||
"topics": [
|
||||
"docs-tables"
|
||||
]
|
||||
}
|
||||
EOT;
|
||||
$this->assertRunCommandViaApplicationEquals('my-help --format=json example:table', $expectedJSON);
|
||||
}
|
||||
}
|
||||
15
lib/composer/vendor/consolidation/config/.editorconfig
vendored
Normal file
15
lib/composer/vendor/consolidation/config/.editorconfig
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# This file is for unifying the coding style for different editors and IDEs
|
||||
# editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[**.php]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
3
lib/composer/vendor/consolidation/config/.gitignore
vendored
Normal file
3
lib/composer/vendor/consolidation/config/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.DS_Store
|
||||
vendor
|
||||
build
|
||||
38
lib/composer/vendor/consolidation/config/.travis.yml
vendored
Normal file
38
lib/composer/vendor/consolidation/config/.travis.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
language: php
|
||||
|
||||
branches:
|
||||
# Only test the master branch and SemVer tags.
|
||||
only:
|
||||
- master
|
||||
- /^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+.*$/
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
include:
|
||||
- php: 7.2
|
||||
env: 'SCENARIO=symfony4 HIGHEST_LOWEST="update"'
|
||||
- php: 7.1
|
||||
env: 'SCENARIO=symfony4'
|
||||
- php: 7.0.11
|
||||
env: 'HIGHEST_LOWEST="update"'
|
||||
- php: 7.0.11
|
||||
- php: 5.6
|
||||
- php: 5.5
|
||||
- php: 5.4
|
||||
env: 'SCENARIO=symfony2 HIGHEST_LOWEST="update --prefer-lowest'
|
||||
|
||||
sudo: false
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- vendor
|
||||
- $HOME/.composer/cache
|
||||
|
||||
install:
|
||||
- 'composer scenario "${SCENARIO}" "${HIGHEST_LOWEST-install}"'
|
||||
|
||||
script:
|
||||
- composer test
|
||||
|
||||
after_success:
|
||||
- travis_retry php vendor/bin/coveralls -v
|
||||
30
lib/composer/vendor/consolidation/config/CHANGELOG.md
vendored
Normal file
30
lib/composer/vendor/consolidation/config/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
# Changelog
|
||||
|
||||
### 1.0.6 10/17/2017
|
||||
|
||||
* Add a 'Config::combine()' method for importing without overwriting.
|
||||
* Factor out ArrayUtil as a reusable utility class.
|
||||
|
||||
### 1.0.4 10/16/2017
|
||||
|
||||
* BUGFIX: Go back to injecting boolean options only if their value is 'true'.
|
||||
|
||||
### 1.0.3 10/04/2017
|
||||
|
||||
* Add an EnvConfig utility class.
|
||||
* BUGFIX: Fix bug in envKey calculation: it was missing its prefix.
|
||||
* BUGFIX: Export must always return something.
|
||||
* BUGFIX: Pass reference array through to Expander class.
|
||||
|
||||
### 1.0.2 09/16/2017
|
||||
|
||||
* BUGFIX: Allow global boolean options to have either `true` or `false` initial values.
|
||||
|
||||
### 1.0.1 07/28/2017
|
||||
|
||||
* Inject default values into InputOption objects when 'help' command executed.
|
||||
|
||||
### 1.0.0 06/28/2017
|
||||
|
||||
* Initial release
|
||||
|
||||
31
lib/composer/vendor/consolidation/config/CONTRIBUTING.md
vendored
Normal file
31
lib/composer/vendor/consolidation/config/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
# Contributing to Consolidation
|
||||
|
||||
Thank you for your interest in contributing to the Consolidation effort! Consolidation aims to provide reusable, loosely-coupled components useful for building command-line tools. Consolidation is built on top of Symfony Console, but aims to separate the tool from the implementation details of Symfony.
|
||||
|
||||
Here are some of the guidelines you should follow to make the most of your efforts:
|
||||
|
||||
## Code Style Guidelines
|
||||
|
||||
Consolidation adheres to the [PSR-2 Coding Style Guide](http://www.php-fig.org/psr/psr-2/) for PHP code.
|
||||
|
||||
## Pull Request Guidelines
|
||||
|
||||
Every pull request is run through:
|
||||
|
||||
- phpcs -n --standard=PSR2 src
|
||||
- phpunit
|
||||
- [Scrutinizer](https://scrutinizer-ci.com/g/consolidation/config/)
|
||||
|
||||
It is easy to run the unit tests and code sniffer locally; just run:
|
||||
|
||||
- composer cs
|
||||
|
||||
To run the code beautifier, which will fix many of the problems reported by phpcs:
|
||||
|
||||
- composer cbf
|
||||
|
||||
These two commands (`composer cs` and `composer cbf`) are defined in the `scripts` section of [composer.json](composer.json).
|
||||
|
||||
After submitting a pull request, please examine the Scrutinizer report. It is not required to fix all Scrutinizer issues; you may ignore recommendations that you disagree with. The spacing patches produced by Scrutinizer do not conform to PSR2 standards, and therefore should never be applied. DocBlock patches may be applied at your discression. Things that Scrutinizer identifies as a bug nearly always need to be addressed.
|
||||
|
||||
Pull requests must pass phpcs and phpunit in order to be merged; ideally, new functionality will also include new unit tests.
|
||||
8
lib/composer/vendor/consolidation/config/LICENSE
vendored
Normal file
8
lib/composer/vendor/consolidation/config/LICENSE
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
Copyright (c) 2017 Consolidation Developers
|
||||
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
210
lib/composer/vendor/consolidation/config/README.md
vendored
Normal file
210
lib/composer/vendor/consolidation/config/README.md
vendored
Normal file
@@ -0,0 +1,210 @@
|
||||
# Consolidation\Config
|
||||
|
||||
Manage configuration for a commandline tool.
|
||||
|
||||
[](https://travis-ci.org/consolidation/config)
|
||||
[](https://scrutinizer-ci.com/g/consolidation/config/?branch=master)
|
||||
[](https://coveralls.io/github/consolidation/config?branch=master)
|
||||
[](https://packagist.org/packages/consolidation/config)
|
||||
|
||||
This component is designed to provide the components needed to manage configuration options from different sources, including:
|
||||
|
||||
- Commandline options
|
||||
- Configuration files
|
||||
- Alias files (special configuration files that identify a specific target site)
|
||||
- Default values (provided by command)
|
||||
|
||||
Symfony Console is used to provide the framework for the commandline tool, and the Symfony Configuration component is used to load and merge configuration files. This project provides the glue that binds the components together in an easy-to-use package.
|
||||
|
||||
If your goal is to be able to quickly write configurable commandline tools, you might want to consider using [Robo as a Framework](https://robo.li/framework), as the work for setting up this component is already done in that project. Consolidation/Config may be used with any Symfony Console application, though.
|
||||
|
||||
## Component Status
|
||||
|
||||
In use in Robo (1.x), Terminus (1.x) and Drush (9.x).
|
||||
|
||||
## Motivation
|
||||
|
||||
Provide a simple Config class that can be injected where needed to provide configuration values in non-command classes, and make configuration settings a no-op for command classes by automatically initializing the Input object from configuration as needed.
|
||||
|
||||
## Configuration File Usage
|
||||
|
||||
Configuration files are simple hierarchical yaml files.
|
||||
|
||||
### Providing Command Options
|
||||
|
||||
Command options are defined by creating an entry for each command name under the `command:` section of the configuration file. The options for the command should be defined within an `options:` section. For example, to set a configuration value `red` for the option `--color` in the `example` command:
|
||||
```
|
||||
command:
|
||||
example:
|
||||
options:
|
||||
color: red
|
||||
```
|
||||
If a command name contains a `:`, then each section of the command name defines another level of heirarchy in the command option configuration. For example, to set a configuration value `George` for the option `--name` of the command `my:foo`:
|
||||
```
|
||||
command:
|
||||
my:
|
||||
foo:
|
||||
options:
|
||||
name: George
|
||||
```
|
||||
Furthermore, every level of the command name heirarchy may contain options. For example, to define a configuration value for the option `--dir` for any command that begins with `my:`:
|
||||
```
|
||||
command:
|
||||
my:
|
||||
options:
|
||||
dir: '/base/path'
|
||||
foo:
|
||||
options:
|
||||
name: George
|
||||
bar:
|
||||
options:
|
||||
priority: high
|
||||
```
|
||||
|
||||
### Providing Global Options
|
||||
|
||||
If your Symfony Console application defines global options, like so (from a method in an extension of the Application class):
|
||||
```
|
||||
$this->getDefinition()
|
||||
->addOption(
|
||||
new InputOption('--simulate', null, InputOption::VALUE_NONE, 'Run in simulated mode (show what would have happened).')
|
||||
);
|
||||
```
|
||||
Default values for global options can then be declared in the global options section:
|
||||
```
|
||||
options:
|
||||
simulate: false
|
||||
```
|
||||
If this is done, then global option values set on the command line will be used to alter the value of the configuration item at runtime. For example, `$config->get('options.simulate')` will return `false` when the `--simulate` global option is not used, and will return `true` when it is.
|
||||
|
||||
See the section "Set Up Command Option Configuration Injection", below, for instructions on how to enable this setup.
|
||||
|
||||
### Configuration Value Substitution
|
||||
|
||||
It is possible to define values in a configuration file that will be substituted in wherever used. For example:
|
||||
```
|
||||
common:
|
||||
path: '/shared/path'
|
||||
command:
|
||||
my:
|
||||
options:
|
||||
dir: '${common.path}'
|
||||
foo:
|
||||
options:
|
||||
name: George
|
||||
```
|
||||
|
||||
[grasmash/yaml-expander](https://github.com/grasmash/expander) is used to provide this capability.
|
||||
|
||||
## API Usage
|
||||
|
||||
The easiest way to utilize the capabilities of this project is to use [Robo as a framework](https://robo.li/framework) to create your commandline tools. Using Robo is optional, though, as this project will work with any Symfony Console application.
|
||||
|
||||
### Load Configuration Files with Provided Loader
|
||||
|
||||
Consolidation/config includes a built-in yaml loader / processor. To use it directly, use a YamlConfigLoader to load each of your configuration files, and a ConfigProcessor to merge them together. Then, export the result from the configuration processor, and import it into a Config object.
|
||||
```
|
||||
use Consolidation\Config\Config;
|
||||
use Consolidation\Config\YamlConfigLoader;
|
||||
use Consolidation\Config\ConfigProcessor;
|
||||
|
||||
$config = new Config();
|
||||
$loader = new YamlConfigLoader();
|
||||
$processor = new ConfigProcessor();
|
||||
$processor->extend($loader->load('defaults.yml'));
|
||||
$processor->extend($loader->load('myconf.yml'));
|
||||
$config->import($processor->export());
|
||||
```
|
||||
|
||||
### Set Up Command Option Configuration Injection
|
||||
|
||||
The command option configuration feature described above in the section `Providing Command Options` is provided via a configuration injection class. All that you need to do to use this feature as attach this object to your Symfony Console application's event dispatcher:
|
||||
```
|
||||
$application = new Symfony\Component\Console\Application($name, $version);
|
||||
$configInjector = new \Consolidation\Config\Inject\ConfigForCommand($config);
|
||||
$configInjector->setApplication($application);
|
||||
|
||||
$eventDispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher();
|
||||
$eventDispatcher->addSubscriber($configInjector);
|
||||
$application->setDispatcher($eventDispatcher);
|
||||
```
|
||||
|
||||
|
||||
### Get Configuration Values
|
||||
If you have a configuration file that looks like this:
|
||||
```
|
||||
a:
|
||||
b:
|
||||
c: foo
|
||||
```
|
||||
Then you can fetch the value of the configuration option `c` via:
|
||||
```
|
||||
$value = $config->get('a.b.c');
|
||||
```
|
||||
[dflydev/dot-access-data](https://github.com/dflydev/dot-access-data) is leveraged to provide this capability.
|
||||
|
||||
### Configuration Overlays
|
||||
|
||||
Optionally, you may use the ConfigOverlay class to combine multiple configuration objects implamenting ConfigInterface into a single, prioritized configuration object. It is not necessary to use a configuration overlay; if your only goal is to merge configuration from multiple files, you may follow the example above to extend a processor with multiple configuration files, and then import the result into a single configuration object. This will cause newer configuration items to overwrite any existing values stored under the same key.
|
||||
|
||||
A configuration overlay can achieve the same end result without overwriting any config values. The advantage of doing this is that different configuration overlays could be used to create separate "views" on different collections of configuration. A configuration overlay is also useful if you wish to temporarily override some configuration values, and then put things back the way they were by removing the overlay.
|
||||
```
|
||||
use Consolidation\Config\Config;
|
||||
use Consolidation\Config\YamlConfigLoader;
|
||||
use Consolidation\Config\ConfigProcessor;
|
||||
use Consolidation\Config\Util\ConfigOverlay;
|
||||
|
||||
$config1 = new Config();
|
||||
$config2 = new Config();
|
||||
$loader = new YamlConfigLoader();
|
||||
$processor = new ConfigProcessor();
|
||||
$processor->extend($loader->load('c1.yml'));
|
||||
$config1->import($processor->export());
|
||||
$processor = new ConfigProcessor();
|
||||
$processor->extend($loader->load('c2.yml'));
|
||||
$config2->import($processor->export());
|
||||
|
||||
$configOverlay = (new ConfigOverlay())
|
||||
->addContext('one', $config1)
|
||||
->addContext('two', $config2);
|
||||
|
||||
$value = $configOverlay->get('key');
|
||||
|
||||
$configOverlay->removeContext('two');
|
||||
|
||||
$value = $configOverlay->get('key');
|
||||
```
|
||||
The first call to `$configOverlay->get('key')`, above, will return the value from `key` in `$config2`, if it exists, or from `$config1` otherwise. The second call to the same function, after `$config2` is removed, will only consider configuration values stored in `$config1`.
|
||||
|
||||
## External Examples
|
||||
|
||||
### Load Configuration Files with Symfony/Config
|
||||
|
||||
The [Symfony Config](http://symfony.com/doc/current/components/config.html) component provides the capability to locate configuration file, load them from either YAML or XML sources, and validate that they match a certain defined schema. Classes to find configuration files are also available.
|
||||
|
||||
If these features are needed, the results from `Symfony\Component\Config\Definition\Processor::processConfiguration()` may be provided directly to the `Consolidation\Config\Config::import()` method.
|
||||
|
||||
### Use Configuration to Call Setter Methods
|
||||
|
||||
[Robo](https://robo.li) provides a facility for configuration files to [define default values for task setter methods](http://robo.li/getting-started/#configuration-for-task-settings). This is done via the `ConfigForSetters::apply()` method.
|
||||
```
|
||||
$taskClass = static::configClassIdentifier($taskClass);
|
||||
$configurationApplier = new \Consolidation\Config\Inject\ConfigForSetters($this->getConfig(), $taskClass, 'task.');
|
||||
$configurationApplier->apply($task, 'settings');
|
||||
```
|
||||
The `configClassIdentifier` method converts `\`-separated class and namespace names into `.`-separated identifiers; it is provided by ConfigAwareTrait:
|
||||
```
|
||||
protected static function configClassIdentifier($classname)
|
||||
{
|
||||
$configIdentifier = strtr($classname, '\\', '.');
|
||||
$configIdentifier = preg_replace('#^(.*\.Task\.|\.)#', '', $configIdentifier);
|
||||
|
||||
return $configIdentifier;
|
||||
}
|
||||
```
|
||||
A similar pattern may be used in other applications that may wish to inject values into objects using their setter methods.
|
||||
|
||||
## Comparison to Existing Solutions
|
||||
|
||||
Drush has an existing procedural mechanism for loading configuration values from multiple files, and overlaying the results in priority order. Command-specific options from configuration files and site aliases may also be applied.
|
||||
|
||||
68
lib/composer/vendor/consolidation/config/composer.json
vendored
Normal file
68
lib/composer/vendor/consolidation/config/composer.json
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"name": "consolidation/config",
|
||||
"description": "Provide configuration services for a commandline tool.",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Greg Anderson",
|
||||
"email": "greg.1.anderson@greenknowe.org"
|
||||
}
|
||||
],
|
||||
"autoload":{
|
||||
"psr-4":{
|
||||
"Consolidation\\Config\\": "src"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Consolidation\\TestUtils\\": "tests/src"
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
"dflydev/dot-access-data": "^1.1.0",
|
||||
"grasmash/expander": "^1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4",
|
||||
"greg-1-anderson/composer-test-scenarios": "^1",
|
||||
"symfony/console": "^2.5|^3|^4",
|
||||
"symfony/yaml": "^2.8.11|^3|^4",
|
||||
"satooshi/php-coveralls": "^1.0",
|
||||
"squizlabs/php_codesniffer": "2.*"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
"sort-packages": true,
|
||||
"platform": {
|
||||
"php": "5.6"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"cs": "phpcs --standard=PSR2 -n src",
|
||||
"cbf": "phpcbf --standard=PSR2 -n src",
|
||||
"unit": "SHELL_INTERACTIVE=true phpunit --colors=always",
|
||||
"lint": [
|
||||
"find src -name '*.php' -print0 | xargs -0 -n1 php -l",
|
||||
"find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
|
||||
],
|
||||
"test": [
|
||||
"@lint",
|
||||
"@unit",
|
||||
"@cs"
|
||||
],
|
||||
"scenario": "scenarios/install",
|
||||
"post-update-cmd": [
|
||||
"create-scenario symfony4 'symfony/console:^4.0'",
|
||||
"create-scenario symfony2 'symfony/console:^2.8' --platform-php '5.4' --no-lockfile"
|
||||
]
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.x-dev"
|
||||
}
|
||||
}
|
||||
}
|
||||
1967
lib/composer/vendor/consolidation/config/composer.lock
generated
vendored
Normal file
1967
lib/composer/vendor/consolidation/config/composer.lock
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
19
lib/composer/vendor/consolidation/config/phpunit.xml.dist
vendored
Normal file
19
lib/composer/vendor/consolidation/config/phpunit.xml.dist
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
<phpunit bootstrap="vendor/autoload.php" colors="true">
|
||||
<testsuites>
|
||||
<testsuite name="config">
|
||||
<directory prefix="" suffix="Test.php">tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<logging>
|
||||
<!--
|
||||
<log type="coverage-html" target="build/logs/coverage" lowUpperBound="35"
|
||||
highLowerBound="70"/>
|
||||
-->
|
||||
<log type="coverage-clover" target="build/logs/clover.xml"/>
|
||||
</logging>
|
||||
<filter>
|
||||
<whitelist processUncoveredFilesFromWhitelist="true">
|
||||
<directory suffix=".php">src</directory>
|
||||
</whitelist>
|
||||
</filter>
|
||||
</phpunit>
|
||||
28
lib/composer/vendor/consolidation/config/scenarios/install
vendored
Executable file
28
lib/composer/vendor/consolidation/config/scenarios/install
vendored
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCENARIO=$1
|
||||
ACTION=${2-install}
|
||||
|
||||
dir=scenarios/${SCENARIO}
|
||||
if [ -z "$SCENARIO" ] ; then
|
||||
SCENARIO=default
|
||||
dir=.
|
||||
fi
|
||||
|
||||
|
||||
if [ ! -d "$dir" ] ; then
|
||||
echo "Requested scenario '${SCENARIO}' does not exist."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "::"
|
||||
echo ":: Switch to ${SCENARIO} scenario"
|
||||
echo "::"
|
||||
echo
|
||||
|
||||
set -ex
|
||||
|
||||
composer -n validate --working-dir=$dir --no-check-all --ansi
|
||||
composer -n --working-dir=$dir ${ACTION} --prefer-dist --no-scripts
|
||||
composer -n --working-dir=$dir info
|
||||
@@ -1,3 +1,2 @@
|
||||
.idea
|
||||
composer.lock
|
||||
vendor
|
||||
composer.lock
|
||||
70
lib/composer/vendor/consolidation/config/scenarios/symfony2/composer.json
vendored
Normal file
70
lib/composer/vendor/consolidation/config/scenarios/symfony2/composer.json
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"name": "consolidation/config",
|
||||
"description": "Provide configuration services for a commandline tool.",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Greg Anderson",
|
||||
"email": "greg.1.anderson@greenknowe.org"
|
||||
}
|
||||
],
|
||||
"autoload":{
|
||||
"psr-4":{
|
||||
"Consolidation\\Config\\": "src"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Consolidation\\TestUtils\\": "tests/src"
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
"dflydev/dot-access-data": "^1.1.0",
|
||||
"grasmash/expander": "^1"
|
||||
},
|
||||
"require-dev": {
|
||||
"greg-1-anderson/composer-test-scenarios": "^1",
|
||||
"phpunit/phpunit": "^4",
|
||||
"satooshi/php-coveralls": "^1.0",
|
||||
"squizlabs/php_codesniffer": "2.*",
|
||||
"symfony/console": "^2.8",
|
||||
"symfony/yaml": "^2.8.11|^3|^4"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
"sort-packages": true,
|
||||
"platform": {
|
||||
"php": "5.4"
|
||||
},
|
||||
"vendor-dir": "../../vendor"
|
||||
},
|
||||
"scripts": {
|
||||
"cs": "phpcs --standard=PSR2 -n src",
|
||||
"cbf": "phpcbf --standard=PSR2 -n src",
|
||||
"unit": "SHELL_INTERACTIVE=true phpunit --colors=always",
|
||||
"lint": [
|
||||
"find src -name '*.php' -print0 | xargs -0 -n1 php -l",
|
||||
"find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
|
||||
],
|
||||
"test": [
|
||||
"@lint",
|
||||
"@unit",
|
||||
"@cs"
|
||||
],
|
||||
"scenario": "scenarios/install",
|
||||
"post-update-cmd": [
|
||||
"create-scenario symfony4 'symfony/console:^4.0'",
|
||||
"create-scenario symfony2 'symfony/console:^2.8' --platform-php '5.4' --no-lockfile"
|
||||
]
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.x-dev"
|
||||
}
|
||||
},
|
||||
"minimum-stability": "stable"
|
||||
}
|
||||
1
lib/composer/vendor/consolidation/config/scenarios/symfony2/src
vendored
Symbolic link
1
lib/composer/vendor/consolidation/config/scenarios/symfony2/src
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../../src
|
||||
1
lib/composer/vendor/consolidation/config/scenarios/symfony2/tests
vendored
Symbolic link
1
lib/composer/vendor/consolidation/config/scenarios/symfony2/tests
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../../tests
|
||||
@@ -1,2 +1 @@
|
||||
.idea
|
||||
vendor
|
||||
70
lib/composer/vendor/consolidation/config/scenarios/symfony4/composer.json
vendored
Normal file
70
lib/composer/vendor/consolidation/config/scenarios/symfony4/composer.json
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"name": "consolidation/config",
|
||||
"description": "Provide configuration services for a commandline tool.",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Greg Anderson",
|
||||
"email": "greg.1.anderson@greenknowe.org"
|
||||
}
|
||||
],
|
||||
"autoload":{
|
||||
"psr-4":{
|
||||
"Consolidation\\Config\\": "src"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Consolidation\\TestUtils\\": "tests/src"
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
"dflydev/dot-access-data": "^1.1.0",
|
||||
"grasmash/expander": "^1"
|
||||
},
|
||||
"require-dev": {
|
||||
"greg-1-anderson/composer-test-scenarios": "^1",
|
||||
"phpunit/phpunit": "^4",
|
||||
"satooshi/php-coveralls": "^1.0",
|
||||
"squizlabs/php_codesniffer": "2.*",
|
||||
"symfony/console": "^4.0",
|
||||
"symfony/yaml": "^2.8.11|^3|^4"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
"sort-packages": true,
|
||||
"platform": {
|
||||
|
||||
},
|
||||
"vendor-dir": "../../vendor"
|
||||
},
|
||||
"scripts": {
|
||||
"cs": "phpcs --standard=PSR2 -n src",
|
||||
"cbf": "phpcbf --standard=PSR2 -n src",
|
||||
"unit": "SHELL_INTERACTIVE=true phpunit --colors=always",
|
||||
"lint": [
|
||||
"find src -name '*.php' -print0 | xargs -0 -n1 php -l",
|
||||
"find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
|
||||
],
|
||||
"test": [
|
||||
"@lint",
|
||||
"@unit",
|
||||
"@cs"
|
||||
],
|
||||
"scenario": "scenarios/install",
|
||||
"post-update-cmd": [
|
||||
"create-scenario symfony4 'symfony/console:^4.0'",
|
||||
"create-scenario symfony2 'symfony/console:^2.8' --platform-php '5.4' --no-lockfile"
|
||||
]
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.x-dev"
|
||||
}
|
||||
},
|
||||
"minimum-stability": "stable"
|
||||
}
|
||||
1911
lib/composer/vendor/consolidation/config/scenarios/symfony4/composer.lock
generated
vendored
Normal file
1911
lib/composer/vendor/consolidation/config/scenarios/symfony4/composer.lock
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
lib/composer/vendor/consolidation/config/scenarios/symfony4/src
vendored
Symbolic link
1
lib/composer/vendor/consolidation/config/scenarios/symfony4/src
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../../src
|
||||
1
lib/composer/vendor/consolidation/config/scenarios/symfony4/tests
vendored
Symbolic link
1
lib/composer/vendor/consolidation/config/scenarios/symfony4/tests
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../../tests
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user