package com.prezi.spaghetti.gradle; import com.prezi.spaghetti.definition.ModuleConfiguration; import com.prezi.spaghetti.generator.HeaderGenerator; import com.prezi.spaghetti.generator.internal.DefaultGeneratorParameters; import com.prezi.spaghetti.generator.internal.Generators; import com.prezi.spaghetti.generator.internal.InternalGeneratorUtils; import com.prezi.spaghetti.gradle.internal.AbstractDefinitionAwareSpaghettiTask; import org.apache.commons.io.FileUtils; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.OutputDirectory; import org.gradle.api.tasks.TaskAction; import java.io.File; import java.io.IOException; public class GenerateHeaders extends AbstractDefinitionAwareSpaghettiTask { private File outputDirectory; private boolean timestamp = true; @TaskAction public void generate() throws IOException { ModuleConfiguration config = readConfig(getDefinition()); getLogger().info("Generating module headers for {}", config.getLocalModule()); File directory = getOutputDirectory(); FileUtils.deleteQuietly(directory); FileUtils.forceMkdir(directory); HeaderGenerator generator = Generators.getService(HeaderGenerator.class, getLanguage()); DefaultGeneratorParameters generatorParams = new DefaultGeneratorParameters(config, InternalGeneratorUtils.createHeader(getTimestamp())); generator.generateHeaders(generatorParams, directory); } @OutputDirectory public File getOutputDirectory() { return outputDirectory; } public void setOutputDirectory(Object outputDirectory) { this.outputDirectory = getProject().file(outputDirectory); } public void outputDirectory(Object directory) { setOutputDirectory(directory); } @Input public boolean getTimestamp() { return timestamp; } public void setTimestamp(boolean timestamp) { this.timestamp = timestamp; } public void timestamp(boolean timestamp) { setTimestamp(timestamp); } }