The fatal() function always raises a RuntimeErrorand the exception is caught in the cli wrapper. Because bam/cli.py will never be run as main it makes no sense to check if it's main in the fatal() function.
Would it be better to catch all exceptions and handle them in this way (and possibly print the stacktrace to a log file somewhere) so it's nicer from the user standpoint when it fails?