X-Git-Url: http://nitlanguage.org diff --git a/src/toolcontext.nit b/src/toolcontext.nit index 1bdcea5..33322d2 100644 --- a/src/toolcontext.nit +++ b/src/toolcontext.nit @@ -63,12 +63,13 @@ class Message end end + # A colored version of the message including the original source line fun to_color_string: String do var esc = 27.ascii - var red = "{esc}[0;31m" - var bred = "{esc}[1;31m" - var green = "{esc}[0;32m" + #var red = "{esc}[0;31m" + #var bred = "{esc}[1;31m" + #var green = "{esc}[0;32m" var yellow = "{esc}[0;33m" var def = "{esc}[0m" @@ -101,9 +102,11 @@ class ToolContext var log_directory: String = "logs" # Messages - private var messages: Array[Message] = new Array[Message] - private var message_sorter: ComparableSorter[Message] = new ComparableSorter[Message] + private var messages = new Array[Message] + private var message_sorter = new ComparableSorter[Message] + # Output all current stacked messages. + # If some errors occurred, exits the program. fun check_errors do if messages.length > 0 then @@ -161,7 +164,8 @@ class ToolContext # First-level warnings are displayed by default (except if option `-q` is given). fun warning(l: nullable Location, tag: String, text: String) do - if opt_warn.value == 0 then return + if opt_warning.value.has("no-{tag}") then return + if not opt_warning.value.has(tag) and opt_warn.value == 0 then return messages.add(new Message(l, tag, text)) warning_count = warning_count + 1 if opt_stop_on_first_error.value then check_errors @@ -182,7 +186,8 @@ class ToolContext # default and require an additional option `-W`. fun advice(l: nullable Location, tag: String, text: String) do - if opt_warn.value <= 1 then return + if opt_warning.value.has("no-{tag}") then return + if not opt_warning.value.has(tag) and opt_warn.value <= 1 then return messages.add(new Message(l, tag, text)) warning_count = warning_count + 1 if opt_stop_on_first_error.value then check_errors @@ -224,47 +229,50 @@ class ToolContext end # Global OptionContext - var option_context: OptionContext = new OptionContext + var option_context = new OptionContext # Option --warn - var opt_warn: OptionCount = new OptionCount("Show warnings", "-W", "--warn") + var opt_warn = new OptionCount("Show more warnings", "-W", "--warn") + + # Option --warning + var opt_warning = new OptionArray("Show/hide a specific warning", "-w", "--warning") # Option --quiet - var opt_quiet: OptionBool = new OptionBool("Do not show warnings", "-q", "--quiet") + var opt_quiet = new OptionBool("Do not show warnings", "-q", "--quiet") # Option --log - var opt_log: OptionBool = new OptionBool("Generate various log files", "--log") + var opt_log = new OptionBool("Generate various log files", "--log") # Option --log-dir - var opt_log_dir: OptionString = new OptionString("Directory where to generate log files", "--log-dir") + var opt_log_dir = new OptionString("Directory where to generate log files", "--log-dir") # Option --help - var opt_help: OptionBool = new OptionBool("Show Help (This screen)", "-h", "-?", "--help") + var opt_help = new OptionBool("Show Help (This screen)", "-h", "-?", "--help") # Option --version - var opt_version: OptionBool = new OptionBool("Show version and exit", "--version") + var opt_version = new OptionBool("Show version and exit", "--version") # Option --set-dummy-tool - var opt_set_dummy_tool: OptionBool = new OptionBool("Set toolname and version to DUMMY. Useful for testing", "--set-dummy-tool") + var opt_set_dummy_tool = new OptionBool("Set toolname and version to DUMMY. Useful for testing", "--set-dummy-tool") # Option --verbose - var opt_verbose: OptionCount = new OptionCount("Verbose", "-v", "--verbose") + var opt_verbose = new OptionCount("Verbose", "-v", "--verbose") # Option --stop-on-first-error - var opt_stop_on_first_error: OptionBool = new OptionBool("Stop on first error", "--stop-on-first-error") + var opt_stop_on_first_error = new OptionBool("Stop on first error", "--stop-on-first-error") # Option --no-color - var opt_no_color: OptionBool = new OptionBool("Do not use color to display errors and warnings", "--no-color") + var opt_no_color = new OptionBool("Do not use color to display errors and warnings", "--no-color") # Option --bash-completion - var opt_bash_completion: OptionBool = new OptionBool("Generate bash_completion file for this program", "--bash-completion") + var opt_bash_completion = new OptionBool("Generate bash_completion file for this program", "--bash-completion") # Verbose level var verbose_level: Int = 0 init do - option_context.add_option(opt_warn, opt_quiet, opt_stop_on_first_error, opt_no_color, opt_log, opt_log_dir, opt_help, opt_version, opt_set_dummy_tool, opt_verbose, opt_bash_completion) + option_context.add_option(opt_warn, opt_warning, opt_quiet, opt_stop_on_first_error, opt_no_color, opt_log, opt_log_dir, opt_help, opt_version, opt_set_dummy_tool, opt_verbose, opt_bash_completion) end # Name, usage and synopsis of the tool.