Merge "Add API to get R8 version"
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index d3347b9..010a851 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -25,4 +25,10 @@
   public static boolean isDev() {
     return LABEL.endsWith("-dev") || VersionProperties.INSTANCE.isEngineering();
   }
+
+  /** Returns current R8 version (with additional info) as a string. */
+  @SuppressWarnings("unused") // used by external tools to obtain R8 version
+  public static String getVersionString() {
+    return LABEL + " (" + VersionProperties.INSTANCE.getDescription() + ")";
+  }
 }
diff --git a/src/main/keep.txt b/src/main/keep.txt
index 61b2b14..306a398 100644
--- a/src/main/keep.txt
+++ b/src/main/keep.txt
@@ -14,6 +14,7 @@
 -keep public class com.android.tools.r8.compatdx.CompatDx { public static void main(java.lang.String[]); }
 -keep public class com.android.tools.r8.dexfilemerger.DexFileMerger { public static void main(java.lang.String[]); }
 -keep public class com.android.tools.r8.dexsplitter.DexSplitter { public static void main(java.lang.String[]); }
+-keep public class com.android.tools.r8.Version { public static java.lang.String getVersionString(); }
 
 # JvmMetadataExtensions must be kept because it'll be used indirectly through java.util.ServiceLoader.
 -keep, allowobfuscation public class com.android.tools.r8.jetbrains.kotlinx.metadata.jvm.impl.JvmMetadataExtensions { public <init>(); }