Fabric's behaviour for booleans is non-obvious
November 2, 2015
def get_latest(no_download=False):
return bool(no_download)
$ fab get_latest
False
$ fab get_latest:no_download
True
$ fab get_latest:no_download=False
True
Everything passed in to fabric is a string, so be aware that bool("0") == True
and bool("False") == True
.
Bools are a special case, make sure they default to false and you’ll get nice behavior. There seems to be no way to make bool args default to True, and then be overridden by False in code.