fish: add class_version function
This commit is contained in:
parent
cbbeba15bf
commit
2da4bc33e7
59
fish/functions/class_version.fish
Normal file
59
fish/functions/class_version.fish
Normal file
@ -0,0 +1,59 @@
|
||||
function class_version --argument-name class_file
|
||||
|
||||
if not string match -q '*.class' "$class_file"
|
||||
echo "Expected a Java class file but got: $class_file"
|
||||
return 1
|
||||
end
|
||||
|
||||
# Use the `file` command if available
|
||||
if command -q file
|
||||
command file "$class_file"
|
||||
return 0
|
||||
end
|
||||
|
||||
javap -verbose "$class_file" | string match -rq 'major version: (?<major_version>\d+)'
|
||||
|
||||
set -l version_name
|
||||
|
||||
# https://en.wikipedia.org/wiki/Java_class_file#General_layout
|
||||
switch "$major_version"
|
||||
case 61
|
||||
set version_name 'Java SE 17'
|
||||
case 60
|
||||
set version_name 'Java SE 16'
|
||||
case 59
|
||||
set version_name 'Java SE 15'
|
||||
case 58
|
||||
set version_name 'Java SE 14'
|
||||
case 57
|
||||
set version_name 'Java SE 13'
|
||||
case 56
|
||||
set version_name 'Java SE 12'
|
||||
case 55
|
||||
set version_name 'Java SE 11'
|
||||
case 54
|
||||
set version_name 'Java SE 10'
|
||||
case 53
|
||||
set version_name 'Java SE 9'
|
||||
case 52
|
||||
set version_name 'Java SE 8'
|
||||
case 51
|
||||
set version_name 'Java SE 7'
|
||||
case 50
|
||||
set version_name 'Java SE 6.0'
|
||||
case 49
|
||||
set version_name 'Java SE 5.0'
|
||||
case 48
|
||||
set version_name 'JDK 1.4'
|
||||
case 47
|
||||
set version_name 'JDK 1.3'
|
||||
case 46
|
||||
set version_name 'JDK 1.2'
|
||||
case 45
|
||||
set version_name 'JDK 1.1'
|
||||
case '*'
|
||||
set version_name 'Unknown Java version'
|
||||
end
|
||||
|
||||
echo "$version_name (major version $major_version)"
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user