101 lines
4.2 KiB
Lua
101 lines
4.2 KiB
Lua
-- Copyright 2011-13 Paul Kulchenko, ZeroBrane LLC
|
|
|
|
local corona
|
|
local win = ide.osname == "Windows"
|
|
local mac = ide.osname == "Macintosh"
|
|
|
|
return {
|
|
name = "Corona",
|
|
description = "Corona SDK mobile framework",
|
|
api = {"baselib", "corona"},
|
|
frun = function(self,wfilename,rundebug)
|
|
corona = corona or ide.config.path.corona -- check if the path is configured
|
|
if not corona then
|
|
local sep = win and ';' or ':'
|
|
local default =
|
|
win and (GenerateProgramFilesPath('Corona SDK', sep)..sep..
|
|
GenerateProgramFilesPath('Corona Labs\\Corona SDK', sep)..sep)
|
|
or mac and ('/Applications/CoronaSDK/Corona Simulator.app/Contents/MacOS'..sep)
|
|
or ''
|
|
local path = default
|
|
..(os.getenv('PATH') or '')..sep
|
|
..(os.getenv('HOME') and os.getenv('HOME') .. '/bin' or '')
|
|
local paths = {}
|
|
for p in path:gmatch("[^"..sep.."]+") do
|
|
corona = corona or GetFullPathIfExists(p, win and 'Corona Simulator.exe' or 'Corona Simulator')
|
|
table.insert(paths, p)
|
|
end
|
|
if not corona then
|
|
DisplayOutput("Can't find corona executable in any of the folders in PATH: "
|
|
..table.concat(paths, ", ").."\n")
|
|
return
|
|
end
|
|
end
|
|
|
|
local file = GetFullPathIfExists(self:fworkdir(wfilename), 'main.lua')
|
|
if not file then
|
|
DisplayOutput("Can't find 'main.lua' file in the current project folder.\n")
|
|
return
|
|
end
|
|
|
|
if rundebug then
|
|
-- start running the application right away
|
|
DebuggerAttachDefault({startwith = file, redirect = "r",
|
|
runstart = ide.config.debugger.runonstart ~= false})
|
|
|
|
local function needRefresh(mdbl, mdbc)
|
|
return not wx.wxFileExists(mdbc)
|
|
or GetFileModTime(mdbc):GetTicks() < GetFileModTime(mdbl):GetTicks()
|
|
end
|
|
|
|
-- copy mobdebug.lua to Resources/ folder on Win and to the project folder on OSX
|
|
-- as copying it to Resources/ folder seems to break the signature of the app.
|
|
local mdbc = mac and MergeFullPath(self:fworkdir(wfilename), "mobdebug.lua")
|
|
or MergeFullPath(GetPathWithSep(corona), "Resources/mobdebug.lua")
|
|
local mdbl = MergeFullPath(GetPathWithSep(ide.editorFilename), "lualibs/mobdebug/mobdebug.lua")
|
|
local needed = needRefresh(mdbl, mdbc)
|
|
local mdbcplugin = win and MergeFullPath(wx.wxStandardPaths.Get():GetUserLocalDataDir(),
|
|
"../../Roaming/Corona Labs/Corona Simulator/Plugins/mobdebug.lua")
|
|
if needed then
|
|
local copied = FileCopy(mdbl, mdbc)
|
|
-- couldn't copy to the Resources/ folder; not have permissions?
|
|
if not copied and win then
|
|
mdbc = mdbcplugin
|
|
needed = needRefresh(mdbl, mdbc)
|
|
copied = needed and FileCopy(mdbl, mdbc)
|
|
end
|
|
if needed then
|
|
local message = copied
|
|
and ("Copied debugger ('mobdebug.lua') to '%s'."):format(mdbc)
|
|
or ("Failed to copy debugger ('mobdebug.lua') to '%s': %s")
|
|
:format(mdbc, wx.wxSysErrorMsg())
|
|
DisplayOutputLn(message)
|
|
if not copied then return end
|
|
end
|
|
end
|
|
-- remove debugger if copied to plugin directory as it may be obsolete
|
|
if mdbcplugin and mdbcplugin ~= mdbc and wx.wxFileExists(mdbcplugin) then
|
|
wx.wxRemoveFile(mdbcplugin)
|
|
end
|
|
end
|
|
|
|
local cfg = ide.config.corona or {}
|
|
local debugopt = mac and "-debug 1 -project " or "-debug "
|
|
local skin = cfg.skin and (" -skin "..ide.config.corona.skin) or ""
|
|
local noconsole = (cfg.showconsole and ""
|
|
or (win and "-no-console " or "-no-console YES "))
|
|
local cmd = ('"%s" %s%s"%s"%s')
|
|
:format(corona, noconsole, rundebug and debugopt or "", file, skin)
|
|
|
|
local uhw = ide.config.unhidewindow
|
|
local cwc = uhw and uhw.ConsoleWindowClass
|
|
if uhw and cfg.showconsole then uhw.ConsoleWindowClass = 0 end
|
|
-- CommandLineRun(cmd,wdir,tooutput,nohide,stringcallback,uid,endcallback)
|
|
return CommandLineRun(cmd,self:fworkdir(wfilename),true,true,nil,nil,
|
|
function() if uhw and cfg.showconsole then uhw.ConsoleWindowClass = cwc end end)
|
|
end,
|
|
hasdebugger = true,
|
|
fattachdebug = function(self) DebuggerAttachDefault() end,
|
|
scratchextloop = true,
|
|
}
|