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

io.redskap.swagger.brake.cli.options.CliOptionsProvider Maven / Gradle / Ivy

package io.redskap.swagger.brake.cli.options;

import java.util.List;

import io.redskap.swagger.brake.cli.options.handler.CliOptionHandler;
import io.redskap.swagger.brake.runner.Options;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
@Slf4j
public class CliOptionsProvider {
    private final List handlers;
    private final CliHelpProvider helpProvider;
    private final Environment environment;

    public Options provide() {
        if (isHelpRequired()) {
            throw new CliHelpException(helpProvider.getHelp());
        }
        Options options = new Options();
        for (CliOptionHandler handler : handlers) {
            String handledPropertyName = handler.getHandledPropertyName();
            String propertyValue = environment.getProperty(handledPropertyName);
            log.debug("Handling command line argument {} with value of {}", handledPropertyName, propertyValue);
            handler.handle(propertyValue, options);
        }
        return options;
    }

    private boolean isHelpRequired() {
        return environment.getProperty(CliOptions.HELP) != null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy