From fa321ed874ed11904a47d33f779c91d88b46c134 Mon Sep 17 00:00:00 2001 From: Turiiya <34311583+ttytm@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:52:51 +0200 Subject: [PATCH] v.util: improve code related to diff tool specified via environment, add check if the diff tool exists (#21240) --- vlib/v/util/diff/diff.v | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/vlib/v/util/diff/diff.v b/vlib/v/util/diff/diff.v index dbd03be352e34b..1ffb4882b5e4be 100644 --- a/vlib/v/util/diff/diff.v +++ b/vlib/v/util/diff/diff.v @@ -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 } @@ -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 {