# shellcheck shell=dash

x log init cve
xrc:mod:lib     cve                         \
    repo/_index                           \
    info/_index                           \
    detail/_index                         \
    year/_index                           \
    recent/_index                         \
    la/_index                             \
    la/stream                             \
    la/fmt                                \
    fz/_index                             \
    data/_index                           \
    data/fetch                            \
    util                                  \
    external/_index

___x_cmd_cve___main(){
    # No args → behave like `x cve ls`. Help is still available via -h / --help.
    [ "$#" -gt 0 ] || set -- ls

    local op="$1"; shift
    case "$op" in
        -h|--help)          ___x_cmd help -m cve           "$@" ; return 0 ;;

        # Lookup + browsing
        info)               ___x_cmd_cve_info             "$@" ;;
        detail)             ___x_cmd_cve_detail           "$@" ;;
        year)               ___x_cmd_cve_year             "$@" ;;
        recent)             ___x_cmd_cve_recent           "$@" ;;
        ls)                 ___x_cmd_cve_la               "$@" ;;
        fz)                 ___x_cmd_cve_fz                "$@" ;;

        # External data sources (passthrough to x <source> cve ...)
        shodan|osv|nvd)     ___x_cmd_cve_external         "$op" "$@" ;;

        # Local cache management
        update)             ___x_cmd_cve_data_update      "$@" ;;
        data)               ___x_cmd_cve_data             "$@" ;;
        cache)              ___x_cmd_cve_data status      "$@" ;;

        # Raw local-clone access (legacy)
        repo)               ___x_cmd_cve_repo             "$@" ;;

        # Default fallbacks: bare-arg dispatch.
        #   `x cve YYYY`       → `x cve year --tsv YYYY`     (stream a year's CVEs)
        #   `x cve YYYY-NNNN`  → `x cve info CVE-YYYY-NNNN`  (single-CVE lookup)
        #   `x cve CVE-YYYY-NNNN` → `x cve info CVE-...`
        [0-9][0-9][0-9][0-9])         ___x_cmd_cve_year --tsv "$op" "$@" ;;
        *)                           ___x_cmd_cve_info             "$op" "$@" ;;
    esac
}