Do you want to build an interactive shell or a cli tool? For a custom shell I have used https://github.com/chzyer/readline before, but I did not work on it a lot.
I also wanted custom completions based on context and this readline implementation was decent for that.