mirror of
https://github.com/flatpak/flatpak.git
synced 2026-09-12 22:22:09 -04:00
110 lines
3.7 KiB
Plaintext
110 lines
3.7 KiB
Plaintext
# 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
|