luckyframework / luckyframework/lucky_cli
Switch to Cling for parsing
Nobody has claimed this yet.
- Dominant language
- HTML
- Stars
- 92
- Forks
- 48
- PR merge metrics
- No merged PRs in 30d
Description
Hi Lucky team,
I've been working on a CLI library called [Cling](https://github.com/devnote-dev/cling) that allows you to design scalable and robust command line applications without having to deal with complicated macro logic, it's quite good if I do say so myself but I'll let you be the judges of that. It's currently used in [phenopolis/thumbnailer](https://github.com/phenopolis/thumbnailer) and [PteroPackages/Aerotitan](https://github.com/PteroPackages/Aerotitan) for production, and I believe it will be a useful addition to Lucky CLI.
## Advantages
* Highly configurable: the library is designed to be almost entirely modular, so you can configure it as much as you like
* Scalable: you can add, remove and refactor commands easily and with much almost no hassle
* Standardised: the library is based off the well-known Go library [cobra](https://github.com/spf13/cobra) which tightly follows the GNU convention for command line interfaces
* Spec compatible: you don't have to jump through hurdles to get good command specs, Cling supports them! See [Cling's command specs](https://github.com/devnote-dev/cling/blob/main/spec/command_spec.cr) for examples
You can view the full list of features in the [README](https://github.com/devnote-dev/cling/blob/main/README.md).
## But Why Cling?
I believe that Cling fits Lucky's design: being able to create fast, scalable web applications that has a plethora of configurable options without being overly verbose or hard to navigate. With Cling, it's the same: being able to create fast, scalable command line applications with a plethora of configurable options while still being simple and easy to navigate. Often with command line libraries/frameworks, you have to write _a lot_ of boilerplate, memorise lots of (sometimes unconventional) macro methods, define nested classes, and other tedious requirements – not with Cling. The library follows a consistent design, plus the benefits of being modular, and will ultimately improve your command line application experience; you just need to make the first step.
## Conclusion
I hope I was able to convince you to use Cling for Lucky CLI, please let me know what you think and feel free to ask me anything. 😄
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with Cling's README and the linked spec/command_spec.cr examples to understand its capabilities and command-spec conventions. Then inspect Lucky CLI's existing command parsing entry points, which the issue does not identify, and define the migration scope and acceptance criteria before implementation. Done means Lucky CLI's parsing uses Cling without breaking its existing command behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- crystal
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100