Live data from Hacker News

Fang, the CLI Starter Kit

github.com

1–10 of 34 posts

Re: Fang, the CLI Starter Kit

#2
I just ran across "gum"[1] from charmbracelet which I intend to use! I just want to replace dialog. I came across whiptail, too, but gum seems nicer.

They have a TUI framework, too, among a lot of other related things. Some of their projects are Go libraries, some are a CLI tool, such as gum.

[1] https://github.com/charmbracelet/gum

Re: Fang, the CLI Starter Kit

#3
I’ve been maintaining rust-starter[!] for quite sometime now. It is kind of the equivalent of fang but for Rust. It uses Clap which is the equivalent of Cobra; though I don’t think Clap has the same kind of fancy output?

Throughout these years, I have found that cross-compiling is the most challenging part of creating a CLI. When you are building a web back-end, you control the execution environment (usually linux). For CLIs, your users could be on Linux, macOS or Windows. You need to get three x2 binaries (so a total of 6) to have a fair coverage.

I’ve tried cross, but for Windows and macOS you need licenses. There is no straightforward way to give your users Docker images and have them running in a few commands. You can compile on GitHub action machines, but that’s a very slow feedback loop. I wonder if things are better in Go land.

!: https://github.com/rust-starter/rust-starter

Re: Fang, the CLI Starter Kit

#4

I just ran across "gum"[1] from charmbracelet which I intend to use! I just want to replace dialog. I came across whiptail, too, but gum seems nicer. They have a TUI framework, too, among a lot of other related things. Some of their projects are Go libraries, some are a CLI tool, such as gum. [1] https://github.com/charmbracelet/gum

Gum looks awesome. Gonna keep it in-mind next time I need to write a shell CLI.

Re: Fang, the CLI Starter Kit

#7
post #3

I’ve been maintaining rust-starter[!] for quite sometime now. It is kind of the equivalent of fang but for Rust. It uses Clap which is the equivalent of Cobra; though I don’t think Clap has the same kind of fancy output? Throughout these years, I have found that cross-compiling is the most challenging part of creating a CLI. When you are building a web back-end, you control the execution environment (usually linux).…

I feel your pain. That said, cross compiling from Go is pretty trivial, as long as everything is pure Go, which it most often is. That’s one if the reasons we invested in jt.

(Hello from Charm! I’m one of the authors of this library.)

Re: Fang, the CLI Starter Kit

#8
post #3

I’ve been maintaining rust-starter[!] for quite sometime now. It is kind of the equivalent of fang but for Rust. It uses Clap which is the equivalent of Cobra; though I don’t think Clap has the same kind of fancy output? Throughout these years, I have found that cross-compiling is the most challenging part of creating a CLI. When you are building a web back-end, you control the execution environment (usually linux).…

Golang itself bundles a toolchain and can cross compile to a many target OSes and architectures. I use Goreleaser [1] to create GitHub releases, Homebrew packages, Docker images, and Linux packages. Goreleaser Pro can also create MSI packages.

ETA since I just saw Christian chime in: the Goreleaser author works at Charm.sh =)

[1] https://goreleaser.com

Re: Fang, the CLI Starter Kit

#9
post #3

I’ve been maintaining rust-starter[!] for quite sometime now. It is kind of the equivalent of fang but for Rust. It uses Clap which is the equivalent of Cobra; though I don’t think Clap has the same kind of fancy output? Throughout these years, I have found that cross-compiling is the most challenging part of creating a CLI. When you are building a web back-end, you control the execution environment (usually linux).…

This is great, lots I learned by looking at your code and the dependencies you use!

I started a similar thing, although not as feature-rich as yours. My goal was to follow CLI best practices and add all the boilerplate one needs to build a Rust CLI.

https://github.com/mootoday/cli-template

Re: Fang, the CLI Starter Kit

#10
Stubborn complaint (and maybe a hot take): I dislike CLIs that try to be overly pretty. I don't receive any tangible benefit as the user from the "fancy" (their words) help output. I'd much rather simple plain text output that looks like all the other tools I already use.
Post reply on HN