@@ -0,0 +1,654 @@
+package io.rouz.task.cli;%0A%0Aimport io.rouz.task.Task;%0A%0Aimport joptsimple.OptionParser;%0A%0A/**%0A * Used to create a %7B@link Task%3CT%3E%7D by parsing arguments from a String array.%0A *%0A * Use with %7B@link Cli%7D.%0A */%0Apublic interface TaskConstructor%3CT%3E %7B%0A%0A  /**%0A   * @return The name of the task being created%0A   */%0A  String name();%0A%0A  /**%0A   * Create an instance of the task by parsing the arguments from a String array%0A   *%0A   * @param args  The arguments to parse%0A   * @return an instance of the task%0A   */%0A  Task%3CT%3E create(String... args);%0A%0A  /**%0A   * @return The underlying %7B@link joptsimple.OptionParser%7D for this task constructor%0A   */%0A  OptionParser parser();%0A%7D%0A

add task constructor interface