From e33a54165c776652eafccab09bebc50dff19e091 Mon Sep 17 00:00:00 2001 From: Cassio Masteguim Date: Mon, 13 Jul 2020 12:44:06 -0300 Subject: [PATCH] =?UTF-8?q?Refatorando=20as=20op=C3=A7=C3=B5es=20de=20comm?= =?UTF-8?q?and=20line?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++ src/main/java/cotuba/Main.java | 39 +++----------- src/main/java/cotuba/cli/OptionCLIReader.java | 54 +++++++++++++++++++ 3 files changed, 63 insertions(+), 33 deletions(-) create mode 100644 src/main/java/cotuba/cli/OptionCLIReader.java diff --git a/.gitignore b/.gitignore index 60a9476..a392f45 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,7 @@ target .project .settings .build/ +.idea/ +cotuba-cli.iml + diff --git a/src/main/java/cotuba/Main.java b/src/main/java/cotuba/Main.java index a1dcd2a..0ffa259 100644 --- a/src/main/java/cotuba/Main.java +++ b/src/main/java/cotuba/Main.java @@ -9,6 +9,7 @@ import java.util.List; import java.util.stream.Stream; +import cotuba.cli.OptionCLIReader; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; @@ -40,36 +41,8 @@ public class Main { public static void main(String[] args) { - Options options = new Options(); - Option opcaoDeDiretorioDosMD = new Option("d", "dir", true, - "Diretório que contem os arquivos md. Default: diretório atual."); - options.addOption(opcaoDeDiretorioDosMD); - - Option opcaoDeFormatoDoEbook = new Option("f", "format", true, - "Formato de saída do ebook. Pode ser: pdf ou epub. Default: pdf"); - options.addOption(opcaoDeFormatoDoEbook); - - Option opcaoDeArquivoDeSaida = new Option("o", "output", true, - "Arquivo de saída do ebook. Default: book.{formato}."); - options.addOption(opcaoDeArquivoDeSaida); - - Option opcaoModoVerboso = new Option("v", "verbose", false, - "Habilita modo verboso."); - options.addOption(opcaoModoVerboso); - - CommandLineParser cmdParser = new DefaultParser(); - HelpFormatter ajuda = new HelpFormatter(); - CommandLine cmd; - - try { - cmd = cmdParser.parse(options, args); - } catch (ParseException e) { - System.err.println(e.getMessage()); - ajuda.printHelp("cotuba", options); - System.exit(1); - return; - } + OptionCLIReader optionCLIReader = new OptionCLIReader(args); Path diretorioDosMD; String formato; @@ -78,7 +51,7 @@ public static void main(String[] args) { try { - String nomeDoDiretorioDosMD = cmd.getOptionValue("dir"); + String nomeDoDiretorioDosMD = optionCLIReader.getNomeDoDiretorioDosMD(); if (nomeDoDiretorioDosMD != null) { diretorioDosMD = Paths.get(nomeDoDiretorioDosMD); @@ -90,7 +63,7 @@ public static void main(String[] args) { diretorioDosMD = diretorioAtual; } - String nomeDoFormatoDoEbook = cmd.getOptionValue("format"); + String nomeDoFormatoDoEbook = optionCLIReader.getNomeDoFormatoDoEbook(); if (nomeDoFormatoDoEbook != null) { formato = nomeDoFormatoDoEbook.toLowerCase(); @@ -98,7 +71,7 @@ public static void main(String[] args) { formato = "pdf"; } - String nomeDoArquivoDeSaidaDoEbook = cmd.getOptionValue("output"); + String nomeDoArquivoDeSaidaDoEbook = optionCLIReader.getNomeDoArquivoDeSaidaDoEbook(); if (nomeDoArquivoDeSaidaDoEbook != null) { arquivoDeSaida = Paths.get(nomeDoArquivoDeSaidaDoEbook); if (Files.exists(arquivoDeSaida) && Files.isDirectory(arquivoDeSaida)) { @@ -108,7 +81,7 @@ public static void main(String[] args) { arquivoDeSaida = Paths.get("book." + formato.toLowerCase()); } - modoVerboso = cmd.hasOption("verbose"); + modoVerboso = optionCLIReader.isModoVerboso(); if ("pdf".equals(formato)) { try(PdfWriter writer = new PdfWriter(Files.newOutputStream(arquivoDeSaida)); diff --git a/src/main/java/cotuba/cli/OptionCLIReader.java b/src/main/java/cotuba/cli/OptionCLIReader.java new file mode 100644 index 0000000..3800c72 --- /dev/null +++ b/src/main/java/cotuba/cli/OptionCLIReader.java @@ -0,0 +1,54 @@ +package cotuba.cli; + +import org.apache.commons.cli.*; + +public class OptionCLIReader { + + private String nomeDoDiretorioDosMD; + private String nomeDoFormatoDoEbook; + private String nomeDoArquivoDeSaidaDoEbook; + private boolean modoVerboso = false; + + public OptionCLIReader(String [] args) { + Options options = new Options(); + + options.addOption(new Option("d", "dir", true, "Diretório que contem os arquivos md. Default: diretório atual.")); + options.addOption(new Option("f", "format", true, "Formato de saída do ebook. Pode ser: pdf ou epub. Default: pdf")); + options.addOption(new Option("o", "output", true, "Arquivo de saída do ebook. Default: book.{formato}.")); + options.addOption(new Option("v", "verbose", false, "Habilita modo verboso.")); + + CommandLineParser cmdParser = new DefaultParser(); + HelpFormatter ajuda = new HelpFormatter(); + CommandLine cmd; + + try { + cmd = cmdParser.parse(options, args); + } catch (ParseException e) { + System.err.println(e.getMessage()); + ajuda.printHelp("cotuba", options); + System.exit(1); + return; + } + + this.nomeDoDiretorioDosMD = cmd.getOptionValue("dir"); + this.nomeDoFormatoDoEbook = cmd.getOptionValue("format"); + this.nomeDoArquivoDeSaidaDoEbook = cmd.getOptionValue("output"); + this.modoVerboso = cmd.hasOption("verbose"); + } + + public String getNomeDoDiretorioDosMD() { + return nomeDoDiretorioDosMD; + } + + public String getNomeDoFormatoDoEbook() { + return nomeDoFormatoDoEbook; + } + + public String getNomeDoArquivoDeSaidaDoEbook() { + return nomeDoArquivoDeSaidaDoEbook; + } + + public boolean isModoVerboso() { + return modoVerboso; + } +}