@reached_if
Only valid: inside @goal
.
Syntax:
@reached_if <condition>
Allows skipping goal execution if it's already satisfied. This allows to speedup subsequent executions. Only one per goal allowed. The goal will be considered fulfilled (and thus will not run) if condition
executed as a shell script returns exit code 0
. Any condition
evaluation is done only once.
Example Makesurefile
:
@goal file_created
@reached_if [[ -f ./file.txt ]]
echo "Creating file ..."
echo "hello world" > ./file.txt
If you run ./makesure file_created
the first time:
goal 'file_created' ...
Creating file ...
If you run ./makesure file_created
the second time:
goal 'file_created' [already satisfied].
It is a good practice to name goals that declare @reached_if
in past tense.
@reached_if
should only rely on condition that is changed by the owning goal (why?).