Procházet zdrojové kódy

Merge branch 'master' into 2.0

Jordi Boggiano před 5 roky
rodič
revize
f6b3f12107

+ 3 - 0
.github/FUNDING.yml

@@ -0,0 +1,3 @@
+# These are supported funding model platforms
+
+custom: https://packagist.com

+ 8 - 2
doc/01-basic-usage.md

@@ -241,8 +241,14 @@ be in your project root, on the same level as `vendor` directory is. An example
 filename would be `src/Foo.php` containing an `Acme\Foo` class.
 
 After adding the [`autoload`](04-schema.md#autoload) field, you have to re-run
-[`dump-autoload`](03-cli.md#dump-autoload) to re-generate the
-`vendor/autoload.php` file.
+this command : 
+
+```sh
+php composer.phar dump-autoload
+```
+
+This command will re-generate the `vendor/autoload.php` file.
+See the [`dump-autoload`](03-cli.md#dump-autoload) section for more informations.
 
 Including that file will also return the autoloader instance, so you can store
 the return value of the include call in a variable and add more namespaces.

+ 1 - 1
doc/03-cli.md

@@ -706,7 +706,7 @@ performance.
 * **--apcu:** Use APCu to cache found/not-found classes.
 * **--no-dev:** Disables autoload-dev rules.
 
-## clear-cache (clearcache)
+## clear-cache / clearcache / cc
 
 Deletes all content from Composer's cache directories.
 

+ 1 - 1
src/Composer/Command/ClearCacheCommand.php

@@ -26,7 +26,7 @@ class ClearCacheCommand extends BaseCommand
     {
         $this
             ->setName('clear-cache')
-            ->setAliases(array('clearcache'))
+            ->setAliases(array('clearcache', 'cc'))
             ->setDescription('Clears composer\'s internal package cache.')
             ->setHelp(
                 <<<EOT

+ 18 - 5
src/Composer/Command/CreateProjectCommand.php

@@ -279,6 +279,24 @@ EOT
             $packageVersion = $requirements[0]['version'];
         }
 
+        // if no directory was specified, use the 2nd part of the package name
+        if (null === $directory) {
+            $parts = explode("/", $name, 2);
+            $directory = array_pop($parts);
+        }
+
+        $directory = getcwd() . DIRECTORY_SEPARATOR . $directory;
+        $io->writeError('<info>Creating a "' . $packageName . '" project at "' . $directory . '"</info>');
+
+        $fs = new Filesystem();
+        if (file_exists($directory)) {
+            if (!is_dir($directory)) {
+                throw new \InvalidArgumentException('Cannot create project directory at "'.$directory.'", it exists as a file.');
+            } elseif (!$fs->isDirEmpty($directory)) {
+                throw new \InvalidArgumentException('Project directory "'.$directory.'" is not empty.');
+            }
+        }
+
         if (null === $stability) {
             if (preg_match('{^[^,\s]*?@('.implode('|', array_keys(BasePackage::$stabilities)).')$}i', $packageVersion, $match)) {
                 $stability = $match[1];
@@ -320,11 +338,6 @@ EOT
             throw new \InvalidArgumentException($errorMessage .'.');
         }
 
-        if (null === $directory) {
-            $parts = explode("/", $name, 2);
-            $directory = getcwd() . DIRECTORY_SEPARATOR . array_pop($parts);
-        }
-
         // handler Ctrl+C for unix-like systems
         if (function_exists('pcntl_async_signals')) {
             @mkdir($directory, 0777, true);

+ 2 - 2
src/Composer/Downloader/ZipDownloader.php

@@ -107,11 +107,11 @@ class ZipDownloader extends ArchiveDownloader
         $command = 'unzip -qq '.$overwrite.' '.ProcessExecutor::escape($file).' -d '.ProcessExecutor::escape($path);
 
         try {
-            if (0 === $this->process->execute($command, $ignoredOutput)) {
+            if (0 === $exitCode = $this->process->execute($command, $ignoredOutput)) {
                 return true;
             }
 
-            $processError = new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput());
+            $processError = new \RuntimeException('Failed to execute ('.$exitCode.') '.$command."\n\n".$this->process->getErrorOutput());
         } catch (\Exception $e) {
             $processError = $e;
         }

+ 2 - 2
tests/Composer/Test/Downloader/ZipDownloaderTest.php

@@ -179,7 +179,7 @@ class ZipDownloaderTest extends TestCase
 
     /**
      * @expectedException \Exception
-     * @expectedExceptionMessage Failed to execute unzip
+     * @expectedExceptionMessage Failed to execute (1) unzip
      */
     public function testSystemUnzipOnlyFailed()
     {
@@ -305,7 +305,7 @@ class ZipDownloaderTest extends TestCase
 
     /**
      * @expectedException \Exception
-     * @expectedExceptionMessage Failed to execute unzip
+     * @expectedExceptionMessage Failed to execute (1) unzip
      */
     public function testWindowsFallbackFailed()
     {

+ 1 - 1
tests/Composer/Test/Fixtures/functional/create-project-shows-full-hash-for-dev-packages.test

@@ -1,4 +1,4 @@
 --RUN--
 create-project --repository=packages.json -v seld/jsonlint %testDir% dev-master
 --EXPECT-ERROR-REGEX--
-{^Installing seld/jsonlint \(dev-master [a-f0-9]{40}\)}
+{^Installing seld/jsonlint \(dev-master [a-f0-9]{40}\)}m