Introduce new CLI module inspired by PicoCLI#53201
Introduce new CLI module inspired by PicoCLI#53201geoand wants to merge 1 commit intoquarkusio:mainfrom
Conversation
The main idea of this implementation is to determine all the necessary annotation metadata at build time This new module is used in the Quarkus CLI in place of PicoCLI
|
🎊 PR Preview fd77d32 has been successfully built and deployed to https://quarkus-pr-main-53201-preview.surge.sh/version/main/guides/
|
|
cool @geoand - i'm tired of picocli overhead too but adding a third actually fourth cli parser (picocli, argline(? the one quarkus bot uses), aesh) also is tricky. have you tried these numbers compare to use picoclis annotation processor for native image? the diff between helloworld and quarkus cli is the number of commands I assume. I'm asking because just applying those gave a boost similar to above (if i read the numbers right) in any case I'll try give it a go. |
I have not, but IIRC, that annotation processor doesn't prevent runtime reflection, right?
Yeah, I totally agree on this. Honestly, if it were not for Quarkus CLI using PicoCLI, I probably would not have bothered |
|
crazy thought: I'm wondering if maybe aesh could be adjusted to follow whatever quickcli does so we dont add one more... @stalep ^^ this is example of overhead we were chatting about :) |
|
I'm definitely not tied to this solution; I just wanted to show what is possible. FWIW, the huge advantage this solution has is that Quarkus CLI is almost unchanged despite the move to the new CLI lib |
|
Ultimately I wish we had a library I could use both in and outside Quarkus apps...is the quickcli "tied" to quarkus? |
|
There is no fallback for reading annotations at runtime, but we could certainly add one if we want to support such use cases |

The main idea of this implementation is to
determine all the necessary annotation metadata
at build time
This new module is used in the Quarkus CLI in
place of PicoCLI. As can be seen, the changes to
Quarkus CLI are minimal
Using this instead of picocli for the quarkus-cli yielded the following difference in startup for
time quarkus versionFrom:
To:
For a hello world CLI project using Picocli, the improvement is less impressive.
From:
To: