diff --git a/volatility/cli/__init__.py b/volatility/cli/__init__.py index a325b7dce..865b73d00 100644 --- a/volatility/cli/__init__.py +++ b/volatility/cli/__init__.py @@ -39,7 +39,17 @@ class CommandLine(object): # Determine the selected plugin # Resolve the dependencies on that plugin dldr = depresolver.DataLayerDependencyResolver() - print("DEPS RESOLVED", dldr.resolve_dependencies(plugin)) + dependencies = dldr.resolve_dependencies(plugin) + + # TODO: write functions that determine all possible options/requirements for this plugin + # (flatten the tree, treating disjunctions as conjunctions) + + + # TODO: Write functions that walk the tree and produce instances of each of the requirements + # (to allow a registry-like tree of config values that can be populated by the user) + + # TODO: Walk down the tree attempting to fulfil each requirement (recursive) and backtrack when necessary + # Translate the parsed args to a context configuration diff --git a/volatility/framework/configuration/depresolver.py b/volatility/framework/configuration/depresolver.py index a29c0a93f..8df842278 100644 --- a/volatility/framework/configuration/depresolver.py +++ b/volatility/framework/configuration/depresolver.py @@ -63,6 +63,10 @@ class DataLayerDependencyResolver(validity.ValidityRoutines): fulfillment[requirement.name] = requirement return fulfillment + def all_possible_requirements(self, deptree): + + + class Possibility(dict): """Class to differentiate between different available options for completion of a requirement"""