8 ms·
Shef
- deleted 2y ago[deleted]
- tiagod 2y agoCool project! Would be nice to have one of those asciinema recordings to get a feel of how it works from the README :)
- eduardoagarcia 2y agooh interesting idea, I'll definitely check it out and see what I can add, thanks!
- eduardoagarcia 2y agoadded :) great suggestion!
- okibry 2y agoCan I reuse shef recipe in other shef recipe ?
- eduardoagarcia 2y agoYeah, you can call anything within it. It might also be interesting to have common components that one can pull from.
- newsyco21 2y agook
- stagefright89 2y agoi hate yaml as it is and it makes working with k8s hard. this imo makes shell scripts worse
- stagefright89 2y agoyaml sucks to work with as it is. i work with k8s day in and out. this to me seems like a bad idea taking away the programmability with a tightened structure. For beginners who can't write shell scripts well, this may seem promising. Cool concept though. just not very practical imo.
- 29athrowaway 2y agoNot that hard to write something that outputs YAML. The usefulness of YAML is having declarative files that are simple. But once you start adding templating it sucks as much as anything else.
- rounce 2y ago> Not that hard to write something that outputs YAML. The point of this is to lower the entry cost of producing interactive CLI apps. If I have to break out a more expressive language to use it I may as well just write my program in that language in the first place. > The usefulness of YAML is having declarative files that are simple. There are other config formats that provide this and don’t rely on sometimes ambiguous whitespace based structure (eg. TOML). While you can write JSON in a YAML file to avoid this, you’ve then nullified all of the supposed ‘benefits’ of YAML.
- fragmede 2y agothe real fun happens when you're doing templates inside of templates and you have to figure out how to escape quote characters correctly
- eduardoagarcia 2y agoValid! Also, is it weird I don't mind yaml? :P
- belthesar 2y agoNot at all! I think there's a pretty natural flow for folks to have a love affair with YAML over the past decade or so of comp sci. You're seeing plenty of folks with "YAML DSL fatigue" because folks have seen this pattern many many times, and I imagine are a bit gunshy of "yet another YAML thing". That said, I have regular conversations with someone who would rather do everything he could in Ansible if he could, where I've become a fan of using CDKs since the power of an existing language's primitives combined with specialized knowledge distilled and packaged in an API I can call gives me superpowers. You're comfy in YAML and that's awesome. Keep making stuff that vibes with you!
- mdaniel 2y agoYet another 'mustaches in yaml' that stepped on the same landmine ansible did transform: "{{ filter .input 'Hello' }}"
- parentheses 2y agoI feel that raw code is simpler to work with, more flexible and more ubiquitous (at least for bash).
- eduardoagarcia 2y agoAs I was developing Shef, I kept asking myself if just knocking out a bash script was easier than making a recipe in yaml. In a lot of ways, absolutely. But I kept coming back to the embedded user prompts and a few of the other features that add some nice benefits on top of bash scripting. But all in all, you raise valid points.
- Toutouxc 2y agoMETA: Why are this guy's posts insta-dead? Is this because he registered and started "spamming" immediately (responding in this discussion)?
- defrost 2y agoMight be an algo thing, might be a trigger happy "enhanced" user that doesn't like green accounts. FWiW the comments look fine to me and I've just [vouch]'d each and every one .. if some one else or two does the same they should come back.
- eduardoagarcia 2y agoI appreciate it! I saw that was happening so I stopped replying. Long time listener, first time caller
- yjftsjthsd-h 2y agoCould you provide those nice features like colors and interactive prompts as a library of shell functions that do work in bash?
- bradhe 2y agoI agree with this statement. The world is absolutely chock full of weird control flow constructs layered on top of YAML. When I opened this repo and saw it was YAML driven I just rolled my eyes. With just a little bit of effort, shell scripting really isn’t that arcane.
- renewiltord 2y agoI'm sure someone somewhere has some use for this but I would prefer the raw shell. It reminds me of https://taskfile.dev/getting-started/ https://taskfile.dev/getting-started/ which has checkpointing and so on but where I still end up using raw shell.
- zenethian 2y agoThis seems mildly interesting but I'm not installing a bunch of Golang tools just to try it.
- eduardoagarcia 2y agoI very much agree! I figured if it had enough interest, we could work toward brew and other, better installation methods.
- rounce 2y agoIt’s a Golang project, one of the big selling points of Go is the ability to easily produce static binaries which are easily distributed. It’s trivial to setup basic GitHub actions and build and publish a release containing binaries for all platforms.
- brontitall 2y agoI’ve found goreleaser very helpful in the past. I notice it now claims support for non-go languages now https://goreleaser.com/ https://goreleaser.com/
- Y_Y 2y agoGore Leaser
- eduardoagarcia 2y agoI've updated it to include binary assets on the releases :)
- mattbillenstein 2y agoYeah, just prefer writing little cli tools in Python or something once the shell script gets too complex... Sorta hate yaml drive config management and deployments sytems aka ansible, saltstack, etc; so ended up writing my own that's salt-like, but all python.
- eduardoagarcia 2y agoI really like python as well (definitely one of my weapons of choice for one-off scripts)
- khimaros 2y agoor a middle path solution like https://github.com/pyinfra-dev/pyinfra https://github.com/pyinfra-dev/pyinfra
- linsomniac 2y agoA couple years ago I did some experimenting with applying Ansible ideas on a smaller scale (like a shell script rather than operating on fleets of machines). I started off with using YAML and some alternate syntaxes, because I was coming from ansible. But then I decided I really kind of despise "programming" in YAML (conditionals and loops in particular). So I adapted Ansible ideas to Python, in particular: idempotent commands and notifications (commands triggered later, when another set of commands make a change; like restarting apache after making a bunch of config changes). https://github.com/linsomniac/uplaybook?tab=readme-ov-file https://github.com/linsomniac/uplaybook?tab=readme-ov-file
- mattbillenstein 2y agoInteresting, I built a whole rpc / file-server ala saltstack on top of something like this: https://github.com/mattbillenstein/salty https://github.com/mattbillenstein/salty Been using this on a couple startups for a couple years, but it lacks polish in terms of user-friendliness. Interesting how we came to some of the same types of things - like you have .notify() - I return a result object with a "changed" flag, etc.
- linkdd 2y ago> Shef is a powerful CLI tool for cooking up shell recipes. I only see a YAML DSL. Where is my "shell"?
- DrRobinson 2y agoSee `command:`
- akdor1154 2y agoHoly hell, burn it with fire. No offence intended to the author, it's probably coded fine. But when your shell scripts get too complex, the answer is not 'wrap them in a Turing-complete yaml+jinja DSL'.
- neuroticnews25 2y agoI think the demo gif isn't very good, because it doesn't illustrate what this tool can be actually useful for. Or do I just lack imagination?
- eduardoagarcia 2y agoI'll see if I can come up with a better one soon
- layer8 2y agoKudos for the name, if nothing else.
- falcor84 2y agoI was going to mention a naming collision with the shell tool in the Chef configuration management suite, which used to also be called `shef` (going for the same pun as here), but looking at their docs now [0], it seems they removed that name in favor of just `chef-shell`, so no issue here. [0] https://docs.chef.io/workstation/chef_shell/ https://docs.chef.io/workstation/chef_shell/
- diegof79 2y agoUff, this brings back memories of Maven 1 and Apache Jelly. Jelly was a scripting language using XML. It was an aberration, and Maven 2 removed it. This feels like Jelly, but in YAML instead of XML. I don't intend to offend the author, but I don't see the use case for writing the recipes in YAML instead of using a shell function (or Python, which is multiplatform). The YAML metadata will work if you have a sort of low-code UI or want to show the steps in a UI (which is the main reason CI/CD platforms use it). I guess the author got used to the CI/CD YAML pipeline configuration files and wanted a similar experience. However, it will quickly end up being a pseudo-programming language without the benefits of a better composition syntax.
- hackburg 2y ago[dead]