Better handle dependency-related messages in manage.py and settings.
Review Request #9471 - Created Jan. 8, 2018 and updated
Since nearly the beginning, we've had manage.py check for required and
optional dependencies that could not be handled by the package's
dependency list, like git, cvs, etc. That code hasn't been updated much,
and had a lot of room for improvement. It also missed some of the more
recent mandatory dependencies.
This change fixes all this up, starting with adding dependency notices
for NodeJS, node_modules (and binaries within it), and removing some
legacy dependencies that are no longer worth checking for. The error
messages themselves have all been updated, giving some hints for
installation in order to help users deal with them.
The code for managing these dependency messages have moved from
dependencies.py. This gives us a more formal (but
strictly internal) API for these types of checks, and lets us clean up
settings.pya bit. Along with the cleanup of those functions, one
check (for determining if
settings.pylives within a
directory) has been removed, as it hasn't really been relevant since the
These dependency messages have a much nicer display, prefixing any
required dependency errors with "ERROR:" and any optional dependency
warnings with "WARNING:". The actual text is wrapped to fit on the
screen, aligning after the ERROR/WARNING prefix, and adding a blank line
between each, helping to read the new content.
Tested each of the dependency issues (by forcing the display of each).
Verified the display and that URLs were correct. Also verified that if
any are shown, the final text with the manual URL was displayed.