[tor-commits] [bridgedb/master] Add utility bridgedb.runner.find().
isis at torproject.org
isis at torproject.org
Sat Mar 21 02:02:56 UTC 2015
commit cd5961494295553efe64d265fae486860202fa89
Author: Isis Lovecruft <isis at torproject.org>
Date: Tue Nov 5 01:01:07 2013 +0000
Add utility bridgedb.runner.find().
* ADD utility for finding executables by name, uses Twisted's procutils,
which functions like doing ``which nameofprogram``. This is used to find
additional scripts, like BridgeDB's ``get-tor-exits`` script.
---
lib/bridgedb/runner.py | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/lib/bridgedb/runner.py b/lib/bridgedb/runner.py
index d0eeaa9..9bc5d5b 100644
--- a/lib/bridgedb/runner.py
+++ b/lib/bridgedb/runner.py
@@ -16,8 +16,37 @@
from __future__ import print_function
+import logging
import sys
+import os
+from twisted.python import procutils
+
+
+def find(filename):
+ """Find the executable ``filename``.
+
+ :param string filename: The executable to search for. Must be in the
+ effective user ID's $PATH.
+ :rtype: string
+ :returns: The location of the executable, if found. Otherwise, returns
+ None.
+ """
+ executable = None
+
+ logging.debug("Searching for installed '%s'..." % filename)
+ which = procutils.which(filename, os.X_OK)
+
+ if len(which) > 0:
+ for that in which:
+ if os.stat(that).st_uid == os.geteuid():
+ executable = that
+ break
+ if not executable:
+ return None
+
+ logging.debug("Found installed script at '%s'" % executable)
+ return executable
def generateDescriptors(count=None, rundir=None):
"""Run a script which creates fake bridge descriptors for testing purposes.
More information about the tor-commits
mailing list