After reading this post Update to swift package init templates, I was inspired by it and thought it would be better to use swift package init as an interactive initialization command. Users can use arrow keys to select the template type and use enter to confirm, which is kinda easy.
Implementation
Sorry for being a bit impulsive, I have implemented this feature in swiftPM's CLI(very early and simple implementation, for demostration purposes) and here is a video demo:
Other than including test folder or not, I don't have a lot of ideas. What other options do you think are worth interacting with in the project init process that would make it faster and more convenient? Please let me know, thanks a lot!
It’s really appreciate the work being done on improving the CLI’s UX!
As for my suggestions, maybe plug-ins could also be selected through this interface? Further, for the tests it’d be better to provide a default, like Tests? (Y/n).
Hi, as the gsoc organization admin for Swift I want to be clear about the fact that GSoC projects have not been accepted yet. You're of course free to work on the project on your own time, however this does not imply that this specific proposal/project will be accepted.
It's great to continue like this, but I wanted to clarify the selection process, in order to avoid any harsh feelings or surprises after the selection process completes.
Thank you very much for the clarification. I'm sorry to post in such a hurry as if my proposal was accepted. I don't expect my proposal to be accepted for sure. The reason for this post is that after talking with @bitjammer, I realized that there might be some problems with the descriptions in the idea list, and my proposal is not optimal, so I wanted to ask everyone on the forum for their opinions. If my proposal is rejected, it is perfectly acceptable. If this post makes GSoC participants uncomfortable, I am very sorry.
We need to ensure that whatever method we use for console interactivity works across different shells (bash/zsh) and all of Swift's supported platforms, (macOS, Linux and Windows)