mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 05:30:05 +08:00
157 lines
5.5 KiB
VimL
Vendored
157 lines
5.5 KiB
VimL
Vendored
function! vaxe#lime#Targets(...)
|
|
return s:lime_targets
|
|
endfunction
|
|
|
|
function! vaxe#lime#Update(...)
|
|
if (a:0 && a:1 != '')
|
|
let target = split(a:1)[0]
|
|
else
|
|
let target = g:vaxe_lime_target
|
|
endif
|
|
let command = "lime update ".target
|
|
call vaxe#Log(command)
|
|
call s:Sys(command)
|
|
endfunction
|
|
|
|
function! vaxe#lime#ProjectLime(...)
|
|
if exists('g:vaxe_lime')
|
|
unlet g:vaxe_lime
|
|
endif
|
|
let g:vaxe_working_directory = getcwd()
|
|
|
|
if a:0 > 0 && a:1 != ''
|
|
let g:vaxe_lime = expand(a:1,':p')
|
|
else
|
|
let limes = split(glob("**/*.lime"),'\n')
|
|
|
|
if len(limes) == 0
|
|
" look for legacy xml files as well...
|
|
let limes = split(glob("**/*.xml"),'\n')
|
|
if len(limes) == 0
|
|
echoerr "No lime/openfl project files found in current working directory"
|
|
return
|
|
end
|
|
endif
|
|
|
|
let base_lime = vaxe#util#InputList("Select Lime", limes)
|
|
|
|
if base_lime !~ "^\([a-zA-Z]:\)\=[/\\]"
|
|
let base_lime = getcwd() . '/' . base_lime
|
|
endif
|
|
|
|
echomsg 'Project lime selected: ' . base_lime
|
|
|
|
let g:vaxe_lime = base_lime
|
|
endif
|
|
if !filereadable(g:vaxe_lime)
|
|
echoerr "Project lime file not valid, please create one."
|
|
return
|
|
endif
|
|
call vaxe#lime#BuildLimeHxml(g:vaxe_lime)
|
|
call vaxe#SetCompiler()
|
|
return g:vaxe_lime
|
|
endfunction
|
|
|
|
|
|
function! vaxe#lime#Clean(...)
|
|
if (a:0 && a:1 != '')
|
|
let target = split(a:1)[0]
|
|
else
|
|
let target = g:vaxe_lime_target
|
|
endif
|
|
let command = "lime clean ".target
|
|
call vaxe#Log(command)
|
|
call s:Sys(command)
|
|
endfunction
|
|
|
|
function! vaxe#lime#RebuildHxml()
|
|
if exists("b:vaxe_lime")
|
|
call vaxe#lime#BuildLimeHxml(b:vaxe_lime)
|
|
endif
|
|
endfunction
|
|
|
|
"A simple system function that first changes directory to the current vaxe
|
|
"working directory
|
|
function! s:Sys(cmd)
|
|
call system("cd ".g:vaxe_working_directory." && ".a:cmd)
|
|
endfunction
|
|
|
|
function! vaxe#lime#BuildLimeHxml(lime)
|
|
let base_hxml = a:lime.".hxml"
|
|
|
|
if !strlen(g:vaxe_lime_target)
|
|
call vaxe#lime#Target(a:lime)
|
|
endif
|
|
|
|
let g:vaxe_working_directory = fnamemodify(a:lime, ":p:h")
|
|
let cdcmd = 'cd "'.fnameescape(g:vaxe_working_directory).'" && '
|
|
|
|
"create the lime.hxml if not present
|
|
if !filereadable(base_hxml)
|
|
" pipe lime display to an hxml for completions
|
|
let escape_base = fnameescape(base_hxml)
|
|
call s:Sys(" echo '# THIS FILE IS AUTOGENERATED BY VAXE, ANY EDITS ARE DISCARDED' " . " > " . escape_base)
|
|
call s:Sys(" lime display " . g:vaxe_lime_target
|
|
\. " >> " . escape_base )
|
|
endif
|
|
|
|
" create the boilerplate code if missing
|
|
let simple_target = split(g:vaxe_lime_target)[0]
|
|
let output_dir = g:vaxe_working_directory."/Export/".simple_target.'/bin/'
|
|
if (!isdirectory(g:vaxe_working_directory."/Export/".simple_target.'/bin'))
|
|
" build the assets dependencies
|
|
call system(cdcmd . " lime update " . g:vaxe_lime_target)
|
|
else
|
|
endif
|
|
|
|
let b:vaxe_hxml = base_hxml
|
|
" let g:vaxe_hxml = b:vaxe_hxml " don't set a global projet var by default
|
|
endfunction
|
|
|
|
"Sets the target. If target is missing it asks the user. Also updates the
|
|
"makeprg compiler command
|
|
function! vaxe#lime#Target(lime, ...)
|
|
let g:vaxe_lime_target = ''
|
|
if a:0 > 1 && a:2 != ''
|
|
let g:vaxe_lime_target = a:2
|
|
else
|
|
let g:vaxe_lime_target = vaxe#util#InputList("Select Lime Target", s:lime_targets)
|
|
let g:vaxe_lime_target = split(g:vaxe_lime_target, ":")[0]
|
|
endif
|
|
call vaxe#lime#BuildLimeHxml(a:lime)
|
|
call vaxe#SetCompiler()
|
|
endfunction
|
|
|
|
|
|
" A list of all the lime targets
|
|
let s:lime_targets = [ "android : Create Google Android applications"
|
|
\, "android -arm7 : Compile for arm-7a and arm5"
|
|
\, "android -arm7-only : Compile for arm-7a for testing"
|
|
\, "blackberry : Create BlackBerry applications"
|
|
\, "blackberry -simulator : Build/test for the device simulator"
|
|
\, "flash : Create SWF applications for Adobe Flash Player"
|
|
\, "html5 : Create HTML5 canvas applications"
|
|
\, "html5 -minify : Minify output using the Google Closure compiler"
|
|
\, "html5 -minify -yui : Minify output using the YUI compressor"
|
|
\, "ios : Create Apple iOS applications"
|
|
\, "ios -simulator : Build/test for the device simulator"
|
|
\, "ios -simulator -ipad : Build/test for the iPad Simulator"
|
|
\, "linux : Create Linux applications"
|
|
\, "linux -64 : Compile for 64-bit instead of 32-bit"
|
|
\, "linux -neko : Build with Neko instead of C++"
|
|
\, "linux -neko -64 : Build with Neko 64-bit instead of C++"
|
|
\, "mac : Create Apple Mac OS X applications"
|
|
\, "mac -neko : Build with Neko instead of C++"
|
|
\, "mac -neko -64 : Build with Neko 64-bit instead of C++"
|
|
\, "webos : Create HP webOS applications"
|
|
\, "windows : Create Microsoft Windows applications"
|
|
\, "windows -neko : Build with Neko instead of C++"
|
|
\, "windows -neko -64 : Build with Neko 64-bit instead of C++" ]
|
|
|
|
" -D : Specify a define to use when processing other commands
|
|
" -debug : Use debug configuration instead of release
|
|
" -verbose : Print additional information (when available)
|
|
" -clean : Add a "clean" action before running the current command
|
|
" (display) -hxml : Print HXML information for the project
|
|
" (display) -lime : Print lime information for the project
|