I find that https://github.com/casey/just is a great answer to a lot of problems in this thread.
I have a justfile in all my projects now and I'm very happy.
I found just and was about to use it in place of a Python script for preset targets in one of the Greenfield projects I had. I decided not to since it makes a weird decision to use sh in Windows environments, it tries to use Git for Windows bash or MSYS2 one which is very unwieldy.
I am still in search of a simple build scripting language/system that doesn't rely on any OS shell. Something that isn't as barebones as ninja, isn't as wacky and Unix specific as Make nor is as general purpose as Python. I just want a statically linked executable that I can install in any of the Linux, macOS or Windows versions as a single binary. It should handle the path differences well and should execute things directly without a shell. I basically need a very basic script interpreter.
CMake kind of is that system but it is too stringly typed and sometimes wacky too. Python kind of works too, but they have a quite a bit disregard for backwards compatibility and isolation from the surrounding OS, so I am forced to use solutions like Conda to ensure a specific version with specific dependencies and their versions are pulled and can be reproduced across different OSes without interfering with the locally installed Python.
No. Not really. Is Make a shell? It isn't. Neither is CMake. Python can be used as one but it really lacks niceties that an actual shell would provide. A cross platform shell with limited capabilities would do the job for me but it is overkill.
I am not really looking for features you find in shells like REPL, job control or very complex structure support. Having targets and being able to execute commands to build them independent from any OS shell is enough.
Same. I think a lot of it comes down to the language you’re using. If I’m doing something in Python or Rust, poetry or cargo hand all the magic I would have encoded in a Makefile for a C project years ago. Today I have a justfile with a target like:
build:
cargo build
and a bunch of other targets for testing, running it, etc.
I am still in search of a simple build scripting language/system that doesn't rely on any OS shell. Something that isn't as barebones as ninja, isn't as wacky and Unix specific as Make nor is as general purpose as Python. I just want a statically linked executable that I can install in any of the Linux, macOS or Windows versions as a single binary. It should handle the path differences well and should execute things directly without a shell. I basically need a very basic script interpreter.
CMake kind of is that system but it is too stringly typed and sometimes wacky too. Python kind of works too, but they have a quite a bit disregard for backwards compatibility and isolation from the surrounding OS, so I am forced to use solutions like Conda to ensure a specific version with specific dependencies and their versions are pulled and can be reproduced across different OSes without interfering with the locally installed Python.