Not tested or anything.
Reorder functions for dependency reasons.
Bad variable and function names.
Generalize build_wrapper to task_wrapper.
Write message one time.
Don't overwrite exisiting files.
Add Maven.
Wrap downloads with informational messages.
Chronos entry point.
System detection.
Fix permissions.
Adjustments for OS X but doesn't quite work...
Improve messages in task_wrapper.
Add shortcut for software discovery.
Fix error handling.

The function called within the if would not actually apply errexit. By calling
the function within a subshell, we are still able to survive to capture the
exit code and the function is called with errexit enabled.
Idempotency for downloads, trailing whitespace.
Rename.
Hide OS X functionality.
Allow the config file to be passed as an argument.
New approach to capturing exit code.