def _create_new_broker(path=None): """ Create a broker and populate it by evaluating the path with all registered datasources. Args: path (str): path to the archive or directory to analyze. ``None`` will analyze the current system. """ datasources = dr.get_components_of_type(datasource) def make_broker(ctx): broker = dr.Broker() broker[ctx.__class__] = ctx if isinstance(ctx, SerializedArchiveContext): h = Hydration(ctx.root) broker = h.hydrate(broker=broker) dr.run(datasources, broker=broker) del broker[ctx.__class__] return broker if path: if os.path.isdir(path): ctx = create_context(path) yield (path, make_broker(ctx)) else: with extract(path) as e: ctx = create_context(e.tmp_dir) yield (e.tmp_dir, make_broker(ctx)) else: yield (os.curdir, make_broker(HostContext()))
def from_dir(d): broker = dr.Broker() ctx = create_context(d, None) broker[ctx.__class__] = ctx return broker