# shellcheck shell=bash disable=2034,2016

___x_cmd_advise_complete_nu(){
    local op="$1"
    case "$op" in
        code|run)   shift; ___x_cmd_advise_complete_nu_"$op" "$@" ;;
        *)          ___x_cmd_advise_complete_nu_run "$@" ;;
    esac
}
___x_cmd_advise_complete_nu_run(){
    local op="$*"
    case "$op" in
        ___x_cmd\ writer\ --sendalias*|___x_cmd\ chat\ --sendalias*)
                [ "$#" -ge 4 ] || return $?
                op="@${4}"; shift 4
                set -- "$op" "$@"
                ;;
    esac

    ___x_cmd_advise_complete_nu_run___inner "$@"
}

___x_cmd_advise_complete_nu_run___inner(){
    local cur="${*: -1}"
    local COMP_WORDS=("$@");    local COMP_LINE="$*"
    local COMP_CWORD="$#";      COMP_CWORD=$((COMP_CWORD-1))

    local x_=;  ___x_cmd_advise___main __run_filepath_ "$1" || ___x_cmd_advise___main __run_filepath_ x-cmd "$1" || return $?
    shift;
    ___x_cmd_advise_complete___gen_wordlist \
        "$___X_CMD_ROOT_MOD/advise/lib/awk/advise/advise.compgen_wordlist.nu.awk" \
        "$x_" "$@"
}

___x_cmd_advise_complete_nu_code(){
    printf "%s\n" '# advise

if ___X_CMD_ADVISE_ACTIVATION_ON_NON_POSIX_SHELL in $env and $env.___X_CMD_ADVISE_ACTIVATION_ON_NON_POSIX_SHELL == "0" {
  return
}

let ___x_cmd_advise_run_nu = {|spans|
  let alias_check = (scope aliases | where name == $spans.0 | get -i 0 | get -i expansion)

  let spans = (if $alias_check != null  {
    let first_word = $alias_check | split row " " | get 0
    $spans | skip 1 | prepend $first_word
  } else {
    $spans
  })

  x advise complete nu run ...$spans | from json
}

mut current = (($env | default {} config).config | default {} completions)
$current.completions = ($current.completions | default {} external)
$current.completions.external = ($current.completions.external | default true enable | default $___x_cmd_advise_run_nu completer)
$env.config = $current'
}
