wez             Fri Dec 19 07:51:20 2003 EDT

  Added files:                 
    /php-src/win32/build        cvsclean.js 

  Modified files:              
    /php-src    cvsclean.bat 
  Log:
  "Real" cvsclean, works as the unix version does
  
Index: php-src/cvsclean.bat
diff -u php-src/cvsclean.bat:1.1 php-src/cvsclean.bat:1.2
--- php-src/cvsclean.bat:1.1    Sat Dec 13 13:50:38 2003
+++ php-src/cvsclean.bat        Fri Dec 19 07:51:19 2003
@@ -1,2 +1,2 @@
 @echo off
-nmake /I clean
+cscript /nologo win32\build\cvsclean.js

Index: php-src/win32/build/cvsclean.js
+++ php-src/win32/build/cvsclean.js
/*
  +----------------------------------------------------------------------+
  | PHP Version 5                                                        |
  +----------------------------------------------------------------------+
  | Copyright (c) 1997-2003 The PHP Group                                |
  +----------------------------------------------------------------------+
  | This source file is subject to version 3.0 of the PHP license,       |
  | that is bundled with this package in the file LICENSE, and is        |
  | available through the world-wide-web at the following url:           |
  | http://www.php.net/license/3_0.txt.                                  |
  | If you did not receive a copy of the PHP license and are unable to   |
  | obtain it through the world-wide-web, please send a note to          |
  | [EMAIL PROTECTED] so we can mail you a copy immediately.               |
  +----------------------------------------------------------------------+
  | Author: Wez Furlong <[EMAIL PROTECTED]>                           |
  +----------------------------------------------------------------------+
*/

/* $Id: cvsclean.js,v 1.1 2003/12/19 12:51:19 wez Exp $ */
// Cleans up files that do not belong in CVS

var FSO = WScript.CreateObject("Scripting.FileSystemObject");

function find_cvsignore(dirname)
{
        if (!FSO.FolderExists(dirname))
                return;

        var f = FSO.GetFolder(dirname);
        var fc = new Enumerator(f.SubFolders);
        
        for (; !fc.atEnd(); fc.moveNext()) {
                find_cvsignore(fc.item());      
        }

        if (FSO.FileExists(dirname + "\\.cvsignore")) {
                kill_from_cvsignore(dirname + "\\.cvsignore");
        }
}

/* recursive remove using cvsignore style wildcard matching;
 * note that FSO.DeleteFolder and FSO.DeleteFile methods both
 * accept wildcards, but that they are dangerous to use eg:
 * "*.php" will match "*.phpt" */
function rm_r(filename)
{
        if (FSO.FolderExists(filename)) {
                var fc = new Enumerator(FSO.GetFolder(filename).SubFolders);

                for (; !fc.atEnd(); fc.moveNext()) {
                        rm_r(fc.item());
                }

                fc = new Enumerator(FSO.GetFolder(filename).Files);

                for (; !fc.atEnd(); fc.moveNext()) {
                        FSO.DeleteFile(fc.item(), true);
                }

                FSO.DeleteFolder(filename, true);
        } else if (FSO.FileExists(filename)) {
                FSO.DeleteFile(filename, true);
        } else {
                /* we need to handle wildcards here */
                var foldername = FSO.GetParentFolderName(filename);

                if (foldername == "")
                        foldername = ".";
                
                var filename = FSO.GetFileName(filename);

                var retext = filename.replace(/\./g, '\\.');
                retext = '^' + retext.replace(/\*/g, '.*') + "$";
                var re = new RegExp(retext);

                var folder = FSO.GetFolder(foldername);
                var fc = new Enumerator(folder.SubFolders);
                for (; !fc.atEnd(); fc.moveNext()) {

                        var item = FSO.GetFileName(fc.item());

                        if (item.match(re)) {
                                rm_r(fc.item());
                        }
                }
                var fc = new Enumerator(folder.Files);
                for (; !fc.atEnd(); fc.moveNext()) {
                        item = FSO.GetFileName(fc.item());

                        if (item.match(re)) {
                                FSO.DeleteFile(fc.item(), true);
                        }
                }
        }
}

function kill_from_cvsignore(igfile)
{
        var dir = FSO.GetParentFolderName(igfile) + "\\";
        var t = FSO.OpenTextFile(igfile, 1);
        var l;
        
        if (dir == ".\\") {
                dir = "";
        }
                
        while (!t.atEndOfStream) {
                l = t.ReadLine();
                // don't kill their config.nice file(s)
                if (l.match("config\.nice.*"))
                        continue;
                rm_r(dir + l);
        }

}

find_cvsignore(".");

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to