mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 06:50:05 +08:00
110 lines
3.5 KiB
VimL
110 lines
3.5 KiB
VimL
function! vaxe#flow#Targets(...)
|
|
return s:flow_targets
|
|
endfunction
|
|
|
|
function! vaxe#flow#ProjectFlow(...)
|
|
if exists('g:vaxe_flow')
|
|
unlet g:vaxe_flow
|
|
endif
|
|
let g:vaxe_working_directory = getcwd()
|
|
|
|
if a:0 > 0 && a:1 != ''
|
|
let g:vaxe_flow = expand(a:1,':p')
|
|
else
|
|
let flows = split(glob("**/*.flow"),'\n')
|
|
|
|
if len(flows) == 0
|
|
echoerr "No flow/openfl project files found in current working directory"
|
|
return
|
|
endif
|
|
|
|
let base_flow = vaxe#util#InputList("Select flow", flows)
|
|
|
|
if base_flow !~ "^\([a-zA-Z]:\)\=[/\\]"
|
|
let base_flow = getcwd() . '/' . base_flow
|
|
endif
|
|
|
|
echomsg 'Project flow selected: ' . base_flow
|
|
|
|
let g:vaxe_flow = base_flow
|
|
endif
|
|
if !filereadable(g:vaxe_flow)
|
|
echoerr "Project flow file not valid, please create one."
|
|
return
|
|
endif
|
|
call vaxe#flow#BuildFlowHxml(g:vaxe_flow)
|
|
call vaxe#SetCompiler()
|
|
return g:vaxe_flow
|
|
endfunction
|
|
|
|
function! vaxe#flow#Clean(...)
|
|
if (a:0 && a:1 != '')
|
|
let target = split(a:1)[0]
|
|
else
|
|
let target = g:vaxe_flow_target
|
|
endif
|
|
let command = "flow clean ".target
|
|
call vaxe#Log(command)
|
|
call s:Sys(command)
|
|
endfunction
|
|
|
|
function! vaxe#flow#RebuildHxml()
|
|
if exists("b:vaxe_flow")
|
|
call vaxe#flow#BuildFlowHxml(b:vaxe_flow)
|
|
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#flow#BuildFlowHxml(flow)
|
|
let base_hxml = a:flow.".hxml"
|
|
|
|
if !strlen(g:vaxe_flow_target)
|
|
call vaxe#flow#Target(a:flow)
|
|
endif
|
|
|
|
let g:vaxe_working_directory = fnamemodify(a:flow, ":p:h")
|
|
let cdcmd = 'cd "'.fnameescape(g:vaxe_working_directory).'" && '
|
|
|
|
"create the flow.hxml if not present
|
|
if !filereadable(base_hxml)
|
|
" pipe flow 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(" haxelib run flow info " . g:vaxe_flow_target . " --hxml "
|
|
\. " >> " . escape_base )
|
|
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#flow#Target(flow, ...)
|
|
let g:vaxe_flow_target = ''
|
|
if a:0 > 1 && a:2 != ''
|
|
let g:vaxe_flow_target = a:2
|
|
else
|
|
let g:vaxe_flow_target = vaxe#util#InputList("Select flow Target", s:flow_targets)
|
|
let g:vaxe_flow_target = split(g:vaxe_flow_target, ":")[0]
|
|
endif
|
|
call vaxe#flow#BuildFlowHxml(a:flow)
|
|
call vaxe#SetCompiler()
|
|
endfunction
|
|
|
|
" A list of all the flow targets
|
|
let s:flow_targets = [ "android : Create Google Android applications"
|
|
\, "web : Create HTML5 webgl applications"
|
|
\, "ios : Create Apple iOS applications"
|
|
\, "linux --arch 32 : Create Linux 32-bit applications"
|
|
\, "linux --arch 64 : Create Linux 64-bit applications"
|
|
\, "mac --arch 32 : Create Apple Mac OS X 32-bit applications"
|
|
\, "mac --arch 64 : Create Apple Mac OS X 64-bit applications"
|
|
\, "windows --arch 32 : Create Microsoft Windows 32-bit applications"
|
|
\, "windows --arch 64 : Create Microsoft Windows 64-bit applications"]
|