[tor-commits] [nyx/master] Added more options to interpreter panel help

atagar at torproject.org atagar at torproject.org
Sun Jul 31 23:32:40 UTC 2016


commit 6853f99a6afc6189b63a3813d488a6d160c4c175
Author: Sambuddha Basu <sambuddhabasu1 at gmail.com>
Date:   Sun Jun 19 21:56:46 2016 -0700

    Added more options to interpreter panel help
---
 nyx/tor_interpreter.py | 34 +++++++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

diff --git a/nyx/tor_interpreter.py b/nyx/tor_interpreter.py
index 62986ec..7b59a36 100644
--- a/nyx/tor_interpreter.py
+++ b/nyx/tor_interpreter.py
@@ -5,6 +5,8 @@ from nyx import tor_controller
 # initial location /write will save to when no path is specified
 DEFAULT_WRITE_PATH = "/tmp/torInterpretor_output"
 
+MULTILINE_UNIMPLEMENTED_NOTICE = "Multi-line control options like this are not yet implemented."
+
 GENERAL_HELP = """Interpretor commands include:
   /help   - provides information for interpretor and tor commands/config options
   /info   - general information for a relay
@@ -222,6 +224,36 @@ class ControlInterpreter:
 
         for line in description.split("\n"):
           output_entry.append([("  " + line, BLUE, )])
+
+        if arg == "SIGNAL":
+          # lists descriptions for all of the signals
+          for signal, description in SIGNAL_DESCRIPTIONS:
+            output_entry.append([("%-15s" % signal, BLUE, BOLD), (" - %s" % description, BLUE, )])
+        elif arg == "SETEVENTS":
+          # lists all of the event types
+          event_options = tor_controller().get_info("events/names")
+          if event_options:
+            event_entries = event_options.split()
+
+            # displays four columns of 20 characters
+            for i in range(0, len(event_entries), 4):
+              line_entries = event_entries[i : i+4]
+
+              line_content = ""
+              for entry in line_entries:
+                line_content += "%-20s" % entry
+
+              output_entry.append([(line_content, BLUE, )])
+        elif arg == "USEFEATURE":
+          # lists the feature options
+          feature_options = tor_controller().get_info("features/names")
+          if feature_options:
+            output_entry.append([(feature_options, BLUE, )])
+        elif arg in ("LOADCONF", "POSTDESCRIPTOR"):
+          # gives a warning that this option isn't yet implemented
+          output_entry.append([(MULTILINE_UNIMPLEMENTED_NOTICE, RED, BOLD)])
+      else:
+        output_entry.append([("No help information available for '%s'..." % arg, RED, BOLD)])
     else:
       # provides the GENERAL_HELP with everything bolded except descriptions
       for line in GENERAL_HELP.split("\n"):
@@ -251,7 +283,7 @@ class ControlInterpreter:
     else: cmd, arg = user_input, ""
 
     if cmd.startswith("/"):
-      input_entry.append((cmd, MAGENTA, BOLD))
+      input_entry.append((user_input, MAGENTA, BOLD))
       if cmd == "/quit": raise InterpreterClosed()
       elif cmd == "/help": self.do_help(arg, output_entry)
       else:





More information about the tor-commits mailing list