File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / win32 / build / cvsclean.js
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:48:06 2012 UTC (13 years, 1 month ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, v5_3_10, HEAD
php

    1: /*
    2:   +----------------------------------------------------------------------+
    3:   | PHP Version 5                                                        |
    4:   +----------------------------------------------------------------------+
    5:   | Copyright (c) 1997-2009 The PHP Group                                |
    6:   +----------------------------------------------------------------------+
    7:   | This source file is subject to version 3.01 of the PHP license,      |
    8:   | that is bundled with this package in the file LICENSE, and is        |
    9:   | available through the world-wide-web at the following url:           |
   10:   | http://www.php.net/license/3_01.txt                                  |
   11:   | If you did not receive a copy of the PHP license and are unable to   |
   12:   | obtain it through the world-wide-web, please send a note to          |
   13:   | license@php.net so we can mail you a copy immediately.               |
   14:   +----------------------------------------------------------------------+
   15:   | Author: Wez Furlong <wez@thebrainroom.com>                           |
   16:   |         Pierre A. Joye <pierre@php.net>                              |
   17:   +----------------------------------------------------------------------+
   18: */
   19: 
   20: /* $Id: cvsclean.js,v 1.1.1.1 2012/02/21 23:48:06 misho Exp $ */
   21: // Cleans up files that do not belong in the repository
   22: 
   23: var FSO = WScript.CreateObject("Scripting.FileSystemObject");
   24: var WshShell = WScript.CreateObject("WScript.Shell");
   25: var STDOUT = WScript.StdOut;
   26: 
   27: /* svn propget svn:ignore dirname */
   28: function find_ignore(dirname)
   29: {
   30: 	dirname = "" + dirname;
   31: 	dirname_len = dirname.length;
   32: 
   33: 	if (!FSO.FolderExists(dirname) || (dirname_len >= 4 && 
   34: 	dirname.substring(dirname_len - 4) == ".svn")) {
   35: 		return;
   36: 	}
   37: 
   38: 	var f = FSO.GetFolder(dirname);
   39: 	var fc = new Enumerator(f.SubFolders);
   40: 
   41: 	for (; !fc.atEnd(); fc.moveNext()) {
   42: 		find_ignore(fc.item());
   43: 	}
   44: 
   45: 	kill_from_ignore(dirname);
   46: }
   47: 
   48: /* recursive remove using ignore props style wildcard matching;
   49:  * note that FSO.DeleteFolder and FSO.DeleteFile methods both
   50:  * accept wildcards, but that they are dangerous to use eg:
   51:  * "*.php" will match "*.phpt" */
   52: function rm_r(filename)
   53: {
   54: 	if (FSO.FolderExists(filename)) {
   55: 		var fc = new Enumerator(FSO.GetFolder(filename).SubFolders);
   56: 
   57: 		for (; !fc.atEnd(); fc.moveNext()) {
   58: 			rm_r(fc.item());
   59: 		}
   60: 
   61: 		fc = new Enumerator(FSO.GetFolder(filename).Files);
   62: 
   63: 		for (; !fc.atEnd(); fc.moveNext()) {
   64: 			FSO.DeleteFile(fc.item(), true);
   65: 		}
   66: 
   67: 		FSO.DeleteFolder(filename, true);
   68: 	} else if (FSO.FileExists(filename)) {
   69: 		FSO.DeleteFile(filename, true);
   70: 	} else {
   71: 		/* we need to handle wildcards here */
   72: 		var foldername = FSO.GetParentFolderName(filename);
   73: 
   74: 		if (foldername == "")
   75: 			foldername = ".";
   76: 
   77: 		var filename = FSO.GetFileName(filename);
   78: 
   79: 		var retext = filename.replace(/\./g, '\\.');
   80: 		retext = '^' + retext.replace(/\*/g, '.*') + "$";
   81: 		var re = new RegExp(retext);
   82: 
   83: 		var folder = FSO.GetFolder(foldername);
   84: 		var fc = new Enumerator(folder.SubFolders);
   85: 		for (; !fc.atEnd(); fc.moveNext()) {
   86: 
   87: 			var item = FSO.GetFileName(fc.item());
   88: 
   89: 			if (item.match(re)) {
   90: 				rm_r(fc.item());
   91: 			}
   92: 		}
   93: 		var fc = new Enumerator(folder.Files);
   94: 		for (; !fc.atEnd(); fc.moveNext()) {
   95: 			item = FSO.GetFileName(fc.item());
   96: 
   97: 			if (item.match(re)) {
   98: 				FSO.DeleteFile(fc.item(), true);
   99: 			}
  100: 		}
  101: 	}
  102: }
  103: 
  104: function kill_from_ignore(dirname)
  105: {
  106: 	var l;
  107: 	var e = WshShell.Exec("svn propget svn:ignore " + dirname);
  108: 	var re = /^(config\.nice.*)|(\*)$/i;
  109: 
  110: 	while (!e.StdOut.atEndOfStream) {
  111: 		l = e.StdOut.ReadLine();
  112: 		if (l.length == 0 || re.test(l)) {
  113: 			continue;
  114: 		}
  115: 		rm_r(dirname + l);
  116: 	}
  117: 
  118: }
  119: 
  120: find_ignore(".");

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>