码迷,mamicode.com
首页 > 其他好文 > 详细

An annotation based command line parser

时间:2018-05-05 01:04:04      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:flag   diff   view   ble   sed   message   let   result   cal   

JCommander star1000+

This is an annotation based parameter parsing framework for Java 8.

The full doc is available at http://jcommander.org.

 

 

Java port of Python‘s famous argparse command-line argument parser. https://argparse4j.github.io/

Argparse4j is a command line argument parser library for Java based on Python‘s argparse module.

Argparse4j is available in Maven central repository:

<dependency>
  <groupId>net.sourceforge.argparse4j</groupId>
  <artifactId>argparse4j</artifactId>
  <version>0.8.0</version>
</dependency>

 https://github.com/argparse4j/argparse4j

 

 

https://github.com/jankroken/commandline

The Apache Commons CLI library provides an API for parsing command line options passed to programs. It‘s also able to print help messages detailing the options available for a command line tool.

Commons CLI supports different types of options:

http://commons.apache.org/proper/commons-cli/

https://stackoverflow.com/questions/11704338/java-cli-commandlineparser

https://github.com/jatoben/CommandLine

Mirror of Apache Commons CLI

https://github.com/apache/commons-cli

 

 

CLI Parser is a tiny (10k jar), super easy to use library for parsing various kinds of command line arguments or property lists. Using annotations on your fields or JavaBean properties you can specify what configuration is available. Here is an example:

 

public class Loader {

  @Argument
  private static Boolean hdfs = false;

  @Argument(alias = "r", description = "Regular expression to parse lines", required = true)
  private static String regex;

  @Argument(alias = "k", description = "Key column", required = true)
  private static String key;

  @Argument(alias = "p", description = "Key prefix")
  private static String prefix;

  @Argument(alias = "c", description = "Column groups", delimiter = ",")
  private static String[] columns;

  @Argument(alias = "n", description = "Column names", delimiter = ",")
  private static String[] names;

  @Argument(alias = "h", description = "Redis host")
  private static String host = "localhost";

  @Argument(alias = "p", description = "Redis port")
  private static Integer port = 6379;

  public static void main(String[] args) throws IOException {
    // unparsed will contain all unparsed arguments to the command line
    List<String> unparsed = Args.parseOrExit(Loader.class, args);
    // Loader‘s fields will be populated after this line or the program will exit with usage
  }
}

In this case we are configuring static fields, but you can also use the same system with instances. If you pass in a wrong command line argument you will get the usage message:

Usage: com.sampullara.cli.Example
  -hdfs [flag]
  -regex (-r) [String] Regular expression to parse lines
  -key (-k) [String] Key column
  -prefix (-p) [String] Key prefix
  -columns (-c) [String[,]] Column groups
  -names (-n) [String[,]] Column names
  -host (-h) [String] Redis host (localhost)
  -port (-p) [Integer] Redis port (6379)

That message will print out the names and aliases of the arguments, type, description and a default value for the parameter if there is one. You can add it to your code with:

<dependency>
  <groupId>com.github.spullara.cli-parser</groupId>
  <artifactId>cli-parser</artifactId>
  <version>1.1</version>
</dependency>

https://github.com/spullara/cli-parser

 

 

 

KeyStore Explorer is a free GUI replacement for the Java command-line utilities keytool and jarsigner.

Official website: http://keystore-explorer.org/

Features:

  • Create, load, save and convert between various KeyStore types: JKS, JCEKS, PKCS#12, BKS (V1 and V2) and UBER
  • Change KeyStore and KeyStore entry passwords
  • Delete or rename KeyStore entries
  • Cut/copy/paste KeyStore entries
  • Append certificates to key pair certificate chains
  • Generate RSA, ECC and DSA key pairs with self-signed X.509 certificates
  • Apply X.509 certificate extensions to generated key pairs and Certificate Signing Requests (CSRs)
  • View X.509 Certificate, CRL and CRL entry X.509 V3 extensions
  • Import and export keys and certificates in many formats: PKCS#12, PKCS#8, PKCS#7, DER/PEM X.509 certificate files, Microsoft PVK, SPC, PKI Path, OpenSSL
  • Generate, view and sign CSRs in PKCS #10 and SPKAC formats
  • Sign JAR files
  • Configure a CA Certs KeyStore for use with KeyStore operations

https://github.com/kaikramer/keystore-explorer

 

Library Usage:

  1. Drop the jar into your lib folder and add to build path.
  2. Choose the converter of your choice, they are named DocToPDFConverter, DocxToPDFConverter, PptToPDFConverter, PptxToPDFConverter and OdtToPDFConverter.
  3. Instantiate with 4 parameters
    • InputStream inStream: Document source stream to be converted
    • OutputStream outStream: Document output stream
    • boolean showMessages: Whether to show intermediate processing messages to Standard Out (stdout)
    • boolean closeStreamsWhenComplete: Whether to close input and output streams when complete
  4. Call the "convert()" method and wait.

Caveats and technical details:

This tool relies on Apache POI, xdocreport, docx4j and odfdom libraries. They are not 100% reliable and the output format may not always be what you desire.

DOC:

Generally ok but takes some time to convert.. I notice that after conversion, the paragraph spacing tends to increase affecting your page layout. Conversion is done using docx4j to convert DOC to DOCX then to PDF.(Cannot use xdocreport once the DOCX data is obtained as the intermediate data structure is docx4j specific.)

DOCX:

Very good results. Fast conversion too. Conversion is done using xdocreport library as it seems faster and more accurate than docx4j.

PPT and PPTX:

Resulting file is a PDF comprising of a PNG embedded in each page. Should be good enough for printing. This is the limitation of the Apache POI and docx4j libraries.

ODT:

Quality and speed as good as DOCX. Conversion is done using odfdom of the Apache ODF Toolkit.

Main Libraries

Apache POI: https://poi.apache.org/
xdocreport: http://code.google.com/p/xdocreport/
docx4j: http://www.docx4java.org/
odfdom: https://incubator.apache.org/odftoolkit/odfdom/

https://github.com/yeokm1/docs-to-pdf-converter

 

Pdf2Dom is a PDF parser that converts the documents to a HTML DOM representation. The obtained DOM tree may be then serialized to a HTML file or further processed. A command-line utility for converting the PDF documents to HTML is included in the distribution package. Pdf2Dom may be also used as an independent Java library with a standard DOM i…http://cssbox.sourceforge.net/pdf2dom/

Pdf2Dom is based on the Apache PDFBox™ library.

 https://github.com/radkovo/Pdf2Dom

 




About

Generate scaffold with spring boot.

Generate CRUD basic with spring boot.

Scaffold for java web, a clean generate with simple classes.

https://github.com/NetoDevel/cli-spring-boot-scaffold

 

An annotation based command line parser

标签:flag   diff   view   ble   sed   message   let   result   cal   

原文地址:https://www.cnblogs.com/softidea/p/8993281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!