import os
from auto_archiver.core.module import ModuleFactory
from auto_archiver.core.consts import MODULE_TYPES
import jinja2
# Get available modules
module_factory = ModuleFactory()
available_modules = module_factory.available_modules()
modules_by_type = {}
# Categorize modules by type
for module in available_modules:
for type in module.type:
modules_by_type.setdefault(type, []).append(module)
module_sections = ""
# Add module sections
for module_type in MODULE_TYPES:
module_sections += f"
{module_type}
"
for module in modules_by_type[module_type]:
module_name = module.name
module_sections += f"""
"""
module_sections += "
"
# Add module configuration sections
all_modules_ordered_by_type = sorted(available_modules, key=lambda x: (MODULE_TYPES.index(x.type[0]), not x.requires_setup))
module_configs = ""
for module in all_modules_ordered_by_type:
if not module.configs:
continue
module_configs += f"
{module.display_name} Configuration
"
for option, value in module.configs.items():
# create a human readable label
option = option.replace('_', ' ').title()
# type - if value has 'choices', then it's a select
if 'choices' in value:
module_configs += f"""