[tor-commits] [ooni-probe/master] Add config file parsing support to oonireport

art at torproject.org art at torproject.org
Wed Feb 4 13:27:16 UTC 2015


commit ec7a5291e31cb7d3bd0a1457fdef62085436b61b
Author: Arturo Filastò <art at fuffa.org>
Date:   Wed Jan 21 14:10:56 2015 +0100

    Add config file parsing support to oonireport
    
    Properly pass error codes onward
---
 bin/oonireport     |   19 +++++++++++++++++--
 ooni/report/cli.py |    6 +++++-
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/bin/oonireport b/bin/oonireport
index 3a06b3b..84fc80d 100755
--- a/bin/oonireport
+++ b/bin/oonireport
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 import os
 import sys
+import exceptions
 
 sys.path[:] = map(os.path.abspath, sys.path)
 sys.path.insert(0, os.path.abspath(os.getcwd()))
@@ -10,12 +11,25 @@ from twisted.internet import defer, reactor
 from ooni.utils import log
 from ooni.report import cli
 
+exitCode = 128
+
 def failed(failure):
-    log.err("Failed to run ooni-report")
-    log.exception(failure)
+    global exitCode
+
+    r = failure.trap(exceptions.SystemExit)
+    if r != exceptions.SystemExit:
+        log.err("Failed to run oonideckgen")
+        log.exception(failure)
+        exitCode = 127
+    else:
+        exitCode = failure.value.code
     reactor.stop()
 
+
 def done(result):
+    global exitCode
+    exitCode = 0
+
     reactor.stop()
 
 def start():
@@ -25,3 +39,4 @@ def start():
 
 reactor.callWhenRunning(start)
 reactor.run()
+sys.exit(exitCode)
diff --git a/ooni/report/cli.py b/ooni/report/cli.py
index 2523c4f..e52b022 100644
--- a/ooni/report/cli.py
+++ b/ooni/report/cli.py
@@ -16,6 +16,8 @@ class Options(usage.Options):
 """ % (os.path.basename(sys.argv[0]),)
 
     optParameters = [
+        ["configfile", "f", None,
+         "Specify the configuration file to use."],
         ["collector", "c", None,
          "Specify the collector to upload the result to."],
         ["bouncer", "b", None,
@@ -52,7 +54,6 @@ def tor_check():
 
 
 def run():
-    config.read_config_file()
     options = Options()
     try:
         options.parseOptions()
@@ -60,6 +61,9 @@ def run():
         print("Error: %s" % exc)
         print(options)
         sys.exit(2)
+    config.global_options = dict(options)
+    config.set_paths()
+    config.read_config_file()
     if options['command'] == "upload" and options['report_file']:
         tor_check()
         return tool.upload(options['report_file'],





More information about the tor-commits mailing list