"""Dotfiles non secrets déclarés dans map.toml."""

from __future__ import annotations

from osx_backup.context import Context
from osx_backup.mapfile import load_map
from osx_backup.modules.base import Inventory, Module, ModuleResult, ProgressReporter, register
from osx_backup.modules.pathset import PathItem, backup_paths, inventory_paths, restore_paths


def dotfile_items(ctx: Context) -> list[PathItem]:
    return [PathItem(e.path, e.exclude) for e in load_map(ctx.map_path) if not e.secret]


@register
class DotfilesModule(Module):
    name = "dotfiles"
    description = "Fichiers de config déclarés dans map.toml (hors secrets)"
    order = 40

    def inventory(self, ctx: Context) -> Inventory:
        return inventory_paths(ctx, dotfile_items(ctx))

    def backup(self, ctx: Context, progress: ProgressReporter) -> ModuleResult:
        return backup_paths(ctx, self.name, dotfile_items(ctx), progress)

    def restore(self, ctx: Context, progress: ProgressReporter) -> ModuleResult:
        return restore_paths(ctx, self.name, progress)
