#!/usr/bin/env bash
# inventory.sh - Host and service discovery

load_inventory() {
    local host=$1
    local service_override=$2

    log "INFO" "Loading inventory for host: $host"

    if [[ ! -d "${REPO_PATH}/hosts/${host}" ]]; then
        log "ERROR" "Host directory not found: ${REPO_PATH}/hosts/${host}"
        return 1
    fi

    if [[ -n "$service_override" ]]; then
        SERVICES=("$service_override")
    else
        if [[ -f "${REPO_PATH}/hosts/${host}/services.txt" ]]; then
            # Read services from text file, ignoring comments and empty lines
            mapfile -t SERVICES < <(grep -v '^\s*#' "${REPO_PATH}/hosts/${host}/services.txt" | grep -v '^\s*$')
        elif [[ -f "${REPO_PATH}/hosts/${host}/services.yaml" ]]; then
            # Use python for reliable YAML parsing
            SERVICES=($(python3 -c "
import yaml, sys
try:
    with open('${REPO_PATH}/hosts/${host}/services.yaml', 'r') as f:
        data = yaml.safe_load(f)
        if data and 'services' in data:
            if isinstance(data['services'], dict):
                print(' '.join(data['services'].keys()))
            elif isinstance(data['services'], list):
                print(' '.join(data['services']))
except Exception as e:
    print(f'Error parsing YAML: {e}', file=sys.stderr)
    sys.exit(1)
"))
        else
            log "WARN" "No services found for $host"
            SERVICES=()
        fi
    fi
    log "INFO" "Services to process: ${SERVICES[*]}"
}

export -f load_inventory
