3 releases

Uses old Rust 2015

0.1.2 Dec 21, 2017
0.1.1 Dec 20, 2017
0.1.0 Dec 20, 2017


230 lines


sate is a simple replacement for some of whatmake can do. sate focuses on task automation rather than building. By default sate looks for a file called .satefile.

A very simple example


pylint *.py

This defines a target called lint. Running sate lint calls pylint *.py.


To install sate, just run cargo install sate.

To use a target, run sate <target-name>.

To list targets, run sate --list or sate -l.


A target begins with a bracketed name on its own line, for example [lint]. Everything after a target name is a command. A command is just a subprocess executed in a shell (so you can use shell syntax such as pipes in the command). There can be any number of commands in a target. Commands are run in the order they are defined. Execution stops if any command exits with a non-zero value.

Each command can optionally begin with a directive, which is a bracketed list of calls. Example: [nofail()] mkdir test. This defines a mkdir command that never fails, i.e. a non-zero exit code is ignored.


  • Variables
  • Other tags such as [nofail]
  • Line continuations (\)
  • Comments (#)


~11K SLoC