pgp.cert_d.cli.PGPCertDCli Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pgpainless-cert-d-cli Show documentation
Show all versions of pgpainless-cert-d-cli Show documentation
PGPainless implementation of the Shared PGP Certificate Directory
// SPDX-FileCopyrightText: 2022 Paul Schaub
//
// SPDX-License-Identifier: Apache-2.0
package pgp.cert_d.cli;
import org.pgpainless.certificate_store.PGPainlessCertD;
import pgp.cert_d.BaseDirectoryProvider;
import pgp.cert_d.cli.commands.Export;
import pgp.cert_d.cli.commands.Find;
import pgp.cert_d.cli.commands.Get;
import pgp.cert_d.cli.commands.Insert;
import pgp.cert_d.cli.commands.Import;
import pgp.cert_d.cli.commands.List;
import pgp.cert_d.cli.commands.Setup;
import pgp.cert_d.jdbc.sqlite.DatabaseSubkeyLookupFactory;
import pgp.certificate_store.exception.NotAStoreException;
import picocli.CommandLine;
import java.io.File;
import java.sql.SQLException;
@CommandLine.Command(
name = "certificate-store",
resourceBundle = "msg_pgp-cert-d",
subcommands = {
CommandLine.HelpCommand.class,
Export.class,
Insert.class,
Import.class,
Get.class,
Setup.class,
List.class,
Find.class
}
)
public class PGPCertDCli {
@CommandLine.Option(names = {"-s", "--store"}, paramLabel = "DIRECTORY",
scope = CommandLine.ScopeType.INHERIT)
File baseDirectory;
static PGPainlessCertD certificateDirectory;
// https://www.cyberciti.biz/faq/linux-bash-exit-status-set-exit-statusin-bash/
public static final int EXIT_CODE_NOT_A_STORE = 30;
private int executionStrategy(CommandLine.ParseResult parseResult) {
try {
initStore();
} catch (NotAStoreException | SQLException e) {
return EXIT_CODE_NOT_A_STORE;
}
return new CommandLine.RunLast().execute(parseResult);
}
private void initStore() throws NotAStoreException, SQLException {
if (certificateDirectory != null) {
return;
}
if (baseDirectory == null) {
baseDirectory = BaseDirectoryProvider.getDefaultBaseDir();
}
PGPCertDCli.certificateDirectory = PGPainlessCertD.fileBased(baseDirectory, new DatabaseSubkeyLookupFactory());
}
public static void main(String[] args) {
PGPCertDCli cli = new PGPCertDCli();
new CommandLine(cli)
.setExecutionStrategy(parserResult -> cli.executionStrategy(parserResult))
.execute(args);
}
public static PGPainlessCertD getCertificateDirectory() {
return certificateDirectory;
}
}