cert-d-pgpainless/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/PGPCertDCli.java

77 lines
2.3 KiB
Java
Raw Normal View History

2022-03-01 15:53:24 +01:00
// SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
//
// SPDX-License-Identifier: Apache-2.0
package pgp.cert_d.cli;
2022-08-09 18:34:42 +02:00
import org.pgpainless.certificate_store.PGPainlessCertD;
2022-03-01 15:53:24 +01:00
import pgp.cert_d.BaseDirectoryProvider;
2022-07-04 13:19:36 +02:00
import pgp.cert_d.cli.commands.Export;
import pgp.cert_d.cli.commands.Find;
2022-03-01 15:53:24 +01:00
import pgp.cert_d.cli.commands.Get;
2022-07-04 13:04:11 +02:00
import pgp.cert_d.cli.commands.Insert;
2022-07-04 13:05:32 +02:00
import pgp.cert_d.cli.commands.Import;
2022-08-08 15:04:34 +02:00
import pgp.cert_d.cli.commands.List;
2022-07-04 20:12:42 +02:00
import pgp.cert_d.cli.commands.Setup;
import pgp.cert_d.jdbc.sqlite.DatabaseSubkeyLookupFactory;
import pgp.certificate_store.exception.NotAStoreException;
2022-03-01 15:53:24 +01:00
import picocli.CommandLine;
import java.io.File;
import java.sql.SQLException;
@CommandLine.Command(
name = "certificate-store",
resourceBundle = "msg_pgp-cert-d",
2022-03-01 15:53:24 +01:00
subcommands = {
2022-07-04 20:12:42 +02:00
CommandLine.HelpCommand.class,
2022-07-04 13:19:36 +02:00
Export.class,
2022-07-04 13:04:11 +02:00
Insert.class,
2022-07-04 13:05:32 +02:00
Import.class,
2022-03-01 15:53:24 +01:00
Get.class,
2022-08-08 15:04:34 +02:00
Setup.class,
List.class,
Find.class
2022-03-01 15:53:24 +01:00
}
)
public class PGPCertDCli {
2022-07-04 20:12:42 +02:00
@CommandLine.Option(names = {"-s", "--store"}, paramLabel = "DIRECTORY",
scope = CommandLine.ScopeType.INHERIT)
2022-03-01 15:53:24 +01:00
File baseDirectory;
2022-08-25 14:26:36 +02:00
static PGPainlessCertD certificateDirectory;
2022-03-01 15:53:24 +01:00
private int executionStrategy(CommandLine.ParseResult parseResult) {
try {
initStore();
} catch (NotAStoreException | SQLException e) {
return -1;
}
return new CommandLine.RunLast().execute(parseResult);
}
private void initStore() throws NotAStoreException, SQLException {
2022-08-25 14:26:36 +02:00
if (certificateDirectory != null) {
return;
}
2022-03-01 15:53:24 +01:00
if (baseDirectory == null) {
baseDirectory = BaseDirectoryProvider.getDefaultBaseDir();
}
PGPCertDCli.certificateDirectory = PGPainlessCertD.fileBased(baseDirectory, new DatabaseSubkeyLookupFactory());
2022-03-01 15:53:24 +01:00
}
public static void main(String[] args) {
PGPCertDCli cli = new PGPCertDCli();
new CommandLine(cli)
.setExecutionStrategy(parserResult -> cli.executionStrategy(parserResult))
.execute(args);
}
2022-08-09 18:34:42 +02:00
public static PGPainlessCertD getCertificateDirectory() {
2022-03-01 15:53:24 +01:00
return certificateDirectory;
}
}