Run without using System.exit(..), putting all messages in holder:
- ERROR: compiler error
- WARNING: compiler warning
- FAIL: command error (bad arguments, exception thrown)
This handles incremental behavior:
- If args include "-incremental", repeat for every input char until 'q' is entered.
-
- If args include "-incrementalTagFile {file}", repeat every time we detect that {file} modification time has changed.
- Either way, list files recompiled each time if args includes "-verbose".
- Exit when the commmand/compiler throws any Throwable.
When complete, this contains all the messages of the final run of the command and/or any FAIL messages produced in running the command, including any Throwable thrown by the command itself.
@param args the String[] command line for the compiler
@param holder the MessageHandler sink for messages.