# What packages exist for creating CLIs?

**URL:** https://discourse.julialang.org/t/what-packages-exist-for-creating-clis/64577
**Category:** General Usage
**Tags:** package
**Created:** [July 13, 2021, 2:50pm UTC](https://discourse.julialang.org/t/what-packages-exist-for-creating-clis/64577 "2021-07-13T14:50:31Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![orome](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/orome/32/26965_2.png) [@orome](https://discourse.julialang.org/u/orome)
#### Post date: [July 13, 2021, 2:50pm UTC](https://discourse.julialang.org/t/what-packages-exist-for-creating-clis/64577/1 "2021-07-13T14:50:31Z")

</div>

I’m looking for a package to implement a CLI in Julia but all I can find is [`ArgParse`](https://argparsejl.readthedocs.io/en/latest/argparse.html), which takes a pretty complicated and old fished approach (based, I assume on the antiquated [Python’s `argparse`](https://docs.python.org/3/library/argparse.html)).

Is there something more usable and modern, like [Python’s `click`](https://click.palletsprojects.com/en/8.0.x/)?

_(I know how this sounds; but painful experience with `argparse` and the contrasting experience of using `click` have done that to me.)_

---

<div class="post-metadata">

### Author: ![fredrikekre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fredrikekre/32/1688_2.png) [@fredrikekre](https://discourse.julialang.org/u/fredrikekre)
#### Post date: [July 13, 2021, 5:01pm UTC](https://discourse.julialang.org/t/what-packages-exist-for-creating-clis/64577/2 "2021-07-13T17:01:42Z")

</div>

There is [Comonicon.jl](https://github.com/comonicon/Comonicon.jl) (I have no experience with it though).

---

<div class="post-metadata">

### Author: ![orome](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/orome/32/26965_2.png) [@orome](https://discourse.julialang.org/u/orome)
#### Post date: [July 13, 2021, 5:33pm UTC](https://discourse.julialang.org/t/what-packages-exist-for-creating-clis/64577/3 "2021-07-13T17:33:59Z")

</div>

That looks promising. It would be great if someone could point me to some meaningful examples. I can’t even find documentation for it, but it sounds great.

---

<div class="post-metadata">

### Author: ![fredrikekre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fredrikekre/32/1688_2.png) [@fredrikekre](https://discourse.julialang.org/u/fredrikekre)
#### Post date: [July 13, 2021, 5:37pm UTC](https://discourse.julialang.org/t/what-packages-exist-for-creating-clis/64577/4 "2021-07-13T17:37:48Z")

</div>

Documentation: [https://comonicon.org/stable/](https://comonicon.org/stable/) (I used the “website” entry on the GitHub repo, but would be good to link to it from the README as usual too)  
Example: [https://github.com/Roger-luo/IonCLI.jl](https://github.com/Roger-luo/IonCLI.jl)

---

<div class="post-metadata">

### Author: ![orome](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/orome/32/26965_2.png) [@orome](https://discourse.julialang.org/u/orome)
#### Post date: [July 13, 2021, 5:40pm UTC](https://discourse.julialang.org/t/what-packages-exist-for-creating-clis/64577/5 "2021-07-13T17:40:15Z")

</div>

I followed both of those links but found nothing that explained `@cast`.

---

<div class="post-metadata">

### Author: ![bw509](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bw509/32/25147_2.png) [@bw509](https://discourse.julialang.org/u/bw509)
#### Post date: [July 13, 2021, 6:56pm UTC](https://discourse.julialang.org/t/what-packages-exist-for-creating-clis/64577/6 "2021-07-13T18:56:07Z")

</div>

Greetings to y’all!

As a complete noob to Julia, I was curious myself about creating a CLI for a calendering-app I’m working on. Much to my surprise, I learned that Julia has a few built-in functions along those requirements, documented @ [The Julia REPL · The Julia Language](https://docs.julialang.org/en/v1/stdlib/REPL/#TerminalMenus) … Not exactly a fancy point-and-click feature, but a time-saver nonetheless IMHO.

---

<div class="post-metadata">

### Author: ![orome](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/orome/32/26965_2.png) [@orome](https://discourse.julialang.org/u/orome)
#### Post date: [July 13, 2021, 8:11pm UTC](https://discourse.julialang.org/t/what-packages-exist-for-creating-clis/64577/7 "2021-07-13T20:11:59Z")

</div>

That’s pretty neat. Not what I’m looking for but cool nonetheless.
