| Hi! Consider trying redo[0]. It's an idea of D. J. Bernstein (a.k.a. djb) what could already be a good advertising. Your problem can be solved with make as it pointed by others but I see a wonderful example where redo's target files are pretty clear describing what redo can do. redo's target files are usually SHELL-scripts but they can be whatever you want if it can be executed by a kernel. `redo-ifchange file1` is a command which waits until file1 have been rebuilt or, by other words, waits until a file1's target file have been executed if it requires. There are 4 target files to show how to solve your problem --- downloading and merging two files: all.do file is DEPS="foo.json bar.json"
redo-ifchange $DEPS
jq -s '.[0] * .[1]' $DEPS
foo.json.do file is curl "http://example.com/foo.json" # redo guarantees that any errors won't update foo.json as it can happen in make world.
bar.json.do file is curl "http://example.com/bar.json"
After creating these files you could write `redo all` (or just `redo`) and it will create a graph of deps and will execute them in parallel --- foo.json and bar.json will be downloading at the same time.I'd recommend getting started with a Go version of redo --- goredo[1] by stargrave. There is also a link to documentations, FAQ and other implementations on the web-site. [0] http://cr.yp.to/redo.html [1] http://www.goredo.cypherpunks.ru |
¹ https://github.com/leahneukirchen/redo-c