I'm really into programming languages and DSLs so whenever I get the chance to solve an actual problem with one I jump on it. In this case, I'm trying to automate the setup of my personal computers. In the past, I've done this with a combination of scripts and Makefiles. I've also attempted to create a language for this in the past that fell short (naddeoa/systemconf on github).
I'm liking the UX and functionality of this so far and thought I'd share it for some feedback, and for anyone else who might want to use it. I don't have it building for Windows atm (sorry), but you can `pip install booty-cli` or download one of the binaries (built with pyinstaller) from the Github release page. I don't have a Mac either so I wouldn't mind anyone testing out the Mac binaries and letting me know if they're ok. Especially the arm one.
Some tech details:
- The logo was made with DALE via chat gpt, which I'm pretty impressed with actually.
- The language is defined using Lark. The repo has the grammar in the grammar.py file.
- I use networkx for some dependency resolution logic, which I kind of regret. It's a fine library but its a bit overkill for what's basically a breadth-first-search.
- It's all written in Python. I might look at rewriting this in Rust at some point because the pyinstaller binaries are quite large (10mb), and I assume that would be a few hundred kb at worst in Rust, which could be important for this kind of tool since you want to do as little as possible to a fresh install before running `booty`.
- The terminal recording in the readme uses the awesome tool asciinema, which I love.
It looks like it's just an alternative python run-time that's small. Seems like the kind of thing you would use for specific resource constrained projects.
I don't think it makes sense for me here though. I wouldn't want people to have to learn about an alternative python distribution just to use the CLI, and 10mb isn't that big all things considered. Is rather have fewer apparent dependencies. I don't see anything about generating small executables with it yet from my search.
3 comments
[ 2.4 ms ] story [ 19.4 ms ] threadI'm really into programming languages and DSLs so whenever I get the chance to solve an actual problem with one I jump on it. In this case, I'm trying to automate the setup of my personal computers. In the past, I've done this with a combination of scripts and Makefiles. I've also attempted to create a language for this in the past that fell short (naddeoa/systemconf on github).
I'm liking the UX and functionality of this so far and thought I'd share it for some feedback, and for anyone else who might want to use it. I don't have it building for Windows atm (sorry), but you can `pip install booty-cli` or download one of the binaries (built with pyinstaller) from the Github release page. I don't have a Mac either so I wouldn't mind anyone testing out the Mac binaries and letting me know if they're ok. Especially the arm one.
Some tech details: - The logo was made with DALE via chat gpt, which I'm pretty impressed with actually. - The language is defined using Lark. The repo has the grammar in the grammar.py file. - I use networkx for some dependency resolution logic, which I kind of regret. It's a fine library but its a bit overkill for what's basically a breadth-first-search. - It's all written in Python. I might look at rewriting this in Rust at some point because the pyinstaller binaries are quite large (10mb), and I assume that would be a few hundred kb at worst in Rust, which could be important for this kind of tool since you want to do as little as possible to a fresh install before running `booty`. - The terminal recording in the readme uses the awesome tool asciinema, which I love.
And yeah, I named it booty because it bootstraps.
I don't think it makes sense for me here though. I wouldn't want people to have to learn about an alternative python distribution just to use the CLI, and 10mb isn't that big all things considered. Is rather have fewer apparent dependencies. I don't see anything about generating small executables with it yet from my search.