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

com.crabshue.commons.args.option.OptionsBuilder Maven / Gradle / Ivy

package com.crabshue.commons.args.option;

import java.util.Arrays;

import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;

import com.crabshue.commons.args.Argument;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;

/**
 * {@link Options} builder from {@link Argument}
 */
@Slf4j
public class OptionsBuilder {

    /**
     * Build {@link Options} from a list of {@link Argument}.
     *
     * @param arguments the arguments.
     * @return the options built.
     */
    public static Options buildOptions(@NonNull Argument... arguments) {
        final Options ret = new Options();

        Arrays.stream(arguments)
            .map(argument -> Option.builder(argument.getOptionName())
                .argName(argument.getOptionName())
                .longOpt(argument.getLongOptionName())
                .hasArg(argument.isArgumentExpected())
                .required(argument.isRequired())
                .desc(argument.getDescription())
                .build())
            .forEach(ret::addOption);

        logger.debug("Converted arguments [{}] to options [{}]", arguments, ret);
        return ret;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy