Files
fish/functions/verify_file.fish
2026-06-23 00:23:16 +02:00

56 lines
1.3 KiB
Fish

function verify_file
if test (count $argv) -ne 2
echo "Usage: verify_file <file> <expected_hash>"
return 1
end
set file $argv[1]
if not test -f "$file"
echo "verify_file: '$file' is not a valid file"
return 1
end
set expected $argv[2]
set len (string length "$expected")
switch $len
case 32
set cmd md5sum
case 40
set cmd sha1sum
case 56
set cmd sha224sum
case 64
set cmd sha256sum
case 96
set cmd sha384sum
case 128
if command -q sha512sum
set cmd sha512sum
else if command -q b2sum
set cmd b2sum
else
echo "verify_file: no tool available for 128-char hash (sha512sum or b2sum required)"
return 1
end
case '*'
echo "verify_file: unknown hash length ($len chars). Supported: md5(32), sha1(40), sha224(56), sha256(64), sha384(96), sha512/b2(128)"
return 1
end
if not command -q $cmd
echo "verify_file: '$cmd' is not installed."
return 1
end
set actual ($cmd "$file" | string split -f1 " ")
if test "$actual" = "$expected"
echo "Match"
return 0
else
echo "Mismatch"
return 1
end
end