docs: def roles_dict(path, repo_prefix="", repo_sub_dir=""):
      """
      Return a dict of role names and repo paths.
      """
      exit_if_path_not_found(path)
  
      aggregated_roles = {}
  
      roles = os.walk(path).next()[1]
  
      # First scan all directories
      for role in roles:
          for sub_role in roles_dict(path + "/" + role, repo_prefix="",
                                     repo_sub_dir=role + "/"):
              aggregated_roles[role + "/" + sub_role] = role + "/" + sub_role
  
      # Then format them
      for role in roles:
          if is_role(os.path.join(path, role)):
              if isinstance(role, basestring):
                  role_repo = "{0}{1}".format(repo_prefix, role_name(role))
  
                  aggregated_roles[role] = role_repo
  
      return aggregated_roles