blob: 5eddeaa0b9741a9b923ecd6fd78b51dfae6e144f [file]
// Copyright (c) 2026, 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;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.FlagFile;
import com.android.tools.r8.utils.StringDiagnostic;
import com.android.tools.r8.utils.internal.CliParser;
import java.nio.file.Paths;
public class ApiDatabaseGeneratorCommandParser {
private static CliParser<ApiDatabaseGeneratorCommand.Builder> createParser() {
String usageHeader = "Usage: apidatabasegenerator [options] <input-files>\nwhere options are:";
CliParser<ApiDatabaseGeneratorCommand.Builder> parser = new CliParser<>(usageHeader);
return parser
.option0("--help", "Print help.", builder -> builder.setPrintHelp(true), "-h")
.option0("--version", "Print version.", builder -> builder.setPrintVersion(true))
.option1(
"--output",
"<database-file>",
"Output result in <database-file> (must be a file, not a directory). Defaults to"
+ " 'api_database.ser'.",
(builder, arg) -> builder.setOutputPath(Paths.get(arg)))
.positional((builder, arg) -> builder.addInputPath(Paths.get(arg)));
}
public static ApiDatabaseGeneratorCommand.Builder parse(String[] args, Origin origin) {
return new ApiDatabaseGeneratorCommandParser()
.parse(args, origin, ApiDatabaseGeneratorCommand.builder());
}
public static ApiDatabaseGeneratorCommand.Builder parse(
String[] args, Origin origin, DiagnosticsHandler handler) {
return new ApiDatabaseGeneratorCommandParser()
.parse(args, origin, ApiDatabaseGeneratorCommand.builder(handler));
}
private ApiDatabaseGeneratorCommand.Builder parse(
String[] args, Origin origin, ApiDatabaseGeneratorCommand.Builder builder) {
String[] expandedArgs = FlagFile.expandFlagFiles(args, builder::error);
createParser()
.parse(expandedArgs, builder, error -> builder.error(new StringDiagnostic(error, origin)));
return builder;
}
static String getUsageMessage() {
return createParser().getUsageMessage();
}
}