# AUTOMATICALLY GENERATED by https://github.com/tqdm/shtab

_shtab_kas_subparsers=(build checkout clean cleansstate cleanall purge diff dump for-all-repos lock menu shell)

_shtab_kas_option_strings=(-h --help --version -l --log-level --no-color)
_shtab_kas_build_option_strings=(-h --help --skip --force-checkout --update -k --keep-config-unchanged --target -c --cmd --task --provenance)
_shtab_kas_checkout_option_strings=(-h --help --skip --force-checkout --update)
_shtab_kas_clean_option_strings=(-h --help --dry-run --isar-privileged --isar --isar-rootless)
_shtab_kas_cleansstate_option_strings=(-h --help --dry-run --isar-privileged --isar --isar-rootless)
_shtab_kas_cleanall_option_strings=(-h --help --dry-run --isar-privileged --isar --isar-rootless)
_shtab_kas_purge_option_strings=(-h --help --dry-run --isar-privileged --isar --isar-rootless --preserve-repo-refs)
_shtab_kas_diff_option_strings=(-h --help --skip --force-checkout --update --format --oneline --commit-only --content-only)
_shtab_kas_dump_option_strings=(-h --help --skip --force-checkout --update --indent --sort --format --resolve-refs --resolve-local --resolve-env --lock)
_shtab_kas_for_all_repos_option_strings=(-h --help --skip --force-checkout --update -E --preserve-env -k --keep-config-unchanged)
_shtab_kas_lock_option_strings=(-h --help --skip --force-checkout --update --indent --sort)
_shtab_kas_menu_option_strings=(-h --help)
_shtab_kas_shell_option_strings=(-h --help --skip --force-checkout --update -E --preserve-env -k --keep-config-unchanged -c --command)



_shtab_kas_pos_0_choices=(build checkout clean cleansstate cleanall purge diff dump for-all-repos lock menu shell)
_shtab_kas__l_choices=(debug info warning error critical)
_shtab_kas___log_level_choices=(debug info warning error critical)
_shtab_kas_build___skip_choices=(setup_dir setup_home make_non_interactive init_setup_repos repo_setup_loop finish_setup_repos repos_checkout repos_apply_patches setup_environ write_bbconfig)
_shtab_kas_build___provenance_choices=(true mode=min mode=max)
_shtab_kas_checkout___skip_choices=(setup_dir setup_home make_non_interactive init_setup_repos repo_setup_loop finish_setup_repos repos_checkout repos_apply_patches setup_environ write_bbconfig)
_shtab_kas_diff___skip_choices=(setup_dir setup_home make_non_interactive init_setup_repos repo_setup_loop finish_setup_repos repos_checkout repos_apply_patches setup_environ write_bbconfig)
_shtab_kas_diff___format_choices=(json text)
_shtab_kas_dump___skip_choices=(setup_dir setup_home make_non_interactive init_setup_repos repo_setup_loop finish_setup_repos repos_checkout repos_apply_patches setup_environ write_bbconfig)
_shtab_kas_dump___format_choices=(yaml json)
_shtab_kas_for_all_repos___skip_choices=(setup_dir setup_home make_non_interactive init_setup_repos repo_setup_loop finish_setup_repos repos_checkout repos_apply_patches setup_environ write_bbconfig)
_shtab_kas_lock___skip_choices=(setup_dir setup_home make_non_interactive init_setup_repos repo_setup_loop finish_setup_repos repos_checkout repos_apply_patches setup_environ write_bbconfig)
_shtab_kas_shell___skip_choices=(setup_dir setup_home make_non_interactive init_setup_repos repo_setup_loop finish_setup_repos repos_checkout repos_apply_patches setup_environ write_bbconfig)

