]> granicus.if.org Git - php/commitdiff
"Real" cvsclean, works as the unix version does
authorWez Furlong <wez@php.net>
Fri, 19 Dec 2003 12:51:19 +0000 (12:51 +0000)
committerWez Furlong <wez@php.net>
Fri, 19 Dec 2003 12:51:19 +0000 (12:51 +0000)
cvsclean.bat
win32/build/cvsclean.js [new file with mode: 0644]

index 7ce955c15326423f87b3c58ce049affc9f3c7be4..4c0118d6719cd40a94f2b169bf13953ee5ab8248 100755 (executable)
@@ -1,2 +1,2 @@
 @echo off
-nmake /I clean
+cscript /nologo win32\build\cvsclean.js
diff --git a/win32/build/cvsclean.js b/win32/build/cvsclean.js
new file mode 100644 (file)
index 0000000..66dcb8c
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+  +----------------------------------------------------------------------+
+  | 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          |
+  | license@php.net so we can mail you a copy immediately.               |
+  +----------------------------------------------------------------------+
+  | Author: Wez Furlong <wez@thebrainroom.com>                           |
+  +----------------------------------------------------------------------+
+*/
+
+/* $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(".");
+