Looking back, this was usually a substantial stumbling block for adoption of new tooling. Things have changed. All one has to do is look at what JS programmers will go through to scratch build entire toolchains on the back of npm. IMO, the bar has been moved up to allow _some_ installation friction rather than none.
IMO, if the tool is a solid improvement and installation is a one-liner, use it and promote it loudly so it continues to get support.
It's public, but I realize I haven't pushed my local updates for a while now. https://github.com/Betree/dev-commander
Python is always measurably more lines than the Makefile or shell script equivalent, but just think of the effect on your productivity metrics!
The standard shutil and subprocess modules are pretty convenient to use as-is. They're a bit syntactically tedious for anything that's a very basic sequence of shell operations, but in exchange you'll never forget to quote the arguments correctly. And I've always found that these processes to tend to grow over time anyway - something that's much easier to handle in Python! There's also far more scope for additional error checking and nicer UX.
Run: Task runner that helps you easily manage and invoke small scripts and wrappers.
https://github.com/TekWizely/run
Do you find yourself using tools like make to manage non-build-related scripts?
Build tools are great, but they are not optimized for general script management.
Run aims to be better at managing small scripts and wrappers, while incorporating a familiar make-like syntax.
If my tasks are simple enough, bash or make will do but for serious projects, specially lispy ones, babashka is amazing.
“${@:-default}” || usageThe only think I found Taskfile does better is handling Go’s defer. Misé unfortunately does not have an equivalent.
Mise manages tools, env vars, tasks, bootstrapping , plays well with usage, etc.
People saying "just use makefiles" are missing out.
And then I use Just for a week and become a diehard fan. Yeah, it's similar to make, except optimized for developer ergonomics instead of feature completeness. What if... the tool actually supported and encouraged you instead of making you fight it?
Later I came to prefer mise over just. It does more common developer stuff like managing tools and env vars, and I prefer the way it handles embedded scripts. In any case, I vastly prefer either of them to make for the kinds of languages I mostly use.
Even if I did prefer make, which one? The GNU make that ships with macOS is ancient, so I'd probably have to install a newer one, and if I'm going to have to install a tool anyone, might as well make the effort to make that tool be mise (or just or just about anything else).
Even for projects where Make isn't part of the build pipeline, like Rails or C++, I have a standardized makefile I put in the project root, using includes for "secrets.mk", so I can do things like "make deploy" and it Just Works(tm).
Sometimes the old ways are best!
https://mise.jdx.dev/configuration.html
the same author has a separate but related project called fnox which focuses on secrets management and integrates with mise:
But we use 1Password for secrets and I have the need to mix and match environment profiles. So I built:
The ergonomics of running tasks are very similar to the article as you can run a task simply by typing the name of the task in your shell without saying "make" or "npm run" or whatever else that is the actual task runner. The difference is that you just have to install dela without having to change anything in the underlying project repository.
Works really well for me!
[0] https://github.com/aleyan/dela