#513 Allow to run updateDocs task from command line

This commit is contained in:
ljacqu 2016-05-20 17:15:53 +02:00
parent 2edcb703c1
commit a355c325c5
2 changed files with 38 additions and 12 deletions

View File

@ -247,7 +247,7 @@
<workingDirectory>${project.basedir}/target/test-classes</workingDirectory>
<mainClass>tools.ToolsRunner</mainClass>
<arguments>
<argument>writePermissionsList</argument>
<argument>updateDocs</argument>
</arguments>
<includeProjectDependencies>true</includeProjectDependencies>
</configuration>

View File

@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableSet;
import tools.commands.CommandPageCreater;
import tools.hashmethods.HashAlgorithmsDescriptionTask;
import tools.permissions.PermissionsListWriter;
import tools.utils.AutoToolTask;
import tools.utils.ToolTask;
import java.util.Scanner;
@ -12,9 +13,9 @@ import java.util.Set;
/**
* Task that runs all tasks which update files in the docs folder.
*/
public class UpdateDocsTask implements ToolTask {
public class UpdateDocsTask implements AutoToolTask {
private final Set<Class<? extends ToolTask>> TASKS = ImmutableSet.<Class<? extends ToolTask>>of(
private static final Set<Class<? extends ToolTask>> TASKS = ImmutableSet.<Class<? extends ToolTask>>of(
CommandPageCreater.class, HashAlgorithmsDescriptionTask.class, PermissionsListWriter.class);
@Override
@ -23,17 +24,25 @@ public class UpdateDocsTask implements ToolTask {
}
@Override
public void execute(Scanner scanner) {
for (Class<? extends ToolTask> taskClass : TASKS) {
try {
ToolTask task = instantiateTask(taskClass);
System.out.println("\nRunning " + task.getTaskName() + "\n-------------------");
public void execute(final Scanner scanner) {
executeTasks(new TaskRunner() {
@Override
public void execute(ToolTask task) {
task.execute(scanner);
} catch (UnsupportedOperationException e) {
System.err.println("Error running task of class '" + taskClass + "'");
e.printStackTrace();
}
}
});
}
@Override
public void executeDefault() {
executeTasks(new TaskRunner() {
@Override
public void execute(ToolTask task) {
if (task instanceof AutoToolTask) {
((AutoToolTask) task).executeDefault();
}
}
});
}
private static ToolTask instantiateTask(Class<? extends ToolTask> clazz) {
@ -43,4 +52,21 @@ public class UpdateDocsTask implements ToolTask {
throw new UnsupportedOperationException(e);
}
}
private static void executeTasks(TaskRunner runner) {
for (Class<? extends ToolTask> taskClass : TASKS) {
try {
ToolTask task = instantiateTask(taskClass);
System.out.println("\nRunning " + task.getTaskName() + "\n-------------------");
runner.execute(task);
} catch (UnsupportedOperationException e) {
System.err.println("Error running task of class '" + taskClass + "'");
e.printStackTrace();
}
}
}
private interface TaskRunner {
void execute(ToolTask task);
}
}