# AUTOMATICALLY GENERATED by `shtab`

_shtab_tyro_ns_download_data_subparsers=('blender' 'sitcoms3d' 'nerfstudio' 'record3d' 'dnerf' 'phototourism' 'sdfstudio' 'nerfosr' 'mill19' 'eyefultower')

_shtab_tyro_ns_download_data_option_strings=('-h' '--help')
_shtab_tyro_ns_download_data_blender_option_strings=('-h' '--help' '--save-dir')
_shtab_tyro_ns_download_data_sitcoms3d_option_strings=('-h' '--help' '--save-dir')
_shtab_tyro_ns_download_data_nerfstudio_option_strings=('-h' '--help' '--save-dir' '--capture-name')
_shtab_tyro_ns_download_data_record3d_option_strings=('-h' '--help' '--save-dir' '--capture-name')
_shtab_tyro_ns_download_data_dnerf_option_strings=('-h' '--help' '--save-dir')
_shtab_tyro_ns_download_data_phototourism_option_strings=('-h' '--help' '--save-dir' '--capture-name')
_shtab_tyro_ns_download_data_sdfstudio_option_strings=('-h' '--help' '--save-dir' '--dataset-name')
_shtab_tyro_ns_download_data_nerfosr_option_strings=('-h' '--help' '--save-dir' '--capture-name')
_shtab_tyro_ns_download_data_mill19_option_strings=('-h' '--help' '--save-dir' '--capture-name')
_shtab_tyro_ns_download_data_eyefultower_option_strings=('-h' '--help' '--save-dir' '--capture-name' '--resolution-name')

_shtab_tyro_ns_download_data_blender___save_dir_COMPGEN=_shtab_compgen_dirs
_shtab_tyro_ns_download_data_sitcoms3d___save_dir_COMPGEN=_shtab_compgen_dirs
_shtab_tyro_ns_download_data_nerfstudio___save_dir_COMPGEN=_shtab_compgen_dirs
_shtab_tyro_ns_download_data_record3d___save_dir_COMPGEN=_shtab_compgen_dirs
_shtab_tyro_ns_download_data_dnerf___save_dir_COMPGEN=_shtab_compgen_dirs
_shtab_tyro_ns_download_data_phototourism___save_dir_COMPGEN=_shtab_compgen_dirs
_shtab_tyro_ns_download_data_sdfstudio___save_dir_COMPGEN=_shtab_compgen_dirs
_shtab_tyro_ns_download_data_nerfosr___save_dir_COMPGEN=_shtab_compgen_dirs
_shtab_tyro_ns_download_data_mill19___save_dir_COMPGEN=_shtab_compgen_dirs
_shtab_tyro_ns_download_data_eyefultower___save_dir_COMPGEN=_shtab_compgen_dirs

_shtab_tyro_ns_download_data_pos_0_choices=('blender' 'sitcoms3d' 'nerfstudio' 'record3d' 'dnerf' 'phototourism' 'sdfstudio' 'nerfosr' 'mill19' 'eyefultower')
_shtab_tyro_ns_download_data_nerfstudio___capture_name_choices=('bww_entrance' 'campanile' 'desolation' 'library' 'poster' 'redwoods2' 'storefront' 'vegetation' 'Egypt' 'person' 'kitchen' 'plane' 'dozer' 'floating-tree' 'aspen' 'stump' 'sculpture' 'Giannini-Hall' 'all' 'nerfstudio-dataset')
_shtab_tyro_ns_download_data_record3d___capture_name_choices=('bear')
_shtab_tyro_ns_download_data_phototourism___capture_name_choices=('brandenburg-gate' 'buckingham-palace' 'colosseum-exterior' 'grand-palace-brussels' 'notre-dame-facade' 'westminster-palace' 'pantheon-exterior' 'taj-mahal' 'temple-nara' 'trevi-fountain' 'all')
_shtab_tyro_ns_download_data_sdfstudio___dataset_name_choices=('sdfstudio-demo-data' 'dtu' 'replica' 'scannet' 'tanks-and-temple' 'tanks-and-temple-highres' 'heritage' 'neural-rgbd-data' 'all')
_shtab_tyro_ns_download_data_nerfosr___capture_name_choices=('europa' 'lk2' 'lwp' 'rathaus' 'schloss' 'st' 'stjacob' 'stjohann' 'trevi' 'all')
_shtab_tyro_ns_download_data_mill19___capture_name_choices=('building' 'rubble' 'all')
_shtab_tyro_ns_download_data_eyefultower___capture_name_choices=('all' 'apartment' 'kitchen' 'office1a' 'office1b' 'office2' 'office_view1' 'office_view2' 'riverview' 'seating_area' 'table' 'workshop' 'raf_emptyroom' 'raf_furnishedroom')
_shtab_tyro_ns_download_data_eyefultower___resolution_name_choices=('all' 'jpeg_1k' 'jpeg_2k' 'jpeg_4k' 'jpeg_8k' 'exr_1k' 'exr_2k')

