EntryPositionSelectionConverter.java
package net.sasasin.sreader.cli;
import java.util.Locale;
import net.sasasin.sreader.domain.FeedEntrySelection;
import picocli.CommandLine.ITypeConverter;
import picocli.CommandLine.TypeConversionException;
/** Converts {@code --entry first|latest} to a {@link FeedEntrySelection}. */
final class EntryPositionSelectionConverter implements ITypeConverter<FeedEntrySelection> {
@Override
public FeedEntrySelection convert(String value) {
if (value == null || value.isBlank()) {
throw new TypeConversionException("--entry must be first or latest");
}
return switch (value.trim().toLowerCase(Locale.ROOT)) {
case "first" -> FeedEntrySelection.first();
case "latest" -> FeedEntrySelection.latest();
default -> throw new TypeConversionException("--entry must be first or latest: " + value);
};
}
}