Skip to content

Commit

Permalink
add describe option to print out description
Browse files Browse the repository at this point in the history
  • Loading branch information
josephtaylor committed Jan 19, 2019
1 parent b72a8d0 commit 913e7db
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 13 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,8 @@ hs_err_pid*

*.idea
*.iml

.classpath
.project
.settings
target
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
</distributionManagement>

<properties>
<cronutils.version>7.0.1</cronutils.version>
<cronutils.version>8.0.0</cronutils.version>
<junit.version>4.12</junit.version>
<mockito.version>1.10.19</mockito.version>
<powermock.version>1.6.2</powermock.version>
Expand Down
45 changes: 33 additions & 12 deletions src/main/java/com/cronutils/cli/CronUtilsCLI.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
package com.cronutils.cli;

import com.cronutils.descriptor.CronDescriptor;
import com.cronutils.model.Cron;
import com.cronutils.model.CronType;
import com.cronutils.model.definition.CronDefinition;
import com.cronutils.model.definition.CronDefinitionBuilder;
import com.cronutils.parser.CronParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;

import com.cronutils.model.Cron;
import com.cronutils.model.CronType;
import com.cronutils.model.definition.CronDefinition;
import com.cronutils.model.definition.CronDefinitionBuilder;
import com.cronutils.parser.CronParser;
import java.util.Locale;

/*
* Copyright 2017 bflorat, jmrozanec
Expand Down Expand Up @@ -39,6 +41,8 @@ public static void main(String[] args) throws Exception {
private static void cronValidation(String[] args) throws ParseException {
Options options = new Options();
options.addOption("v", "validate", false, "Action of validation (default)");
options.addOption("d", "describe", false, "Action of describe");
options.addOption("l", "language", true, "The language of the description. Example: en");
options.addOption("f", "format", true,
"Cron expression format to validate. Possible values are: CRON4J, QUARTZ, UNIX");
options.addOption("e", "expression", true, "Cron expression to validate. Example: '* 1 * * *'");
Expand All @@ -58,15 +62,32 @@ private static void cronValidation(String[] args) throws ParseException {
return;
}
if (cmd.hasOption('v')) {
String format = cmd.getOptionValue("f");
String expression = cmd.getOptionValue("e");
parseCron(cmd).validate();
}
if (cmd.hasOption('d')) {
String language = cmd.getOptionValue("l");
CronDescriptor cronDescriptor = CronDescriptor.instance(findLocale(language));
System.out.println(cronDescriptor.describe(parseCron(cmd)));
}
}

private static Cron parseCron(CommandLine cmd) {
String format = cmd.getOptionValue("f");
String expression = cmd.getOptionValue("e");

CronType cronType = CronType.valueOf(format);
CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(cronType);
CronParser cronParser = new CronParser(cronDefinition);
return cronParser.parse(expression);
}

CronType cronType = CronType.valueOf(format);
CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(cronType);
CronParser cronParser = new CronParser(cronDefinition);
Cron quartzCron = cronParser.parse(expression);
quartzCron.validate();
private static Locale findLocale(String code) {
for (Locale locale : Locale.getAvailableLocales()) {
if (locale.getLanguage().equals(code)) {
return locale;
}
}
throw new IllegalStateException("No locale for language " + code);
}

private static void showHelp(Options options, String header, String footer) {
Expand Down

0 comments on commit 913e7db

Please sign in to comment.