blob: eaf9e539087069c9085526d684c8905fb0f52c49 [file] [log] [blame]
// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.dump;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.ZipUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
public class CompilerDump {
private final Path directory;
public static CompilerDump fromArchive(Path dumpArchive, Path dumpExtractionDirectory)
throws IOException {
ZipUtils.unzip(dumpArchive, dumpExtractionDirectory);
return new CompilerDump(dumpExtractionDirectory);
}
public CompilerDump(Path directory) {
this.directory = directory;
}
public Path getProgramArchive() {
return directory.resolve("program.jar");
}
public Path getClasspathArchive() {
return directory.resolve("classpath.jar");
}
public Path getLibraryArchive() {
return directory.resolve("library.jar");
}
public Path getBuildPropertiesFile() {
return directory.resolve("build.properties");
}
public Path getProguardConfigFile() {
return directory.resolve("proguard.config");
}
public void sanitizeProguardConfig(ProguardConfigSanitizer sanitizer) throws IOException {
try (BufferedReader reader = Files.newBufferedReader(getProguardConfigFile())) {
String next = reader.readLine();
while (next != null) {
sanitizer.sanitize(next);
next = reader.readLine();
}
}
}
public DumpOptions getBuildProperties() throws IOException {
if (Files.exists(getBuildPropertiesFile())) {
DumpOptions.Builder builder = new DumpOptions.Builder();
DumpOptions.parse(
FileUtils.readTextFile(getBuildPropertiesFile(), StandardCharsets.UTF_8), builder);
return builder.build();
}
return null;
}
}