Hacker News new | ask | show | jobs
by okanat 660 days ago
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.

3 comments

A bit late to the party but have you heard of or tried babashka? It's kinda the nuclear option but it might fit your use case.

https://babashka.org/

You can maybe try to get just to use bun shell [1]. It's a cross platform shell with sh like syntax (still in dev and doesn't support everything [2])

[1] https://bun.sh/docs/runtime/shell#sh-file-loader [2] https://bun.sh/docs/runtime/shell#builtin-commands

  I basically need a very basic script interpreter.
The problem you're describing goes far beyond the build system. You're looking for a cross platform shell.
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.