class AntennaCLIFrontend extends AbstractAntennaCLIFrontend {

    public static void main(String[] args) {
        AntennaCLIOptions options = AntennaCLIOptions.parse(args);
        if (options.isShowHelp()) {
            printUsage();
            System.exit(1);
        }

        if (options.isDebugLog()) {
            enableDebugLogging();
        }

        try {
            Path pomFilePath = Paths.get(options.getConfigFilePath()).toAbsolutePath();

            if (!pomFilePath.toFile().exists()) {
                throw new IllegalArgumentException("Cannot find " + pomFilePath.toString());
            }

            AntennaCLIFrontend frontend;

            if (options.getPropertiesFilePath() != null) {
                Path propertiesFilePath = Paths.get(options.getPropertiesFilePath()).toAbsolutePath();
                if (!propertiesFilePath.toFile().exists()) {
                    throw new IllegalArgumentException("Cannot find " + propertiesFilePath.toString());
                }
                frontend = new AntennaCLIFrontend(pomFilePath.toFile(), propertiesFilePath.toFile());
            } else {
                frontend = new AntennaCLIFrontend(pomFilePath.toFile());
            }

            frontend.execute();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Error: " + e.getMessage());
            System.exit(1);
        }
    }

    public  AntennaCLIFrontend(File file);
    public  AntennaCLIFrontend(File pomFile, File propertiesFile);

}