Example #1
0
 private static CompileParameter from(
     final String value, final List<CompileParameter> parameters) {
   for (final CompileParameter cp : parameters) {
     if (cp.getAlias().equalsIgnoreCase(value)) {
       return cp;
     }
   }
   return null;
 }
Example #2
0
 public void put(final CompileParameter parameter, final String value) {
   if (parameter instanceof Prompt) {
     noPrompt = true;
   } else if (parameter instanceof LogOutput) {
     withLog = true;
   } else if (parameter instanceof DisableColors) {
     withColor = false;
     console = System.out;
   }
   parameters.put(parameter.getAlias(), value);
 }
Example #3
0
 public static boolean processContext(
     final Context context, final List<CompileParameter> parameters) {
   try {
     context.notify("PROCESS", parameters);
     for (final CompileParameter cp : parameters) {
       if (!cp.check(context)) {
         if (cp.getDetailedDescription() != null) {
           context.show();
           context.show();
           context.show(cp.getDetailedDescription());
         }
         return false;
       }
     }
     for (final CompileParameter cp : parameters) {
       cp.run(context);
     }
     return true;
   } catch (ExitException ex) {
     return false;
   }
 }
Example #4
0
 public String get(final CompileParameter parameter) {
   return parameters.get(parameter.getAlias());
 }
Example #5
0
 public boolean contains(final CompileParameter parameter) {
   return parameters.containsKey(parameter.getAlias());
 }
Example #6
0
 private static void showHelpAndExit(
     final Context context, final boolean headers, final List<CompileParameter> parameters) {
   if (headers) {
     context.show("DSL Platform - Command-Line Client (" + Main.getVersion() + ")");
     context.show(
         "This tool allows you to compile provided DSL to various languages such as Java, Scala, PHP, C#, etc... or create an SQL migration between two DSL models.");
   }
   context.show();
   context.show();
   context.show("Command parameters:");
   int max = 0;
   for (final CompileParameter cp : parameters) {
     if (cp.getShortDescription() == null) {
       continue;
     }
     int width = cp.getAlias().length();
     if (cp.getUsage() != null) {
       width += 1 + cp.getUsage().length();
     }
     if (max < width) {
       max = width;
     }
   }
   max += 2;
   for (final CompileParameter cp : parameters) {
     if (cp.getShortDescription() == null) {
       continue;
     }
     final StringBuilder sb = new StringBuilder();
     sb.append(" -").append(cp.getAlias());
     int len = max - cp.getAlias().length();
     if (cp.getUsage() != null) {
       sb.append("=").append(cp.getUsage());
       len -= cp.getUsage().length() + 1;
     }
     for (; len >= 0; len--) {
       sb.append(' ');
     }
     sb.append(cp.getShortDescription());
     context.show(sb.toString());
   }
   context.show();
   context.show("Example usages:");
   context.show("\ttarget=java_client,revenj.java postgres=localhost/Database?user=postgres");
   context.show(
       "\tjava_client=model.jar revenj.net=Model.dll postgres=localhost/Database?user=postgres");
   context.show("\tproperties=development.props download");
 }
Example #7
0
 private static boolean parse(
     final String[] args, final Context context, final List<CompileParameter> parameters) {
   if (args.length == 1 && ("/?".equals(args[0]) || "-?".equals(args[0]) || "?".equals(args[0]))) {
     showHelpAndExit(context, true, parameters);
     return false;
   }
   final List<ParameterParser> customParsers = new ArrayList<ParameterParser>();
   for (final CompileParameter cp : parameters) {
     if (cp instanceof ParameterParser) {
       customParsers.add((ParameterParser) cp);
     }
   }
   final List<String> errors = new ArrayList<String>();
   for (String a : args) {
     if (a.startsWith("-") || a.startsWith("/")) a = a.substring(1);
     final int eq = a.indexOf('=');
     final String name = a.substring(0, eq != -1 ? eq : a.length());
     final String value = eq == -1 ? null : a.substring(eq + 1);
     final CompileParameter cp = from(name, parameters);
     if (cp == null) {
       boolean matched = false;
       for (final ParameterParser parser : customParsers) {
         final Either<Boolean> tryParse = parser.tryParse(name, value, context);
         if (!tryParse.isSuccess()) {
           errors.add(tryParse.explainError());
           matched = true;
           break;
         } else if (tryParse.get()) {
           matched = true;
           break;
         }
       }
       if (!matched) {
         errors.add("Unknown parameter: " + name);
       }
     } else {
       if (eq == -1 && cp.getUsage() != null) {
         if (cp instanceof ParameterParser) {
           Either<Boolean> tryParse = ((ParameterParser) cp).tryParse(name, null, context);
           if (tryParse.isSuccess() && tryParse.get()) {
             context.put(cp, null);
           } else {
             errors.add("Expecting " + cp.getUsage() + " after = for " + a);
           }
         } else {
           errors.add("Expecting " + cp.getUsage() + " after = for " + a);
         }
       } else {
         context.put(cp, value);
       }
     }
   }
   if (args.length == 0 || errors.size() > 0) {
     for (final String err : errors) {
       context.error(err);
     }
     showHelpAndExit(context, args.length == errors.size(), parameters);
     return false;
   }
   return true;
 }