+ def __iter__(self):
+ return self._iterate_file(self._filename)
+
+class DirectoryParser(FileParser):
+
+ def __init__(self, dirname, recursive=False):
+ self.__recursive = recursive
+ super(DirectoryParser, self).__init__(dirname)
+
+ def _dirwalker_plain(self):
+ for i in os.listdir(self._filename):
+ f = os.path.join(self._filename, i)
+ if os.path.isfile(f):
+ yield f
+
+ def _dirwalker_recursive(self):
+ for r, d, f in os.walk(self._filename):
+ for i in f:
+ yield os.path.join(r, i)
+
+ def __iter__(self):
+ if self.__recursive:
+ dirwalker = self._dirwalker_recursive
+ else:
+ dirwalker = self._dirwalker_plain
+
+ for fname in dirwalker():
+ for item in self._iterate_file(fname):
+ yield item
+
+def OptionsParser(args=None, help=u'', **opts):
+
+ from optparse import OptionParser
+ import dbuscron
+ parser = OptionParser(usage=help, version="%prog " + dbuscron.__version__)
+ for opt, desc in opts.iteritems():
+ names = desc.pop('names')
+ desc['dest'] = opt
+ parser.add_option(*names, **desc)
+
+ return parser.parse_args(args)[0]
+