Runscript is a tool like make (or, perhaps, just) which manages project-specific
commands. When you want to run your program, simply type run.
For an example of a useful runscript, see the runfile for this repository.
- Does not use Makefile syntax, and instead uses a custom TOML-inspired syntax with no significant whitespace
- Emulates a shell and executes commands directly, instead of invoking
sh. - Supports most of the shell features you know and love (parsing adapted from ipetkov/conch_parser)
- Can invoke an external tool (not necessarily a shell!) to run a script, if the builtin shell proves inadequate.
- Multiple 'phases' per target, so you can chose to build, run, or test a target. If those options aren't enough, you can name your phases whatever you want!
- Imports targets from multiple files, meaning you can have a personal
.runfile alongside a source-controlledrunfile - Fancy output while running scripts, which is entirely configurable!
- A number of more advanced shell features, including:
- A few shell builtin commands (e.g.
exit,nohup) - Local variables (?)
- Arithmetic and a number of parameter substitutions
- Here-documents
- A few shell builtin commands (e.g.
- Replace manual SIGHUP'ing with
setpgid - Remove most sources of panicking (fuzz testing?)
- Support Windows properly (?)
Despite having -c and -s options for executing single commands and shell scripts, respectively, Runscript
won't emulate a POSIX shell perfectly. I'll try to make it useful enough for most use cases, but if you want a
POSIX shell, just use a POSIX shell. That being said, feel free to test the limitations of those two flags! I do have
to be able to execute shell scripts to implement the source builtin.
Runscript is on the AUR as runscript-git. Install it manually, or using your favourite AUR helper.
paru -S runscript-git
git clone https://git.sr.ht/~theonlymrcat/runscript
cd runscript
cargo install --releaseLicensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0).
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.