SreaderCliExecutor.java
package net.sasasin.sreader.cli;
import org.springframework.stereotype.Component;
import picocli.CommandLine;
/** Executes SReader CLI commands with Spring-backed dependency injection. */
@Component
public class SreaderCliExecutor {
private final SreaderCommand sreaderCommand;
private final PicocliFactory picocliFactory;
public SreaderCliExecutor(SreaderCommand sreaderCommand, PicocliFactory picocliFactory) {
this.sreaderCommand = sreaderCommand;
this.picocliFactory = picocliFactory;
}
public int execute(String... args) {
CommandLine cli = new CommandLine(sreaderCommand, picocliFactory);
cli.setExitCodeExceptionMapper(
exception ->
exception instanceof CommandLine.ParameterException
? CliExitCodes.USAGE_ERROR
: CliExitCodes.EXECUTION_ERROR);
return cli.execute(args);
}
}