boolean isEmpty(string s): checks if s is empty and returns a boolean value: true if s is empty, false otherwise.

It's important to observe that @{file} now expands to the filename instead of the basename. If we still want to get the basename, there's also a built-in function for it: string getBasename(string s), @{ getBasename( file ) } does that.

Sadly, you encountered an annoyance that went unnoticed during my test suites for releasing the 2.x series: the only variable available for expansion in the arguments context is the value itself. So unfortunatelly file - and any other variables - won't work and arara will raise an error. Hopefully, the upcoming version will solve this issue.

Also in the next release, I have a plan of a default fallback for arguments, so we won't need to write conditionals to check if the value is set. But that's another story, hopefully for the new 3.x series. :)

For now, the only way of making the echo rule work is to check the variables in the command context: