[tor-commits] [chutney/master] Merge remote-tracking branch 'houqp/miss_network_error'

nickm at torproject.org nickm at torproject.org
Thu Oct 9 14:49:03 UTC 2014


commit d91cf28d17c31ba57d94fe8a9acaecff287473a0
Merge: f5f6773 489bc2b
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Oct 9 10:49:02 2014 -0400

    Merge remote-tracking branch 'houqp/miss_network_error'

 lib/chutney/TorNet.py |   22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --cc lib/chutney/TorNet.py
index f18503a,042610c..7e64035
--- a/lib/chutney/TorNet.py
+++ b/lib/chutney/TorNet.py
@@@ -859,15 -712,18 +859,20 @@@ def ConfigureNodes(nodelist)
          if n._env['bridgeauthority']:
              network._dfltEnv['hasbridgeauth'] = True
  
 +
  def usage(network):
      return "\n".join(["Usage: chutney {command} {networkfile}",
 -       "Known commands are: %s" % (
 -        " ".join(x for x in dir(network) if not x.startswith("_")))])
 +                      "Known commands are: %s" % (
 +                          " ".join(x for x in dir(network) if not x.startswith("_")))])
 +
  
+ def exit_on_error(err_msg):
+     print "Error: {0}\n".format(err_msg)
+     print usage(_THE_NETWORK)
+     sys.exit(1)
+ 
  def runConfigFile(verb, f):
 -    _GLOBALS = dict(_BASE_ENVIRON= _BASE_ENVIRON,
 +    _GLOBALS = dict(_BASE_ENVIRON=_BASE_ENVIRON,
                      Node=Node,
                      ConfigureNodes=ConfigureNodes,
                      _THE_NETWORK=_THE_NETWORK)
@@@ -880,27 -736,24 +885,30 @@@
          print "Error: I don't know how to %s." % verb
          return
  
 -    return getattr(network,verb)()
 +    return getattr(network, verb)()
 +
  
+ def parseArgs():
+     if len(sys.argv) < 3:
+         exit_on_error("Not enough arguments given.")
+     if not os.path.isfile(sys.argv[2]):
+         exit_on_error("Cannot find networkfile: {0}.".format(sys.argv[2]))
+     return {'network_cfg': sys.argv[2], 'action': sys.argv[1]}
+ 
  def main():
      global _BASE_ENVIRON
 +    global _TORRC_OPTIONS
      global _THE_NETWORK
      _BASE_ENVIRON = TorEnviron(chutney.Templating.Environ(**DEFAULTS))
 +    # _TORRC_OPTIONS gets initialised on demand as a map of
 +    # "/path/to/tor" => ["SupportedOption1", "SupportedOption2", ...]
 +    # Or it can be pre-populated as a static whitelist of options
 +    _TORRC_OPTIONS = dict()
      _THE_NETWORK = Network(_BASE_ENVIRON)
  
-     if len(sys.argv) < 3:
-         print usage(_THE_NETWORK)
-         print "Error: Not enough arguments given."
-         sys.exit(1)
- 
-     f = open(sys.argv[2])
-     result = runConfigFile(sys.argv[1], f)
+     args = parseArgs()
+     f = open(args['network_cfg'])
+     result = runConfigFile(args['action'], f)
      if result is False:
          return -1
      return 0



More information about the tor-commits mailing list