/made

reactive file based automation tool

Primary LanguageGo

Build Status

Made is a simple reactive build tool. If a file changes, every dependency of this file will be rebuilt. This project is heavily inspired by tup.

The build system needs a simple configuration file (Madefile) in the current folder. It is composed of shell commands on every line.

Made watches all files enclosed in '<|' and '|>'. If the glob pattern inside matches, the command on this line is executed.

cp <|.hgignore|> .gitignore
cp <|.gitignore|> .hgignore
cp <|*.txt|> dir
cp <|*.txt|> build/%b.html

The first line copies .hgignore to .gitignore if .hgignore is modified. The second line does the same in reverse (probably not a good idea :-)). The third line copies every changed *.txt file to the folder "dir". The last line copies every *.txt file from the current folder to the folder "dir" and changes the extension to .html, if a *.txt file has changed.

When made is executed it will run indefinitely and execute the above commands on every matching file change event (newly added or modified).

Installation

go get github.org/ronabu/made

If You have a properly configured Go environment.

TODO's and limitations

  • Not stable yet
  • Only OS X is currently supported.
  • No concurrency
  • Uses polling to find file modifications
  • No string escaping in Madefile