import os


def get_roles(directory):
    roles = []

    _rolesdir = "%s/roles/" % directory
    for _role in os.listdir(_rolesdir):
        _roledir = "%s/%s" % (_rolesdir, _role)
        if not os.path.isdir(_roledir) or \
           not os.path.isdir("%s/meta" % _roledir) or \
           not os.path.isdir("%s/tasks" % _roledir):
            continue
        roles.append(_role)

    return sorted(roles)


def get_modules(directory):
    management_modules = []
    roles_modules = []

    for root, _dirs, files in os.walk(directory):
        if not root.startswith("%s/plugins/" % directory) and \
           not root.startswith("%s/roles/" % directory):
            continue
        for _file in files:
            if _file.endswith(".py"):
                if root == "%s/plugins/modules" % directory:
                    management_modules.append(_file[:-3])
                elif root.startswith("%s/roles/" % directory):
                    if root.endswith("/library"):
                        roles_modules.append(_file[:-3])

    return sorted(management_modules), sorted(roles_modules)


BASE_DIR = os.path.abspath(os.path.dirname(__file__) + "/..")
ROLES = get_roles(BASE_DIR)
MANAGEMENT_MODULES, ROLES_MODULES = get_modules(BASE_DIR)
ALL_MODULES = sorted(MANAGEMENT_MODULES + ROLES_MODULES)