Skip to content

Commit

Permalink
v.util: improve code related to diff tool specified via environment, …
Browse files Browse the repository at this point in the history
…add check if the diff tool exists (#21240)
  • Loading branch information
ttytm authored Apr 11, 2024
1 parent af4111b commit fa321ed
Showing 1 changed file with 5 additions and 12 deletions.
17 changes: 5 additions & 12 deletions vlib/v/util/diff/diff.v
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,13 @@ pub fn find_working_diff_command() !string {
env_difftool := os.getenv('VDIFF_TOOL')
env_diffopts := os.getenv('VDIFF_OPTIONS')
if env_difftool != '' {
os.find_abs_path_of_executable(env_difftool) or {
return error('could not find specified VDIFF_TOOL `${env_difftool}`')
}
return '${env_difftool} ${env_diffopts}'
}
mut known_diff_tools := []string{}
if env_difftool.len > 0 {
known_diff_tools << env_difftool
}
known_diff_tools << ['colordiff', 'gdiff', 'diff', 'colordiff.exe', 'diff.exe', 'opendiff',
'code', 'code.cmd']
// NOTE: code.cmd is the Windows variant of the `code` cli tool
known_diff_tools := ['colordiff', 'gdiff', 'diff', 'colordiff.exe', 'diff.exe', 'opendiff',
'code', 'code.cmd'] // NOTE: code.cmd is the Windows variant of the `code` cli tool
for diffcmd in known_diff_tools {
if diffcmd == 'opendiff' {
os.find_abs_path_of_executable('opendiff') or { continue }
Expand All @@ -28,15 +26,10 @@ pub fn find_working_diff_command() !string {
return diffcmd
}
}

p := os.execute('${diffcmd} --version')
if p.exit_code < 0 {
continue
}
if p.exit_code == 127 && diffcmd == env_difftool {
// user setup is wonky, fix it
return error('could not find specified VDIFF_TOOL ${diffcmd}')
}
if p.exit_code == 0 { // success
// TODO: proper implemenation of --color flag
$if !macos {
Expand Down

0 comments on commit fa321ed

Please sign in to comment.