From 61e894879722b6b7df573f22f86b9c43e588555f Mon Sep 17 00:00:00 2001 From: Gilles Depeyrot Date: Sun, 7 Oct 2001 16:46:16 +0000 Subject: [PATCH] AppleScript that finds and rebuilds all the CodeWarrior projects git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11876 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/mac/BuildSamplesM5.as | 227 +++++++++++++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100755 docs/mac/BuildSamplesM5.as diff --git a/docs/mac/BuildSamplesM5.as b/docs/mac/BuildSamplesM5.as new file mode 100755 index 0000000000..474bf0ad2e --- /dev/null +++ b/docs/mac/BuildSamplesM5.as @@ -0,0 +1,227 @@ +-- +-- File: BuildSamplesM5.as +-- Purpose: Automatic build of samples with CodeWarrior 5 +-- Author: Gilles Depeyrot +-- Created: 06.10.2001 +-- + +-- +-- This AppleScript automatically recurses through the selected folder looking for +-- and building CodeWarrior projects. +-- To use this script, simply open it with the 'Script Editor' and run it. +-- + +-- +-- Suffix used to recognize CodeWarrior project files +-- +property gProjectSuffix : "M5.mcp" + +-- +-- Values used to create the log file +-- +property gEol : " +" +property gSeparator : "--------------------------------------------------------------------------------" & gEol + +-- +-- Project and build success count +-- +set theProjectCount to 0 +set theProjectSuccessCount to 0 + +-- +-- Default log file name +-- +set theDate to (day of (current date)) & "/" & GetMonthIndex(current date) & "/" & (year of (current date)) +set theLogFileName to "wxMac samples " & theDate & ".log" + +-- +-- Ask the user to select the wxWindows samples folder +-- +set theFolder to choose folder with prompt "Select the wxWindows samples folder" + +-- +-- Ask the user to choose the build log file +-- +set theLogFile to choose file name with prompt "Create the wxWindows samples build log file" default name theLogFileName + +-- +-- Open the log file to record the build log +-- +set theLogFileRef to open for access theLogFile with write permission + +-- +-- Write log file header +-- +write gSeparator starting at 0 to theLogFileRef +write "wxWindows samples build log" & gEol to theLogFileRef +write gSeparator to theLogFileRef +write "start on " & ((current date) as string) & gEol to theLogFileRef +write gSeparator to theLogFileRef +write "building projects in '" & (theFolder as string) & "'" & gEol to theLogFileRef +write gSeparator to theLogFileRef + +-- +-- Build or Rebuild targets? +-- +set theText to "Build or rebuild projects?" +set theBuild to button returned of (display dialog theText buttons {"Cancel", "Build", "Rebuild"} default button "Rebuild" with icon note) +if theBuild is not equal to "Cancel" then + -- + -- Build which targets? + -- + set theText to theBuild & " Classic or Carbon targets?" + set theType to button returned of (display dialog theText buttons {"Cancel", "Classic", "Carbon"} default button "Carbon" with icon note) + if theType is not equal to "Cancel" then + -- + -- Build Debug or Release targets? + -- + set theText to theBuild & " " & theType & " Debug or " & theType & " Release targets?" + set theOption to button returned of (display dialog theText buttons {"Cancel", "Release", "Debug"} default button "Debug" with icon note) + if theOption is not equal to "Cancel" then + set theTarget to theType & " " & theOption + + write "building project targets '" & theTarget & "'" & gEol to theLogFileRef + write gSeparator to theLogFileRef + + BuildProjects(theLogFileRef, theFolder, theTarget, theBuild is equal to "Rebuild") + + end if + end if +end if + +-- +-- Write log file footer +-- +write "successful build of " & theProjectSuccessCount & " projects out of " & theProjectCount & gEol to theLogFileRef +write gSeparator to theLogFileRef +write "end on " & ((current date) as string) & gEol to theLogFileRef +write gSeparator to theLogFileRef +-- +-- Close the log file +-- +close access theLogFileRef +-- +-- Open the file in BBEdit Lite +-- +tell application "BBEdit Lite 6.1" + activate + open theLogFile +end tell + +-- +-- BuildProjects +-- +on BuildProjects(inLogFileRef, inFolder, inTarget, inRebuild) + global theProjectCount, theProjectSuccessCount + + tell application "Finder" to set theSubFolders to every folder of inFolder + + repeat with theFolder in theSubFolders + + tell application "Finder" to set theProject to (the first file of theFolder whose name ends with gProjectSuffix) + + if theProject as string is not "" then + set theProjectCount to theProjectCount + 1 + write "building project '" & (theProject as string) & "'" & gEol to inLogFileRef + + tell application "CodeWarrior IDE 4.0.4" + -- + -- Open the project in CodeWarrior + -- + open theProject as string + -- + -- Change to the requested target + -- + Set Current Target inTarget + -- + -- Remove object code if rebuild requested + -- + if inRebuild then + Remove Binaries + end if + -- + -- Build/Rebuild the selected target + -- + set theBuildInfo to Make Project with ExternalEditor + -- + -- Close the project + -- + Close Project + end tell + -- + -- Report errors to build log file + -- + write gEol to inLogFileRef + ReportBuildInfo(inLogFileRef, theBuildInfo) + write gSeparator to inLogFileRef + else + BuildProjects(inLogFileRef, theFolder, inTarget, inRebuild) + end if + + end repeat +end BuildProjects + +-- +-- ReportBuildInfo +-- +on ReportBuildInfo(inLogFileRef, inBuildInfo) + global theProjectCount, theProjectSuccessCount + + set theErrorCount to 0 + set theWarningCount to 0 + + repeat with theInfo in inBuildInfo + tell application "CodeWarrior IDE 4.0.4" + set theKind to ((messageKind of theInfo) as string) + + write "*** " & theKind & " *** " & message of theInfo & gEol to inLogFileRef + try + set theFile to ((file of theInfo) as string) + on error + set theFile to "" + end try + if theFile is not "" then + write theFile & " line " & lineNumber of theInfo & gEol to inLogFileRef + end if + write gEol to inLogFileRef + end tell + + if MessageKindIsError(theKind) then + set theErrorCount to theErrorCount + 1 + else + set theWarningCount to theWarningCount + 1 + end if + end repeat + + if theErrorCount is 0 then + set theProjectSuccessCount to theProjectSuccessCount + 1 + write "build succeeded with " & theWarningCount & " warning(s)" & gEol to inLogFileRef + else + write "build failed with " & theErrorCount & " error(s) and " & theWarningCount & " warning(s)" & gEol to inLogFileRef + end if +end ReportBuildInfo + +-- +-- MessageKindIsError +-- +on MessageKindIsError(inKind) + if inKind is "compiler error" or inKind is "linker error" or inKind is "generic error" then + return true + else + return false + end if +end MessageKindIsError + +-- +-- GetMonthIndex +-- +on GetMonthIndex(inDate) + set theMonth to the month of inDate + set theMonthList to {January, February, March, April, May, June, July, August, September, October, November, December} + repeat with i from 1 to the number of items in theMonthList + if theMonth is item i of theMonthList then + return i + end if + end repeat +end GetMonthIndex \ No newline at end of file -- 2.45.2