Package co.tomlee.gradle.plugins.beaver

Source Code of co.tomlee.gradle.plugins.beaver.BeaverTask

package co.tomlee.gradle.plugins.beaver;

import beaver.Parser;
import beaver.comp.ParserGenerator;
import beaver.comp.io.SrcReader;
import beaver.comp.run.Options;
import beaver.comp.util.Log;
import beaver.spec.Grammar;
import org.gradle.api.file.FileCollection;
import org.gradle.api.file.SourceDirectorySet;
import org.gradle.api.tasks.InputFiles;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.SourceTask;
import org.gradle.api.tasks.TaskAction;

import java.io.File;
import java.io.IOException;

public class BeaverTask extends SourceTask {
    private SourceDirectorySet source;
    private File outputDirectory;
    private FileCollection beaverClasspath;

    @TaskAction
    public void generate() throws IOException, Parser.Exception, Grammar.Exception {
        for (final File file : source.getFiles()) {
            final SrcReader srcReader = new SrcReader(file);
            final Options options = new Options();
            options.dest_dir = getOutputDirectory();
            ParserGenerator.compile(srcReader, options, new Log());
        }
    }

    public void setSource(final SourceDirectorySet source) {
        this.source = source;
    }

    public SourceDirectorySet getSource() {
        return this.source;
    }

    @InputFiles
    public FileCollection getBeaverClasspath() {
        return beaverClasspath;
    }

    public void setBeaverClasspath(final FileCollection beaverClasspath) {
        this.beaverClasspath = beaverClasspath;
    }

    public void setOutputDirectory(final File outputDirectory) {
        this.outputDirectory = outputDirectory;
    }

    @OutputDirectory
    public File getOutputDirectory() {
        return outputDirectory;
    }
}
TOP

Related Classes of co.tomlee.gradle.plugins.beaver.BeaverTask

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.