mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
v test-fmt: reuse v.util.should_recompile_tool/2, extracted from v.util.launch_tool/3
This commit is contained in:
parent
dab66593fc
commit
02db94c4bc
@ -2,6 +2,7 @@ module main
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import testing
|
import testing
|
||||||
|
import v.util
|
||||||
|
|
||||||
// os.v - // embeded comments, mib := [1/* CTL_KERN */, 14/* KERN_PROC */, 12/* KERN_PROC_PATHNAME */, -1] => comment the rest of the line
|
// os.v - // embeded comments, mib := [1/* CTL_KERN */, 14/* KERN_PROC */, 12/* KERN_PROC_PATHNAME */, -1] => comment the rest of the line
|
||||||
const (
|
const (
|
||||||
@ -60,11 +61,14 @@ fn prepare_vfmt_when_needed() {
|
|||||||
vexe := os.getenv('VEXE')
|
vexe := os.getenv('VEXE')
|
||||||
vroot := os.dir(vexe)
|
vroot := os.dir(vexe)
|
||||||
vfmtv := os.join_path(vroot, 'cmd', 'tools', 'vfmt.v')
|
vfmtv := os.join_path(vroot, 'cmd', 'tools', 'vfmt.v')
|
||||||
if os.file_last_mod_unix(vexe) <= os.file_last_mod_unix(vfmtv) {
|
if util.should_recompile_tool(vexe, vfmtv) {
|
||||||
recompile_result := os.system('$vexe ' + os.join_path(vroot, 'cmd', 'tools', 'vfmt.v'))
|
recompile_file(vexe, vfmtv)
|
||||||
if recompile_result != 0 {
|
}
|
||||||
eprintln('could not recompile cmd/tools/vfmt.v')
|
}
|
||||||
exit(2)
|
|
||||||
}
|
fn recompile_file(vexe string, file string) {
|
||||||
|
if recompile_result != 0 {
|
||||||
|
eprintln('could not recompile $file')
|
||||||
|
exit(2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -126,8 +126,9 @@ pub fn launch_tool(is_verbose bool, tool_name string, args []string) {
|
|||||||
vroot := os.dir(vexe)
|
vroot := os.dir(vexe)
|
||||||
set_vroot_folder(vroot)
|
set_vroot_folder(vroot)
|
||||||
tool_args := args_quote_paths_with_spaces(args)
|
tool_args := args_quote_paths_with_spaces(args)
|
||||||
tool_exe := path_of_executable(os.real_path('$vroot/cmd/tools/$tool_name'))
|
tool_basename := os.real_path(os.join_path(vroot, 'cmd', 'tools', tool_name))
|
||||||
tool_source := os.real_path('$vroot/cmd/tools/${tool_name}.v')
|
tool_exe := path_of_executable(tool_basename)
|
||||||
|
tool_source := tool_basename + '.v'
|
||||||
tool_command := '"$tool_exe" $tool_args'
|
tool_command := '"$tool_exe" $tool_args'
|
||||||
if is_verbose {
|
if is_verbose {
|
||||||
println('launch_tool vexe : $vroot')
|
println('launch_tool vexe : $vroot')
|
||||||
@ -135,6 +136,40 @@ pub fn launch_tool(is_verbose bool, tool_name string, args []string) {
|
|||||||
println('launch_tool tool_args : $tool_args')
|
println('launch_tool tool_args : $tool_args')
|
||||||
println('launch_tool tool_command: $tool_command')
|
println('launch_tool tool_command: $tool_command')
|
||||||
}
|
}
|
||||||
|
should_compile := should_recompile_tool(vexe, tool_source)
|
||||||
|
if is_verbose {
|
||||||
|
println('launch_tool should_compile: $should_compile')
|
||||||
|
}
|
||||||
|
if should_compile {
|
||||||
|
emodules := external_module_dependencies_for_tool[tool_name]
|
||||||
|
for emodule in emodules {
|
||||||
|
check_module_is_installed(emodule, is_verbose) or {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mut compilation_command := '"$vexe" '
|
||||||
|
compilation_command += '"$tool_source"'
|
||||||
|
if is_verbose {
|
||||||
|
println('Compiling $tool_name with: "$compilation_command"')
|
||||||
|
}
|
||||||
|
tool_compilation := os.exec(compilation_command) or {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
if tool_compilation.exit_code != 0 {
|
||||||
|
eprintln('cannot compile `$tool_source`: \n$tool_compilation.output')
|
||||||
|
exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if is_verbose {
|
||||||
|
println('launch_tool running tool command: $tool_command ...')
|
||||||
|
}
|
||||||
|
exit(os.system(tool_command))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn should_recompile_tool(vexe string, tool_source string) bool {
|
||||||
|
sfolder := os.base(tool_source)
|
||||||
|
tool_name := os.file_name(tool_source).replace('.v', '')
|
||||||
|
tool_exe := os.join_path(sfolder, path_of_executable(tool_name))
|
||||||
// TODO Caching should be done on the `vlib/v` level.
|
// TODO Caching should be done on the `vlib/v` level.
|
||||||
mut should_compile := false
|
mut should_compile := false
|
||||||
if !os.exists(tool_exe) {
|
if !os.exists(tool_exe) {
|
||||||
@ -158,37 +193,6 @@ pub fn launch_tool(is_verbose bool, tool_name string, args []string) {
|
|||||||
should_compile = true
|
should_compile = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if is_verbose {
|
|
||||||
println('launch_tool should_compile: $should_compile')
|
|
||||||
}
|
|
||||||
if should_compile {
|
|
||||||
emodules := external_module_dependencies_for_tool[tool_name]
|
|
||||||
for emodule in emodules {
|
|
||||||
check_module_is_installed(emodule, is_verbose) or {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mut compilation_command := '"$vexe" '
|
|
||||||
compilation_command += '"$tool_source"'
|
|
||||||
if is_verbose {
|
|
||||||
println('Compiling $tool_name with: "$compilation_command"')
|
|
||||||
}
|
|
||||||
tool_compilation := os.exec(compilation_command) or {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
if tool_compilation.exit_code != 0 {
|
|
||||||
mut err := 'Permission denied'
|
|
||||||
if !tool_compilation.output.contains(err) {
|
|
||||||
err = '\n$tool_compilation.output'
|
|
||||||
}
|
|
||||||
eprintln('cannot compile `$tool_source`: $err')
|
|
||||||
exit(1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if is_verbose {
|
|
||||||
println('launch_tool running tool command: $tool_command ...')
|
|
||||||
}
|
|
||||||
exit(os.system(tool_command))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn quote_path_with_spaces(s string) string {
|
pub fn quote_path_with_spaces(s string) string {
|
||||||
|
Loading…
Reference in New Issue
Block a user