tools: speedup `v fmt -verify` when there are no file differences, avoiding diff.color_compare_files
parent
817bedec5d
commit
236bcda549
|
@ -27,6 +27,8 @@ struct FormatOptions {
|
||||||
is_verify bool // exit(1) if the file is not vfmt'ed
|
is_verify bool // exit(1) if the file is not vfmt'ed
|
||||||
is_worker bool // true *only* in the worker processes. Note: workers can crash.
|
is_worker bool // true *only* in the worker processes. Note: workers can crash.
|
||||||
is_backup bool // make a `file.v.bak` copy *before* overwriting a `file.v` in place with `-w`
|
is_backup bool // make a `file.v.bak` copy *before* overwriting a `file.v` in place with `-w`
|
||||||
|
mut:
|
||||||
|
diff_cmd string // filled in when -diff or -verify is passed
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -201,36 +203,23 @@ fn print_compiler_options(compiler_params &pref.Preferences) {
|
||||||
eprintln(' is_script: $compiler_params.is_script ')
|
eprintln(' is_script: $compiler_params.is_script ')
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (foptions &FormatOptions) post_process_file(file string, formatted_file_path string) ? {
|
fn (mut foptions FormatOptions) find_diff_cmd() string {
|
||||||
|
if foptions.diff_cmd != '' {
|
||||||
|
return foptions.diff_cmd
|
||||||
|
}
|
||||||
|
if foptions.is_verify || foptions.is_diff {
|
||||||
|
foptions.diff_cmd = diff.find_working_diff_command() or {
|
||||||
|
eprintln(err)
|
||||||
|
exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return foptions.diff_cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
fn (mut foptions FormatOptions) post_process_file(file string, formatted_file_path string) ? {
|
||||||
if formatted_file_path.len == 0 {
|
if formatted_file_path.len == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if foptions.is_diff {
|
|
||||||
diff_cmd := diff.find_working_diff_command() or {
|
|
||||||
eprintln(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if foptions.is_verbose {
|
|
||||||
eprintln('Using diff command: $diff_cmd')
|
|
||||||
}
|
|
||||||
diff := diff.color_compare_files(diff_cmd, file, formatted_file_path)
|
|
||||||
if diff.len > 0 {
|
|
||||||
println(diff)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if foptions.is_verify {
|
|
||||||
diff_cmd := diff.find_working_diff_command() or {
|
|
||||||
eprintln(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
x := diff.color_compare_files(diff_cmd, file, formatted_file_path)
|
|
||||||
if x.len != 0 {
|
|
||||||
println("$file is not vfmt'ed")
|
|
||||||
return error('')
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fc := os.read_file(file) or {
|
fc := os.read_file(file) or {
|
||||||
eprintln('File $file could not be read')
|
eprintln('File $file could not be read')
|
||||||
return
|
return
|
||||||
|
@ -240,6 +229,31 @@ fn (foptions &FormatOptions) post_process_file(file string, formatted_file_path
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
is_formatted_different := fc != formatted_fc
|
is_formatted_different := fc != formatted_fc
|
||||||
|
if foptions.is_diff {
|
||||||
|
if !is_formatted_different {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
diff_cmd := foptions.find_diff_cmd()
|
||||||
|
if foptions.is_verbose {
|
||||||
|
eprintln('Using diff command: $diff_cmd')
|
||||||
|
}
|
||||||
|
diff := diff.color_compare_files(diff_cmd, file, formatted_file_path)
|
||||||
|
if diff.len > 0 {
|
||||||
|
println(diff)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if foptions.is_verify {
|
||||||
|
if !is_formatted_different {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
x := diff.color_compare_files(foptions.find_diff_cmd(), file, formatted_file_path)
|
||||||
|
if x.len != 0 {
|
||||||
|
println("$file is not vfmt'ed")
|
||||||
|
return error('')
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
if foptions.is_c {
|
if foptions.is_c {
|
||||||
if is_formatted_different {
|
if is_formatted_different {
|
||||||
eprintln('File is not formatted: $file')
|
eprintln('File is not formatted: $file')
|
||||||
|
|
Loading…
Reference in New Issue