phpDocumentor phpDocumentor
[ class tree: phpDocumentor ] [ index: phpDocumentor ] [ all elements ]

Source for file add_cvs.php

Documentation is available at add_cvs.php

  1. <?php
  2. //
  3. // +------------------------------------------------------------------------+
  4. // | phpDocumentor                                                          |
  5. // +------------------------------------------------------------------------+
  6. // | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver                 |
  7. // | Email         [email protected][email protected]                   |
  8. // | Web           http://www.phpdoc.org                                    |
  9. // | Mirror        http://phpdocu.sourceforge.net/                          |
  10. // | PEAR          http://pear.php.net/package-info.php?pacid=137           |
  11. // +------------------------------------------------------------------------+
  12. // | This source file is subject to version 3.00 of the PHP License,        |
  13. // | that is available at http://www.php.net/license/3_0.txt.               |
  14. // | If you did not receive a copy of the PHP license and are unable to     |
  15. // | obtain it through the world-wide-web, please send a note to            |
  16. // | [email protected] so we can mail you a copy immediately.                 |
  17. // +------------------------------------------------------------------------+
  18. //
  19. /**
  20.  * CVS file adding iterator
  21.  *
  22.  * This file iterates over a directory, and adds everything to CVS that is
  23.  * found, ignoring any error messages, until all files in each directory
  24.  * and subdirectory have been added to cvs.  It then commits the files to cvs
  25.  * @package phpDocumentor
  26.  * @author Greg Beaver <[email protected]>
  27.  * @copyright Copyright 2003, Greg Beaver
  28.  * @version 1.0
  29.  */
  30. /**#@+
  31.  * phpDocumentor include files.  If you don't have phpDocumentor, go get it!
  32.  * Your php life will be changed forever
  33.  */
  34. $dir realpath(dirname(__FILE__).'/..');
  35. require_once("$dir/phpDocumentor/common.inc.php");
  36. require_once("$dir/phpDocumentor/Io.inc");
  37. /**#@-*/
  38.  
  39. * Physical location on this computer of the package to parse
  40. @global string $cvsadd_directory 
  41. */
  42. $cvsadd_directory realpath('.');
  43. /**
  44. * Comma-separated list of files and directories to ignore
  45. *
  46. * This uses wildcards * and ? to remove extra files/directories that are
  47. * not part of the package or release
  48. @global string $ignore 
  49. */
  50. $ignore array('CVS/');
  51.  
  52. /****************************************************************************
  53. *       Don't change anything below here unless you're adventuresome          *
  54. *******************************************************************************/
  55.  
  56.  
  57. /**
  58.  * @global Io $files 
  59.  */
  60. $files new Io;
  61.  
  62. $allfiles $files->dirList($cvsadd_directory);
  63. /**#@+
  64.  * Sorting functions for the file list
  65.  * @param string 
  66.  * @param string 
  67.  */
  68. function sortfiles($a$b)
  69. {
  70.     return strnatcasecmp($a['file'],$b['file']);
  71. }
  72.  
  73. function mystrucsort($a$b)
  74. {
  75.     if (is_numeric($a&& is_string($b)) return 1;
  76.     if (is_numeric($b&& is_string($a)) return -1;
  77.     if (is_numeric($a&& is_numeric($b))
  78.     {
  79.         if ($a $breturn 1;
  80.         if ($a $breturn -1;
  81.         if ($a == $breturn 0;
  82.     }
  83.     return strnatcasecmp($a,$b);
  84. }
  85. /**#@-*/
  86.  
  87. $struc array();
  88. foreach($allfiles as $file)
  89. {
  90.     if ($files->checkIgnore(basename($file),dirname($file),$ignorefalse))
  91.     {
  92. //        print 'Ignoring '.$file."<br>\n";
  93.                 continue;
  94.     }
  95.     $path substr(dirname($file),strlen(str_replace('\\','/',realpath($cvsadd_directory)))+1);
  96.     if (!$path$path '/';
  97.     $file basename($file);
  98.     $ext array_pop(explode('.',$file));
  99.     if (strlen($ext== strlen($file)) $ext '';
  100.     $struc[$path][array('file' => $file,'ext' => $ext);
  101. }
  102. uksort($struc,'strnatcasecmp');
  103. foreach($struc as $key => $ind)
  104. {
  105.     usort($ind,'sortfiles');
  106.     $struc[$key$ind;
  107. }
  108. $tempstruc $struc;
  109. $struc array('/' => $tempstruc['/']);
  110. $bv 0;
  111. foreach($tempstruc as $key => $ind)
  112. {
  113.     $save $key;
  114.     if ($key != '/')
  115.     {
  116.         $struc['/'setup_dirs($struc['/']explode('/',$key)$tempstruc[$key]);
  117.     }
  118. }
  119. uksort($struc['/'],'mystrucsort');
  120.  * Recursively add files to cvs
  121.  * @param array the sorted directory structure
  122.  */
  123. function addToCVS($struc)
  124. {
  125.     foreach($struc as $dir => $files)
  126.     {
  127.         if ($dir === '/')
  128.         {
  129.             print 'processing '.$dir "\n";
  130.             addToCVS($struc[$dir]);
  131.             return;
  132.         else
  133.         {
  134.             if (!isset($files['file']))
  135.             {
  136.                 print 'adding '.$dir "\n";
  137.                 system('cvs add '.$dir);
  138.                 chdir($dir);
  139.                 addToCVS($files);
  140.                 chdir('..');
  141.             else
  142.             {
  143.                 print 'adding '.$files['file'"\n";
  144.                 system('cvs add '.$files['file']);
  145.                 system('cvs commit -m "" '.$files['file']);
  146.             }
  147.         }
  148.     }
  149. }
  150. addToCVS($struc);
  151. print "\n".'done';
  152. ?>

Documentation generated on Tue, 24 Oct 2006 09:20:36 -0500 by phpDocumentor 1.3.1