Coral, a Cobra fork with nearly all its features, but only 4 dependencies(github.com)
github.com
Coral, a Cobra fork with nearly all its features, but only 4 dependencies
https://github.com/muesli/coral
16 comments
I've recently used rewrite that comes with YAML recipes [1] for the common refactoring
[1] https://docs.openrewrite.org/reference/yaml-format-reference
[1] https://docs.openrewrite.org/reference/yaml-format-reference
I love the things that the charm gang is working on and the associated projects. The only things that are dragging me out from Rust to Go https://github.com/charmbracelet/
Indeed. I've built a few applications recently, and their Bubbletea and Lipgloss libraries are just wonderful to use.
4 ... of its 5 dependencies. It's just missing Viper. We should do a better job with the title here.
See: - [0] https://github.com/muesli/coral/blob/master/go.mod - [1] https://github.com/spf13/cobra/blob/master/go.mod
See: - [0] https://github.com/muesli/coral/blob/master/go.mod - [1] https://github.com/spf13/cobra/blob/master/go.mod
...but that fifth dependency makes all the difference!
$ go mod init foo && go get github.com/spf13/cobra && wc -l go.sum
758 go.sum
$ go mod init foo && go get github.com/muesli/coral && wc -l go.sum
10 go.sum
(Number of lines in go.sum != number of transitive dependencies, of course, but the scale of the difference still hints at how much extra is being pulled into your project.)Right but that last one is the problem...
https://github.com/muesli/coral/blob/master/go.sum
https://github.com/spf13/cobra/blob/master/go.sum
https://github.com/muesli/coral/blob/master/go.sum
https://github.com/spf13/cobra/blob/master/go.sum
The dependency that was dropped has many dependencies that would get added to your project.
https://github.com/spf13/viper/blob/master/go.mod
https://github.com/spf13/viper/blob/master/go.mod
Christian Muehlhaeuser (@muesli) is an outstanding 10x developer and all his projects and contributions are pretty remarkable!
I recognize that handle and avatar from following him on Mastodon. (assuming it's actually him)
He has a different personal branding [0],[1] outside of GitHub
[0]: https://fribbledom.com/
[1]: https://mastodon.social/@fribbledom
[0]: https://fribbledom.com/
[1]: https://mastodon.social/@fribbledom
This looks amazing. Viper was something I’ve always removed from my projects as they’re simple tools usually where configuration files don’t make sense, so I really appreciate you sharing this. Excited to see where it goes!
I want to like Viper but I always find it’s behavior really strange.
Interesting. I wasn’t usually using viper but on a recent project it was handy.
Which features are missing?
From a quick look it still leverages viper integration for 12 Factor Apps, and since most of Coral’s features are well listed and detailed I’m going to make a presumption that Coral does not support reading environment variables (yet? Seems easy, maybe an opinionated decision?) not from external key value stores like Consul and Etcd. Client libraries for those would certainly cause a lot of extra dependencies.
Having implemented something to do a similar one off refactor in java for thousands of files, that is a breath of fresh air. In java i had to go code -> AST -> perform manipulations -> generate code from AST (with inevitable long PR’s due to generated code not matching 1:1 with parsed original). After having gone through that i think if i had to repeat again with java I’d probably try harder to use structural find and replace.