Browse Source

Merge pull request #3034 from Petah/clear-cache

Add clear cache command.
Nils Adermann 10 years ago
parent
commit
ea6917c87a
2 changed files with 61 additions and 0 deletions
  1. 60 0
      src/Composer/Command/ClearCacheCommand.php
  2. 1 0
      src/Composer/Console/Application.php

+ 60 - 0
src/Composer/Command/ClearCacheCommand.php

@@ -0,0 +1,60 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ *     Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Command;
+
+use Composer\Cache;
+use Composer\Factory;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * @author David Neilsen <petah.p@gmail.com>
+ */
+class ClearCacheCommand extends Command
+{
+    protected function configure()
+    {
+        $this
+            ->setName('clear-cache')
+            ->setAliases(array('clearcache'))
+            ->setDescription('Clears composer\'s internal package cache.')
+            ->setHelp(<<<EOT
+The <info>clear-cache</info> deletes all cached packages from composer's
+cache directory.
+EOT
+            )
+        ;
+    }
+
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        $config = Factory::createConfig();
+        $io = $this->getIO();
+        
+        $cachePath = realpath($config->get('cache-repo-dir'));
+        if (!$cachePath) {
+            $io->write('<info>Cache directory does not exist.</info>');
+            return;
+        }
+
+        $cache = new Cache($io, $cachePath);
+        if (!$cache->isEnabled()) {
+            $io->write('<info>Cache is not enabled.</info>');
+            return;
+        }
+
+        $io->write('<info>Clearing cache in: '.$cachePath.'</info>');
+        $cache->gc(0, 0);
+        $io->write('<info>Cache cleared.</info>');
+    }
+}

+ 1 - 0
src/Composer/Console/Application.php

@@ -227,6 +227,7 @@ class Application extends BaseApplication
         $commands[] = new Command\RunScriptCommand();
         $commands[] = new Command\LicensesCommand();
         $commands[] = new Command\GlobalCommand();
+        $commands[] = new Command\ClearCacheCommand();
 
         if ('phar:' === substr(__FILE__, 0, 5)) {
             $commands[] = new Command\SelfUpdateCommand();