_shtab_tyro_ns_download_data_pos_0_nargs=A...
_shtab_tyro_ns_download_data__h_nargs=0
_shtab_tyro_ns_download_data___help_nargs=0
_shtab_tyro_ns_download_data_blender__h_nargs=0
_shtab_tyro_ns_download_data_blender___help_nargs=0
_shtab_tyro_ns_download_data_sitcoms3d__h_nargs=0
_shtab_tyro_ns_download_data_sitcoms3d___help_nargs=0
_shtab_tyro_ns_download_data_nerfstudio__h_nargs=0
_shtab_tyro_ns_download_data_nerfstudio___help_nargs=0
_shtab_tyro_ns_download_data_record3d__h_nargs=0
_shtab_tyro_ns_download_data_record3d___help_nargs=0
_shtab_tyro_ns_download_data_dnerf__h_nargs=0
_shtab_tyro_ns_download_data_dnerf___help_nargs=0
_shtab_tyro_ns_download_data_phototourism__h_nargs=0
_shtab_tyro_ns_download_data_phototourism___help_nargs=0
_shtab_tyro_ns_download_data_sdfstudio__h_nargs=0
_shtab_tyro_ns_download_data_sdfstudio___help_nargs=0
_shtab_tyro_ns_download_data_nerfosr__h_nargs=0
_shtab_tyro_ns_download_data_nerfosr___help_nargs=0
_shtab_tyro_ns_download_data_mill19__h_nargs=0
_shtab_tyro_ns_download_data_mill19___help_nargs=0
_shtab_tyro_ns_download_data_eyefultower__h_nargs=0
_shtab_tyro_ns_download_data_eyefultower___help_nargs=0
_shtab_tyro_ns_download_data_eyefultower___capture_name_nargs=*
_shtab_tyro_ns_download_data_eyefultower___resolution_name_nargs=*


# $1=COMP_WORDS[1]
_shtab_compgen_files() {
  compgen -f -- $1  # files
}

# $1=COMP_WORDS[1]
_shtab_compgen_dirs() {
  compgen -d -- $1  # recurse into subdirs
}

# $1=COMP_WORDS[1]
_shtab_replace_nonword() {
  echo "${1//[^[:word:]]/_}"
}

# set default values (called for the initial parser & any subparsers)
_set_parser_defaults() {
  local subparsers_var="${prefix}_subparsers[@]"
  sub_parsers=${!subparsers_var-}

  local current_option_strings_var="${prefix}_option_strings[@]"
  current_option_strings=${!current_option_strings_var}

  completed_positional_actions=0

  _set_new_action "pos_${completed_positional_actions}" true
}

# $1=action identifier
# $2=positional action (bool)
# set all identifiers for an action's parameters
_set_new_action() {
  current_action="${prefix}_$(_shtab_replace_nonword $1)"

  local current_action_compgen_var=${current_action}_COMPGEN
  current_action_compgen="${!current_action_compgen_var-}"

  local current_action_choices_var="${current_action}_choices[@]"
  current_action_choices="${!current_action_choices_var-}"

  local current_action_nargs_var="${current_action}_nargs"
  if [ -n "${!current_action_nargs_var-}" ]; then
    current_action_nargs="${!current_action_nargs_var}"
  else
    current_action_nargs=1
  fi

  current_action_args_start_index=$(( $word_index + 1 - $pos_only ))

  current_action_is_positional=$2
}

# Notes:
# `COMPREPLY`: what will be rendered after completion is triggered
# `completing_word`: currently typed word to generate completions for
# `${!var}`: evaluates the content of `var` and expand its content as a variable
#     hello="world"
#     x="hello"
#     ${!x} -> ${hello} -> "world"
_shtab_tyro_ns_download_data() {
  local completing_word="${COMP_WORDS[COMP_CWORD]}"
  local completed_positional_actions
  local current_action
  local current_action_args_start_index
  local current_action_choices
  local current_action_compgen
  local current_action_is_positional
  local current_action_nargs
  local current_option_strings
  local sub_parsers
  COMPREPLY=()

  local prefix=_shtab_tyro_ns_download_data
  local word_index=0
  local pos_only=0 # "--" delimeter not encountered yet
  _set_parser_defaults
  word_index=1

  # determine what arguments are appropriate for the current state
  # of the arg parser
  while [ $word_index -ne $COMP_CWORD ]; do
    local this_word="${COMP_WORDS[$word_index]}"

    if [[ $pos_only = 1 || " $this_word " != " -- " ]]; then
      if [[ -n $sub_parsers && " ${sub_parsers[@]} " == *" ${this_word} "* ]]; then
        # valid subcommand: add it to the prefix & reset the current action
        prefix="${prefix}_$(_shtab_replace_nonword $this_word)"
        _set_parser_defaults
      fi

      if [[ " ${current_option_strings[@]} " == *" ${this_word} "* ]]; then
        # a new action should be acquired (due to recognised option string or
        # no more input expected from current action);
        # the next positional action can fill in here
        _set_new_action $this_word false
      fi

      if [[ "$current_action_nargs" != "*" ]] && \
         [[ "$current_action_nargs" != "+" ]] && \
         [[ "$current_action_nargs" != *"..." ]] && \
         (( $word_index + 1 - $current_action_args_start_index - $pos_only >= \
            $current_action_nargs )); then
        $current_action_is_positional && let "completed_positional_actions += 1"
        _set_new_action "pos_${completed_positional_actions}" true
      fi
    else
      pos_only=1 # "--" delimeter encountered
    fi

    let "word_index+=1"
  done

  # Generate the completions

  if [[ $pos_only = 0 && "${completing_word}" == -* ]]; then
    # optional argument started: use option strings
    COMPREPLY=( $(compgen -W "${current_option_strings[*]}" -- "${completing_word}") )
  else
    # use choices & compgen
    local IFS=$'\n' # items may contain spaces, so delimit using newline
    COMPREPLY=( $([ -n "${current_action_compgen}" ] \
                  && "${current_action_compgen}" "${completing_word}") )
    unset IFS
    COMPREPLY+=( $(compgen -W "${current_action_choices[*]}" -- "${completing_word}") )
  fi

  return 0
}

complete -o filenames -F _shtab_tyro_ns_download_data ns-download-data
