#1
|
|||
|
|||
builder.CompletionStatus and vbld_BuildDone()
Hi
I have got the project script below. The function "CreateXmlLogHandlingProject()" is working fine if "status" = vbldBuildCompFailed but it fails to run when "status" = vbldBuildCompDone or "status" = vbldBuildCompAborted. When the script failed the last msgbox displayed is "Test 3". Script: Option Explicit Function LogExt() If Application.Options.LogFormat = "Text" Then LogExt = "txt" Else LogExt = "xml" End If End Function Function vbld_BuildStarting() ' delete any existing log file before the build begins ' This can be useful if a master project calls child projects ' which use the same log file as the master project, but the ' log file should be deleted only at the start of the master build. ' The global option 'Tools | Application Options | Logging | Delete ' log file at the start of each build' would cause the log file to ' be deleted at the beginning of the master and each child project, ' so instead that option can be unchecked and this step added to the ' start of the master project. Dim logFile, message ' determine the log filename, retrieve with all macros/script expanded logFile = Application.ExpandMacrosAndScript("%LOGFILE%") ' delete the file if it exists If vbld_FSO.FileExists(logFile) Then message = "Deleting log file '" + logFile + "' from vbld_BuildStarting event (go to Script Editor, Project tab to view script code)." Builder.LogMessage vbCrLf + message + vbCrLf vbld_FSO.DeleteFile logFile, True End If End Function Function vbld_BuildDone(status) CreateXmlLogHandlingProject(status) End Function Dim objApp, objBld, objStep, objMacro Dim toEmailObjMacro, emailSubjectObjMacro, emailContentObjMacro Function CreateXmlLogHandlingProject(status) ' create VisBuildPro app and build objects and connect Set objBld = CreateObject("VisBuildSvr7.Builder") Set objApp = CreateObject("VisBuildSvr7.Application") objBld.Initialize objApp ' create a "XmlFilePath" macro containing the path of this project log file Set objMacro = objApp.Project.Macros.Add("XmlFilePath") objMacro.Value = Application.ExpandMacrosAndScript("%LOGFILE%") ' create a "HtmlFilePath" macro containing the path of the log file transformation result Set objMacro = objApp.Project.Macros.Add("HtmlFilePath") objMacro.Value = "%TEMP%\%PROJROOT%.html" objMacro.Value = Application.ExpandMacrosAndScript(objMacro.Value) ' create a "LogFormat" macro indicating the format of this project log file Set objMacro = objApp.Project.Macros.Add("LogFormat") objMacro.Value = Application.Options.LogFormat msgbox "status = " & status, vbOK, "CreateXmlLogHandlingProject" msgbox "Test 1", vbOK, "CreateXmlLogHandlingProject" ' create a "TO_EMAIL" macro containing the email distribution list Set objMacro = objApp.Project.Macros.Add("TO_EMAIL") Select case status case vbldBuildCompDone objMacro.Value = ""%myEmail%" case vbldBuildCompAborted objMacro.Value = ""%myEmail%" case vbldBuildCompFailed objMacro.Value = "%myEmail%" case else objMacro.Value = ""%myEmail%" end Select msgbox "Test 2, objMacro.Value = " & objMacro.Value, vbOK, "CreateXmlLogHandlingProject" ' create a "EmailSubject" macro containing the subject of the email Set objMacro = objApp.Project.Macros.Add("EmailSubject") msgbox "Test 3", vbOK, "CreateXmlLogHandlingProject" Select case status case vbldBuildCompDone objMacro.Value = "Nightly Build Result (COMPLETED)" case vbldBuildCompAborted objMacro.Value = "Nightly Build Result (ABORTED)" case vbldBuildCompFailed objMacro.Value = "Nightly Build Result (FAILED)" case else objMacro.Value = "Nightly Build Result (UNKNOWN STATUS='" + CStr(status) + "')" end Select msgbox "Test 4, objMacro.Value = " & objMacro.Value, vbOK, "CreateXmlLogHandlingProject" ' create a "EmailContent" macro containing the content of the email Set objMacro = objApp.Project.Macros.Add("EmailContent") msgbox "Test 5", vbOK, "CreateXmlLogHandlingProject" Select case status case vbldBuildCompDone objMacro.Value = Application.ExpandMacrosAndScript("At %DATETIME%, the build '%PROJFILE%' on %COMPUTERNAME% completed successfully.") + vbCrLf + vbCrLf + vbCrLf case vbldBuildCompAborted objMacro.Value = Application.ExpandMacrosAndScript("At %DATETIME%, the build '%PROJFILE%' on %COMPUTERNAME% was canceled by the user.") + vbCrLf + vbCrLf + vbCrLf case vbldBuildCompFailed objMacro.Value = Application.ExpandMacrosAndScript("At %DATETIME%, the build '%PROJFILE%' on %COMPUTERNAME% failed.") + vbCrLf + vbCrLf + vbCrLf case else objMacro.Value = Application.ExpandMacrosAndScript("At %DATETIME%, the build '%PROJFILE%' on %COMPUTERNAME% exit with unknow status: '") + CStr(status) + "'" + vbCrLf + vbCrLf + vbCrLf end Select msgbox "Test 6, objMacro.Value = " & objMacro.Value, vbOK, "CreateXmlLogHandlingProject" ' add a "Group" step and set its properties With CreateStep(vbldStepMain, "Group", "XML log handling", 0) .Property("condcomparison") = 6 .Property("condexpr") = "[Len(%QUOTE_STR(%XmlFilePath%)%) > 0 And ""%LogFormat%"" = ""XML""]" .Property("description") = "Show extra capabilities for XML log files only, processed only if log format is XML" End With msgbox "Test 7", vbOK, "CreateXmlLogHandlingProject" ' add a "Transform XML Log" step and set its properties With CreateStep(vbldStepMain, "Transform XML Log", "Generate HTML log", 1) .Property("Build0") = -1 .Property("Build1") = -1 .Property("Build2") = -1 .Property("CloseTags") = -1 .Property("InputFile") = "%XmlFilePath%" .Property("Log0") = -1 .Property("Log1") = -1 .Property("Log2") = -1 .Property("Log3") = -1 .Property("Log4") = -1 .Property("LogNested") = -1 .Property("OutputFile") = "%HtmlFilePath%" .Property("ShowFile") = -1 .Property("Step0") = -1 .Property("Step1") = -1 .Property("Step2") = -1 .Property("Step3") = -1 .Property("Step4") = -1 .Property("Step5") = -1 .Property("Step6") = -1 .Property("XSLTFile") = "%VISBUILDDIR%\Style\TransformLog.xslt" .Property("description") = "Perform transform on log file, converting to formatted HTML log with summary, uses built-in XSLT stylesheet" End With msgbox "Test 8", vbOK, "CreateXmlLogHandlingProject" ' add a "Send Mail" step and set its properties With CreateStep(vbldStepMain, "Send Mail", "Send Log File", 1) .Property("Attachments") = "%HtmlFilePath%" .Property("Domain") = "%USERDNSDOMAIN%" .Property("From") = "%USERNAME%@%USERDNSDOMAIN%" .Property("Message") = "%EmailContent%" .Property("Port") = 25 .Property("Server") = "%Server%" .Property("Subject") = "%EmailSubject%" .Property("Timeout") = 10 .Property("To") = "%TO_EMAIL%" .Property("description") = "Send the log file via email" End With ' save the project to disk to build in following step 'objApp.Project.Save "TEMP\dynamic.bld" 'MsgBox "Dynamic file location: TEMP\dynamic.bld", vbOkOnly, "Visual Build Pro" ' build the dynamic project objBld.SyncBuild End Function ' add a step to the project and return Function CreateStep(typ, action, name, indent) Set objStep = objApp.Project.Steps(typ).Add(action) objStep.Name = name objStep.Indent = indent Set CreateStep = objStep End Function |
|
|