From 2da4bc33e7a273e84d32f63db2b8e6f181d96e71 Mon Sep 17 00:00:00 2001 From: Charles Gould Date: Thu, 10 Mar 2022 13:10:53 -0500 Subject: [PATCH] fish: add class_version function --- fish/functions/class_version.fish | 59 +++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 fish/functions/class_version.fish diff --git a/fish/functions/class_version.fish b/fish/functions/class_version.fish new file mode 100644 index 0000000..7f2f95d --- /dev/null +++ b/fish/functions/class_version.fish @@ -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: (?\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