fish-shell/share/completions/flatpak.fish
2024-05-29 13:54:39 -05:00

69 lines
4 KiB
Fish

# Completions for flatpak, an "Application deployment framework for desktop apps"
function __fish_flatpak_subcommands
printf "%s\n" \
build-bundle\t"Create a bundle file from a build directory" \
build-commit-from\t"Create new commit based on existing ref" \
build-export\t"Export a build dir to a repository" \
build-finish\t"Finish a build dir for export" \
build-import-bundle\t"Import a bundle file" \
build-init\t"Initialize a directory for building" \
build-sign\t"Sign an application or runtime" \
build-update-repo\t"Update the summary file in a repository" \
build\t"Run a build command inside the build dir" \
config\t"Configure flatpak" \
create-usb\t"Put applications or runtimes onto removable media" \
document-export\t"Grant an application access to a specific file" \
document-info\t"Show information about a specific file" \
document-unexport\t"Revoke access to a specific file" \
documents\t"List exported files" \
enter\t"Enter the namespace of a running application" \
history\t"Show history" \
info\t"Show info for installed app or runtime" \
install\t"Install an application or runtime from a remote" \
kill\t"Stop a running application" \
list\t"List installed apps and/or runtimes" \
make-current\t"Specify default version to run" \
mask\t"Mask out updates and automatic installation" \
override\t"Override permissions for an application" \
permission-remove\t"Remove item from permission store" \
permission-reset\t"Reset app permissions" \
permission-set\t"Set permissions" \
permission-show\t"Show app permissions" \
permissions\t"List permissions" \
ps\t"Enumerate running applications" \
remote-add\t"Add a new remote repository (by URL)" \
remote-delete\t"Delete a configured remote" \
remote-info\t"Show information about a remote app or runtime" \
remote-ls\t"List contents of a configured remote" \
remote-modify\t"Modify properties of a configured remote" \
remotes\t"List all configured remotes" \
repair\t"Repair flatpak installation" \
repo\t"Show information about a repo" \
run\t"Run an application" \
search\t"Search for remote apps/runtimes" \
uninstall\t"Uninstall an installed application or runtime" \
update\t"Update an installed application or runtime"
end
complete -c flatpak -n __fish_is_first_token -xa "(__fish_flatpak_subcommands)"
# A flatpak bug on some systems seems to cause it to assume output is a tty and always emit pretty-formatted output, with
# a variable number of spaces for alignment, trailing CR, and ANSI formatting sequences (see #10514).
#
# This wrapper function is akin to `flatpak $argv[1] $argv[2..]` but sanitizes the output to make it completion-friendly.
function __fish_flatpak
# We can't rely on the first line being the headers because modern flatpak will omit it when running in a "subshell".
# Based off our invocations, we expect the first column of actual output to never contain a capitalized letter
# (unlike the header row).
flatpak $argv | string replace -rf '^([^A-Z]+)(?: +|\t)(.*?)\s*$' '$1\t$2'
end
complete -f -c flatpak -n "__fish_seen_subcommand_from run" -a "(__fish_flatpak list --app --columns=application,name)"
complete -f -c flatpak -n "__fish_seen_subcommand_from info uninstall" -a "(__fish_flatpak list --columns=application,name)"
complete -f -c flatpak -n "__fish_seen_subcommand_from enter kill" -a "(__fish_flatpak ps --columns=instance,application)"
complete -f -c flatpak -n "__fish_seen_subcommand_from remote-info remote-ls remote-modify remote-delete" -a "(__fish_flatpak remotes --columns=name,title)"
complete -c flatpak -n '__fish_seen_subcommand_from install' -xa "(__fish_flatpak remote-ls --columns=application,name)"
# Plenty of the other stuff is too free-form to complete (e.g. remote-add).
complete -f -c flatpak -s h -l help