119 lines
3.8 KiB
JavaScript
119 lines
3.8 KiB
JavaScript
|
|
||
|
var MAIL_RESEND_INTERVAL = 30 * 60 * 1000; // Send another error mail after 30 minutes
|
||
|
var MAX_ERRORLOG_LINES = 50; // Maximum number of lines to pull from the error log
|
||
|
|
||
|
function GetBuildInformation()
|
||
|
{
|
||
|
var strMsg = "";
|
||
|
|
||
|
strMsg += 'Build Type: ' + PrivateData.objConfig.Options.BuildType + '\n';
|
||
|
strMsg += 'Build Platform: ' + PrivateData.objConfig.Options.Platform + '\n';
|
||
|
strMsg += 'Incremental Build: ' + (PrivateData.objConfig.Options.fIncremental ? 'true' : 'false') + '\n';
|
||
|
|
||
|
strMsg += 'Build Manager: ' + PrivateData.objEnviron.BuildManager.Name + '\n';
|
||
|
if (PrivateData.objEnviron.BuildManager.PostBuildMachine)
|
||
|
strMsg += 'PostBuild Machine: ' + PrivateData.objEnviron.BuildManager.PostBuildMachine + '\n\n';
|
||
|
|
||
|
return strMsg;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
SendErrorMail()
|
||
|
|
||
|
Contruct a nicely formatted EMail message with the given
|
||
|
error information and send it.
|
||
|
|
||
|
No attempt to limit the frequency of email is done - this should
|
||
|
be done by the caller.
|
||
|
*/
|
||
|
function SendErrorMail(strTitle, strText)
|
||
|
{
|
||
|
var aTo = PrivateData.objEnviron.Options.EmailAliasTo.split(/[,; ]/);
|
||
|
var aCC = PrivateData.objEnviron.Options.EmailAliasCC.split(/[,; ]/);
|
||
|
var strMsg;
|
||
|
var strSubj;
|
||
|
|
||
|
strSubj = 'BC: "' + PrivateData.objConfig.LongName + ' ' + PrivateData.objEnviron.LongName + '" ' + strTitle;
|
||
|
strMsg = 'This is a Build Console message being sent from ' + LocalMachine + '.\n\n';
|
||
|
strMsg += strTitle +'\n\n';
|
||
|
strMsg += GetBuildInformation();
|
||
|
strMsg += strText;
|
||
|
|
||
|
if (aTo.length > 0 && aTo[0].length == 0)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (aCC.length > 0 && aCC[0].length == 0)
|
||
|
{
|
||
|
aCC = new Array();
|
||
|
}
|
||
|
|
||
|
LogMsg('Sending mail to =' + aTo.join(' ='));
|
||
|
|
||
|
var iRet = SendMail('=' + aTo.join(' ='),
|
||
|
(aCC.length > 0) ? '=' + aCC.join(' =') : '',
|
||
|
'',
|
||
|
strSubj,
|
||
|
strMsg);
|
||
|
|
||
|
LogMsg("On error EMAIL MESSAGE: " + strSubj + ", " + strMsg);
|
||
|
if (iRet)
|
||
|
{
|
||
|
LogMsg('an error occurred sending Email, return code was ' + iRet);
|
||
|
return false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
Create the message subject and body for a task error message, suitable
|
||
|
for emailing.
|
||
|
*/
|
||
|
function CreateTaskErrorMail(strMachineName, strDepotName, strTaskName, strDetails, strLogFile)
|
||
|
{
|
||
|
var strMsg;
|
||
|
var strSubj;
|
||
|
|
||
|
strMsg = 'This is a Build Console message being sent from ' + strMachineName + '.\n\n';
|
||
|
strMsg += 'An error occurred doing the ' + strTaskName + ' task on ';
|
||
|
strMsg += 'the ' + strDepotName + ' depot. Some available information ';
|
||
|
strMsg += 'will appear below, but for complete information you will need ';
|
||
|
strMsg += 'to view the full error log. You can do this using the Console UI.\n\n';
|
||
|
strMsg += ' Thanks for using Build Console!\n\n';
|
||
|
strMsg += ' --------------------------------------------------\n\n';
|
||
|
|
||
|
strMsg += strDetails + '\n\n';
|
||
|
|
||
|
if (strLogFile)
|
||
|
{
|
||
|
var FSObj = new ActiveXObject("Scripting.FileSystemObject");
|
||
|
var file;
|
||
|
var cLineCnt = 0;
|
||
|
|
||
|
try
|
||
|
{
|
||
|
file = FSObj.OpenTextFile(strLogFile, 1);
|
||
|
|
||
|
while (!file.AtEndOfStream && cLineCnt <= MAX_ERRORLOG_LINES)
|
||
|
{
|
||
|
strMsg += file.ReadLine() + '\n';
|
||
|
cLineCnt++;
|
||
|
}
|
||
|
|
||
|
strMsg += '\nThe complete error log is located at ' + strLogFile;
|
||
|
|
||
|
file.Close();
|
||
|
}
|
||
|
catch(ex)
|
||
|
{
|
||
|
LogMsg('An error occurred reading the log file "' + strLogFile + '" for email: ' + ex);
|
||
|
strMsg += 'Could not attach error log (' + strLogFile + '): ' + ex;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
strSubj = 'An error occurred during a ' + strTaskName + '!';
|
||
|
|
||
|
SimpleErrorDialog(strSubj, strMsg, true);
|
||
|
}
|