package tools.docs; 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; import java.util.Set; import java.util.function.Consumer; /** * Task that runs all tasks which update files in the docs folder. */ public class UpdateDocsTask implements AutoToolTask { private static final Set> TASKS = ImmutableSet .of(CommandPageCreater.class, HashAlgorithmsDescriptionTask.class, PermissionsListWriter.class); @Override public String getTaskName() { return "updateDocs"; } @Override public void execute(final Scanner scanner) { executeTasks(task -> task.execute(scanner)); } @Override public void executeDefault() { executeTasks(task -> { if (task instanceof AutoToolTask) { ((AutoToolTask) task).executeDefault(); } }); } private static ToolTask instantiateTask(Class clazz) { try { return clazz.newInstance(); } catch (IllegalAccessException | InstantiationException e) { throw new UnsupportedOperationException("Could not instantiate task class '" + clazz + "'", e); } } private static void executeTasks(Consumer taskRunner) { for (Class taskClass : TASKS) { ToolTask task = instantiateTask(taskClass); System.out.println("\nRunning " + task.getTaskName() + "\n-------------------"); taskRunner.accept(task); } } }