/**
  * Generates JS package files given in the manifests, including extensions.
  */
 public function main()
 {
     $ds = DIRECTORY_SEPARATOR;
     $this->_msg('Generating JSB2 packages');
     $abslen = strlen($this->_projectPath);
     foreach ($this->_arcavias->getCustomPaths('client/extjs') as $base => $paths) {
         foreach ($paths as $path) {
             $jsbPath = $base . $ds . $path;
             $message = sprintf('Package: %1$s ', $jsbPath);
             $this->_msg(sprintf('Package: %1$s ', $jsbPath));
             if (!is_file($jsbPath) || !is_readable($jsbPath)) {
                 $this->_msg($message, 'failed');
                 $this->_msg(sprintf('No manifest file found in %1$s', $jsbPath));
                 continue;
             }
             try {
                 $jsbParser = new MW_Jsb2_Default($jsbPath);
                 $jsbParser->deploy('js');
                 $this->_msg($message, 'done');
             } catch (Exception $e) {
                 $this->_msg($message, 'failed');
                 $this->_msg(sprintf('Error: %1$s', $e->getMessage()));
             }
         }
     }
 }