_shtab_kas_pos_0_nargs=A...
_shtab_kas__h_nargs=0
_shtab_kas___help_nargs=0
_shtab_kas___version_nargs=0
_shtab_kas___no_color_nargs=0
_shtab_kas_build_pos_1_nargs='*'
_shtab_kas_build__h_nargs=0
_shtab_kas_build___help_nargs=0
_shtab_kas_build___force_checkout_nargs=0
_shtab_kas_build___update_nargs=0
_shtab_kas_build__k_nargs=0
_shtab_kas_build___keep_config_unchanged_nargs=0
_shtab_kas_checkout__h_nargs=0
_shtab_kas_checkout___help_nargs=0
_shtab_kas_checkout___force_checkout_nargs=0
_shtab_kas_checkout___update_nargs=0
_shtab_kas_clean__h_nargs=0
_shtab_kas_clean___help_nargs=0
_shtab_kas_clean___dry_run_nargs=0
_shtab_kas_clean___isar_privileged_nargs=0
_shtab_kas_clean___isar_nargs=0
_shtab_kas_clean___isar_rootless_nargs=0
_shtab_kas_cleansstate__h_nargs=0
_shtab_kas_cleansstate___help_nargs=0
_shtab_kas_cleansstate___dry_run_nargs=0
_shtab_kas_cleansstate___isar_privileged_nargs=0
_shtab_kas_cleansstate___isar_nargs=0
_shtab_kas_cleansstate___isar_rootless_nargs=0
_shtab_kas_cleanall__h_nargs=0
_shtab_kas_cleanall___help_nargs=0
_shtab_kas_cleanall___dry_run_nargs=0
_shtab_kas_cleanall___isar_privileged_nargs=0
_shtab_kas_cleanall___isar_nargs=0
_shtab_kas_cleanall___isar_rootless_nargs=0
_shtab_kas_purge__h_nargs=0
_shtab_kas_purge___help_nargs=0
_shtab_kas_purge___dry_run_nargs=0
_shtab_kas_purge___isar_privileged_nargs=0
_shtab_kas_purge___isar_nargs=0
_shtab_kas_purge___isar_rootless_nargs=0
_shtab_kas_purge___preserve_repo_refs_nargs=0
_shtab_kas_diff__h_nargs=0
_shtab_kas_diff___help_nargs=0
_shtab_kas_diff___force_checkout_nargs=0
_shtab_kas_diff___update_nargs=0
_shtab_kas_diff___oneline_nargs=0
_shtab_kas_diff___commit_only_nargs=0
_shtab_kas_diff___content_only_nargs=0
_shtab_kas_dump__h_nargs=0
_shtab_kas_dump___help_nargs=0
_shtab_kas_dump___force_checkout_nargs=0
_shtab_kas_dump___update_nargs=0
_shtab_kas_dump___sort_nargs=0
_shtab_kas_dump___resolve_refs_nargs=0
_shtab_kas_dump___resolve_local_nargs=0
_shtab_kas_dump___resolve_env_nargs=0
_shtab_kas_dump___lock_nargs=0
_shtab_kas_dump__i_nargs=0
_shtab_kas_dump___inplace_nargs=0
_shtab_kas_for_all_repos__h_nargs=0
_shtab_kas_for_all_repos___help_nargs=0
_shtab_kas_for_all_repos___force_checkout_nargs=0
_shtab_kas_for_all_repos___update_nargs=0
_shtab_kas_for_all_repos__E_nargs=0
_shtab_kas_for_all_repos___preserve_env_nargs=0
_shtab_kas_for_all_repos__k_nargs=0
_shtab_kas_for_all_repos___keep_config_unchanged_nargs=0
_shtab_kas_lock__h_nargs=0
_shtab_kas_lock___help_nargs=0
_shtab_kas_lock___force_checkout_nargs=0
_shtab_kas_lock___update_nargs=0
_shtab_kas_lock___sort_nargs=0
_shtab_kas_menu__h_nargs=0
_shtab_kas_menu___help_nargs=0
_shtab_kas_shell__h_nargs=0
_shtab_kas_shell___help_nargs=0
_shtab_kas_shell___force_checkout_nargs=0
_shtab_kas_shell___update_nargs=0
_shtab_kas_shell__E_nargs=0
_shtab_kas_shell___preserve_env_nargs=0
_shtab_kas_shell__k_nargs=0
_shtab_kas_shell___keep_config_unchanged_nargs=0


# $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_kas() {
  local completing_word="${COMP_WORDS[COMP_CWORD]}"
  local previous_word="${COMP_WORDS[COMP_CWORD-1]}"
  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_kas
  local word_index=0
  local pos_only=0 # "--" delimiter 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" != "?" ]] && \
         [[ "$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 # "--" delimiter encountered
    fi

    let "word_index+=1"
  done

  # Generate the completions

  if [[ $pos_only = 0 && "${completing_word}" == -* ]]; then
    # optional argument started: use option strings
    mapfile -t COMPREPLY < <(compgen -W "${current_option_strings[*]}" -- "${completing_word}")
  elif [[ "${previous_word}" == ">" || "${previous_word}" == ">>" ||
          "${previous_word}" =~ ^[12]">" || "${previous_word}" =~ ^[12]">>" ]]; then
    # handle redirection operators
    mapfile -t COMPREPLY < <(compgen -f -- "${completing_word}")
  else
    # use choices & compgen
    [ -n "${current_action_compgen}" ] &&
      mapfile -t COMPREPLY < <("${current_action_compgen}" "${completing_word}")
    mapfile -t -O "${#COMPREPLY[@]}" COMPREPLY < <(
      compgen -W "${current_action_choices[*]}" -- "${completing_word}")
  fi

  return 0
}

complete -o filenames -F _shtab_kas kas
