# shellcheck shell=bash # Check for bash [ -z "$BASH_VERSION" ] && return #################################################################################################### __flatpak_coredumpctl() { local cur prev words cword _comp_initialize -n = -- "$@" || return local IFS=$' \n' local subcommands="debug list" # taken from coredumpctl's bash completion local -a journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} ERRNO SYSLOG_{FACILITY,IDENTIFIER,PID} COREDUMP_EXE _{P,U,G}ID _COMM _EXE _CMDLINE _AUDIT_{SESSION,LOGINUID} _SYSTEMD_{CGROUP,SESSION,UNIT,OWNER_UID} _SELINUX_CONTEXT _SOURCE_REALTIME_TIMESTAMP _{BOOT,MACHINE}_ID _HOSTNAME _TRANSPORT _KERNEL_{DEVICE,SUBSYSTEM} _UDEV_{SYSNAME,DEVNODE,DEVLINK} __CURSOR __{REALTIME,MONOTONIC}_TIMESTAMP) # subcommand completion if [[ $cword -eq 1 ]]; then readarray -t COMPREPLY < <(compgen -W "${subcommands}" -- "$cur") return fi local subcommand="${words[1]}" # coredumpctl matches completion local -a journal_field_vals if [[ ${words[cword]} == ?*= ]]; then # just skip these completions if coredumpctl is missing if ! command -v coredumpctl >/dev/null 2>&1; then return fi readarray -t journal_field_vals < <(coredumpctl -F "${cur%=*}" 2>/dev/null) readarray -t COMPREPLY < <(compgen -W "${journal_field_vals[*]}" -- "${cur#*=}") return fi # debug subcommand if [[ $subcommand == "debug" ]]; then case "$prev" in -b|--build-directory) compopt -o filenames readarray -t COMPREPLY < <(compgen -d -- "$cur") return ;; -m|--coredumpctl-matches) compopt -o nospace readarray -t COMPREPLY < <(compgen -W "${journal_fields[*]}" -S= -- "$cur") return ;; esac case "$cur" in -*) readarray -t COMPREPLY < <(compgen -W "\ -b --build-directory \ -m --coredumpctl-matches \ --extra-flatpak-args \ --gdb-arguments \ " -- "$cur") return ;; *) # slightly hacky way of reusing flatpak's own # completion helper to complete the app ids local -a RES readarray -t RES < <(flatpak complete "flatpak run $cur" "$COMP_POINT" "$cur") COMPREPLY=() local r for r in "${RES[@]}"; do [[ $r == __FLATPAK_* ]] && continue COMPREPLY+=("$r") done return ;; esac fi # list subcommand if [[ $subcommand == "list" ]]; then case "$cur" in -*) readarray -t COMPREPLY < <(compgen -W "\ --show-inaccessible \ --reverse -r \ --no-pager \ " -- "$cur") return ;; *) compopt -o nospace readarray -t COMPREPLY < <(compgen -W "${journal_fields[*]}" -S= -- "$cur") return ;; esac fi } #################################################################################################### complete -F __flatpak_coredumpctl flatpak-coredumpctl