Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 2000
//
// File: bcbuild.js
//
// Contents: A script which will connect to a Build Manager machine and
// initiate a file publishing phase.
//
//
//----------------------------------------------------------------------------
// Arguments: The name and identity of a machine to connect to.
var g_vRet; var g_strMachine; var g_strIdentity;
var g_objShell = WScript.CreateObject( "WScript.Shell" ); var g_objWshEnv = g_objShell.Environment("Process"); g_strIdentity = g_objWshEnv.Item("__MTSCRIPT_ENV_IDENTITY");
if (!g_strIdentity || g_strIdentity == '') { WScript.Echo("Error: Missing env var '__MTSCRIPT_ENV_IDENTITY'"); WScript.Quit(1); }
if (WScript.Arguments.length > 0) { if (WScript.Arguments.length < 2) { WScript.Echo("Error: You cannot specify just machine name - identity required"); WScript.Quit(1); } g_strMachine = WScript.Arguments(0); g_strIdentity = WScript.Arguments(1); }
g_vRet = PublishFilesNow(g_strMachine, g_strIdentity); WScript.Quit(g_vRet != true); // return 0 on success
function PublishFilesNow(strMachine, strIdentity) { var objRemote; var objEnviron;
objRemote = new ActiveXObject('MTScript.Proxy'); objRemote.ConnectToMTScript(strMachine, strIdentity, false);
if (objRemote.PublicData.strMode == 'idle') { WScript.Echo("the machine is idle"); return false; } if (objRemote.PublicData.strMode == 'slave') { objEnviron = objRemote.Exec('getpublic', 'PrivateData.objEnviron'); objEnviron = eval(objEnviron); if (objEnviron.BuildManager && objEnviron.BuildManager.Name) { WScript.Echo("The build manager is " + objEnviron.BuildManager.Name + "\\" + objEnviron.BuildManager.Identity); return PublishFilesNow(objEnviron.BuildManager.Name, objEnviron.BuildManager.Identity); } WScript.Echo("could not determine the build manager"); } g_vRet = objRemote.Exec('publishfilesnow',''); if (g_vRet == 'busy') { WScript.Echo("cannot publish files now: build is in progress"); return true; } g_vRet = eval(g_vRet); PrintPublishedFiles(g_vRet); return true; }
function PrintPublishedFiles(objPublishedFiles) { var objFiles; var nIndex; var nEnlistment; var strFile;
for(nIndex in objPublishedFiles) { for(nEnlistment in objPublishedFiles[nIndex]) { objFiles = objPublishedFiles[nIndex][nEnlistment]; if (objFiles.aNames != null && objFiles.aNames.length > 0) { WScript.Echo("Files published by " + objFiles.strLocalMachine); for(strFile in objFiles.aNames) { WScript.Echo(" " + objFiles.aNames[strFile].strName); } } } } }
|