# HG changeset patch # User Eric Wing # Date 1312238985 25200 # Node ID d63043d6268465308f10a68a89c7f7792cd13cd0 # Parent 5c54957c04c5c0bedd15a3ae39ab2609aec3c1d5 Minor fixes, clean ups, comments to make script more presentable. diff -r 5c54957c04c5 -r d63043d62684 ScriptingBridge_Xcode.lua --- a/ScriptingBridge_Xcode.lua Fri Jul 29 18:53:54 2011 -0700 +++ b/ScriptingBridge_Xcode.lua Mon Aug 01 15:49:45 2011 -0700 @@ -6,6 +6,13 @@ LuaCocoa.import("ScriptingBridge") LuaCocoa.import("Foundation") +-- Not finding through scripting bridge, so adding here +kAEDefaultTimeout = -1 +kNoTimeOut = -2 + +-- TODO: Add better 10.6 error handling. +-- http://developer.apple.com/library/mac/#releasenotes/ScriptingAutomation/RN-ScriptingBridge/_index.html + function GetURLFromFileAndPath(file_name) local current_working_directory = NSFileManager:defaultManager():currentDirectoryPath() @@ -96,6 +103,7 @@ end --]] + -- Get the list of build configuration types and then hunt for the one I want. local array_of_build_configuration_types = xcode_project:buildConfigurationTypes() local desired_build_configuration_type = nil for i=1, #array_of_build_configuration_types do @@ -108,25 +116,11 @@ end end - local array_of_executables = xcode_project:executables() - for i=1, #array_of_executables do - print("executables[".. tostring(i) .. "]" .. array_of_executables[i]:name()) - end - local array_of_targets = xcode_project:targets() - local active_target = xcode_project:activeTarget() - for i=1, #array_of_targets do - print("targets[".. tostring(i) .. "]" .. array_of_targets[i]:name()) - -- Watch out: __eq (==) always returns false for different types. - local the_name = array_of_targets[i]:name() - if tostring(the_name) == "OpenGLES2" then - active_target = array_of_targets[i] - end - end - xcode_project:setActiveTarget_(active_target) --print("config type", xcode_project:activeBuildConfigurationType():name()) + -- Find out what the current (active) configuration is set to and change it if necessary -- You are not allowed to create a new instance of XcodeBuildConfigurationType -- Instead, you must use an object returned from the system. -- It appears you cannot use copy or mutableCopy as they throw exceptions. @@ -142,13 +136,42 @@ -- print("config type", xcode_project:activeBuildConfigurationType():name()) + + local array_of_targets = xcode_project:targets() + local active_target = xcode_project:activeTarget() + for i=1, #array_of_targets do + print("targets[".. tostring(i) .. "]" .. array_of_targets[i]:name()) + -- Watch out: __eq (==) always returns false for different types. + local the_name = array_of_targets[i]:name() + if tostring(the_name) == "OpenGLES2" then + active_target = array_of_targets[i] + end + end + xcode_project:setActiveTarget_(active_target) + + print("ActiveTarget:", xcode_project:activeTarget():name()) + + + + local array_of_executables = xcode_project:executables() + for i=1, #array_of_executables do + print("executables[".. tostring(i) .. "]" .. array_of_executables[i]:name()) + end + local active_executable = xcode_project:activeExecutable() print(active_executable, active_executable:name()) active_executable:setName_("OpenGLES2") - print("ActiveTarget:", xcode_project:activeTarget():name()) print("ActiveExecutable:", xcode_project:activeExecutable():name()) - ret_string = xcode_project:buildStaticAnalysis_transcript_using_(false, false, build_configuration_type) + + + + -- Xcode building can take a long time. We don't want Scripting Bridge + -- to timeout and move along before the build finishes. + -- So disable the timeout. + xcode_application:setTimeout_(kNoTimeOut) + -- Build the project + ret_string = xcode_project:buildStaticAnalysis_transcript_using_(false, false, desired_build_configuration_type) -- local build_configuration_type = @@ -157,8 +180,12 @@ -- Refetch the object just in case since we tried changing it active_executable = xcode_project:activeExecutable() + -- launch() doesn't seem to actually work. We must use debug() -- local ret_string = active_executable:launch() + -- calling debug() seems to hang and never return even when the app exits. + -- We probably want the timeout. + xcode_application:setTimeout_(kAEDefaultTimeout) local ret_string = active_executable:debug() print(ret_string)