All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jasmine.cli.Arguments Maven / Gradle / Ivy

package org.jasmine.cli;

import org.jasmine.SpecScanner;
import org.kohsuke.args4j.*;
import org.kohsuke.args4j.spi.EnumOptionHandler;
import org.kohsuke.args4j.spi.Setter;

import java.util.ArrayList;
import java.util.List;

public class Arguments {

    public static class CompileModeEnumOptionHandler extends EnumOptionHandler {
        public CompileModeEnumOptionHandler(CmdLineParser parser, OptionDef option, Setter setter) {
            super(parser, option, setter, CompileMode.class);
        }
    }

    public static class OutputFormatEnumOptionHandler extends EnumOptionHandler {
        public OutputFormatEnumOptionHandler(CmdLineParser parser, OptionDef option, Setter setter) {
            super(parser, option, setter, OutputFormat.class);
        }
    }


    public static Arguments parse(String... args) {
        Arguments arguments = new Arguments();
        CmdLineParser parser = new CmdLineParser(arguments);
        try {
            parser.parseArgument(args);
        } catch (CmdLineException e) {
            throw new RuntimeException(e);
        }
        return arguments;
    }

    @Option(name = "--pattern")
    private String pattern;

    @Option(name = "--compile-mode", handler = CompileModeEnumOptionHandler.class)
    private CompileMode compileMode = CompileMode.JIT;

    @Option(name = "--format", handler = OutputFormatEnumOptionHandler.class)
    private OutputFormat format = OutputFormat.PROGRESS;


    @Argument
    private List arguments = new ArrayList();

    public Iterable specs(){
        if(pattern != null){
            return new SpecScanner().findSpecs(pattern);
        }else{
            return arguments;
        }
    }

    public CompileMode compileMode() {
        return compileMode;
    }

    public Formatter formatter() {
        return format.formatter();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy