protected function execute($arguments = array(), $options = array())
 {
     $plugin = $arguments['plugin'];
     // Validate the application name
     if (!preg_match('/^[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*$/', $plugin)) {
         throw new sfCommandException(sprintf('The OpenPNE plugin name "%s" is invalid.', $plugin));
     }
     $opPluginDir = sfConfig::get('sf_plugins_dir') . '/' . $plugin;
     if (is_dir($opPluginDir)) {
         throw new sfCommandException(sprintf('The OpenPNE plugin "%s" already exists.', $opPluginDir));
     }
     // create basic opPlugin structure
     $finder = sfFinder::type('any')->discard('.sf');
     $this->getFilesystem()->mirror(dirname(__FILE__) . '/skeleton/opPlugin', $opPluginDir, $finder);
     $fixPerms = new openpnePermissionTask($this->dispatcher, $this->formatter);
     $fixPerms->setCommandApplication($this->commandApplication);
     @$fixPerms->run();
 }