package cli;

import org.apache.commons.cli.*;

public class CommandLineInterface {

    private Options options;

    public CommandLineInterface(){
        this.options = new Options();
        addOptions();
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp( "to do", options); //todo
    }


    public void addOptions(){

        OptionGroup uniqueCommands = new OptionGroup();

        Option initialiseITS = Option.builder()
                .longOpt("init")
                .desc("initialise issue system")
                .build();
        uniqueCommands.addOption(initialiseITS);

        Option createIssue = Option.builder()
                .longOpt("new")
                .hasArgs()
                .argName("TITLE> <DESCRIPTION")
                .numberOfArgs(2)
                .desc("create new issue")
                .build();
        uniqueCommands.addOption(createIssue);


//        Option createIssue = Option.builder()
//                .longOpt("new")
//                .hasArgs()
//                .argName("<TITLE> <DESCRIPTION> [LABEL]")
//                .numberOfArgs(Option.UNLIMITED_VALUES)
//                .desc("create new issue")
//                .build();
//        uniqueCommands.addOption(createIssue);


        Option updateIssue = Option.builder()
                .longOpt("update")
                .desc("update issue with given id")
                .build();
        uniqueCommands.addOption(updateIssue);

        Option deleteIssue = Option.builder()
                .longOpt("remove")
                .hasArg()
                .argName("ID")
                .desc("delete issue with given id")
                .build();
        uniqueCommands.addOption(deleteIssue);

        Option comment = Option.builder()
                .longOpt("comment")
                .desc("comment on issue with given id")
                .build();
        uniqueCommands.addOption(comment);

        Option viewIssues = Option.builder()
                .longOpt("view")
                .desc("view on issue with given id")
                .build();
        uniqueCommands.addOption(viewIssues);

        options.addOptionGroup(uniqueCommands);

    }

    public CommandLine getInput(String[] userInput) throws ParseException {
        CommandLineParser parser = new DefaultParser();
        return parser.parse(options, userInput);
    }
}