completions/fallback: Adjust docker completions

This commit is contained in:
Koichi Murase 2024-02-11 11:17:08 +09:00
parent f4e6a26884
commit 065071b598
2 changed files with 338 additions and 321 deletions

View File

@ -1,4 +1,13 @@
#!/bin/bash
#! bash oh-my-bash.module
#------------------------------------------------------------------------------
# Note by OMB: This file is taken from the following version of Docker Compose
# v1:
#
# https://github.com/docker/compose/blob/30fcb72cf3b136598883752edfa6ea4f3b8643d4/contrib/completion/bash/docker-compose
#
# Licence: Apache-2.0 license
# Copyright: original authors of Docker Compose v1
#------------------------------------------------------------------------------
#
# bash completion for docker-compose
#
@ -19,13 +28,13 @@
__docker_compose_previous_extglob_setting=$(shopt -p extglob)
shopt -s extglob
__docker_compose_q() {
function __docker_compose_q {
docker-compose 2>/dev/null "${top_level_options[@]}" "$@"
}
# Transforms a multiline list of strings into a single line string
# with the words separated by "|".
__docker_compose_to_alternatives() {
function __docker_compose_to_alternatives {
local parts=( $1 )
local IFS='|'
echo "${parts[*]}"
@ -33,14 +42,14 @@ __docker_compose_to_alternatives() {
# Transforms a multiline list of options into an extglob pattern
# suitable for use in case statements.
__docker_compose_to_extglob() {
function __docker_compose_to_extglob {
local extglob=$( __docker_compose_to_alternatives "$1" )
echo "@($extglob)"
}
# Determines whether the option passed as the first argument exist on
# the commandline. The option may be a pattern, e.g. `--force|-f`.
__docker_compose_has_option() {
function __docker_compose_has_option {
local pattern="$1"
for (( i=2; i < $cword; ++i)); do
if [[ ${words[$i]} =~ ^($pattern)$ ]] ; then
@ -53,7 +62,7 @@ __docker_compose_has_option() {
# Returns `key` if we are currently completing the value of a map option (`key=value`)
# which matches the extglob passed in as an argument.
# This function is needed for key-specific completions.
__docker_compose_map_key_of_current_option() {
function __docker_compose_map_key_of_current_option {
local glob="$1"
local key glob_pos
@ -76,34 +85,34 @@ __docker_compose_map_key_of_current_option() {
}
# suppress trailing whitespace
__docker_compose_nospace() {
function __docker_compose_nospace {
# compopt is not available in ancient bash versions
type compopt &>/dev/null && compopt -o nospace
_omb_util_command_exists compopt && compopt -o nospace
}
# Outputs a list of all defined services, regardless of their running state.
# Arguments for `docker-compose ps` may be passed in order to filter the service list,
# e.g. `status=running`.
__docker_compose_services() {
function __docker_compose_services {
__docker_compose_q ps --services "$@"
}
# Applies completion of services based on the current value of `$cur`.
# Arguments for `docker-compose ps` may be passed in order to filter the service list,
# see `__docker_compose_services`.
__docker_compose_complete_services() {
function __docker_compose_complete_services {
COMPREPLY=( $(compgen -W "$(__docker_compose_services "$@")" -- "$cur") )
}
# The services for which at least one running container exists
__docker_compose_complete_running_services() {
function __docker_compose_complete_running_services {
local names=$(__docker_compose_services --filter status=running)
COMPREPLY=( $(compgen -W "$names" -- "$cur") )
}
_docker_compose_build() {
function _docker_compose_build {
case "$prev" in
--build-arg)
COMPREPLY=( $( compgen -e -- "$cur" ) )
@ -126,7 +135,7 @@ _docker_compose_build() {
}
_docker_compose_config() {
function _docker_compose_config {
case "$prev" in
--hash)
if [[ $cur == \\* ]] ; then
@ -142,7 +151,7 @@ _docker_compose_config() {
}
_docker_compose_create() {
function _docker_compose_create {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--build --force-recreate --help --no-build --no-recreate" -- "$cur" ) )
@ -154,7 +163,7 @@ _docker_compose_create() {
}
_docker_compose_docker_compose() {
function _docker_compose_docker_compose {
case "$prev" in
--tlscacert|--tlscert|--tlskey)
_filedir
@ -200,7 +209,7 @@ _docker_compose_docker_compose() {
}
_docker_compose_down() {
function _docker_compose_down {
case "$prev" in
--rmi)
COMPREPLY=( $( compgen -W "all local" -- "$cur" ) )
@ -219,7 +228,7 @@ _docker_compose_down() {
}
_docker_compose_events() {
function _docker_compose_events {
case "$prev" in
--json)
return
@ -237,7 +246,7 @@ _docker_compose_events() {
}
_docker_compose_exec() {
function _docker_compose_exec {
case "$prev" in
--index|--user|-u|--workdir|-w)
return
@ -255,11 +264,11 @@ _docker_compose_exec() {
}
_docker_compose_help() {
function _docker_compose_help {
COMPREPLY=( $( compgen -W "${commands[*]}" -- "$cur" ) )
}
_docker_compose_images() {
function _docker_compose_images {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --quiet -q" -- "$cur" ) )
@ -270,7 +279,7 @@ _docker_compose_images() {
esac
}
_docker_compose_kill() {
function _docker_compose_kill {
case "$prev" in
-s)
COMPREPLY=( $( compgen -W "SIGHUP SIGINT SIGKILL SIGUSR1 SIGUSR2" -- "$(echo $cur | tr '[:lower:]' '[:upper:]')" ) )
@ -289,7 +298,7 @@ _docker_compose_kill() {
}
_docker_compose_logs() {
function _docker_compose_logs {
case "$prev" in
--tail)
return
@ -307,7 +316,7 @@ _docker_compose_logs() {
}
_docker_compose_pause() {
function _docker_compose_pause {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
@ -319,7 +328,7 @@ _docker_compose_pause() {
}
_docker_compose_port() {
function _docker_compose_port {
case "$prev" in
--protocol)
COMPREPLY=( $( compgen -W "tcp udp" -- "$cur" ) )
@ -341,7 +350,7 @@ _docker_compose_port() {
}
_docker_compose_ps() {
function _docker_compose_ps {
local key=$(__docker_compose_map_key_of_current_option '--filter')
case "$key" in
source)
@ -373,7 +382,7 @@ _docker_compose_ps() {
}
_docker_compose_pull() {
function _docker_compose_pull {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --ignore-pull-failures --include-deps --no-parallel --quiet -q" -- "$cur" ) )
@ -385,7 +394,7 @@ _docker_compose_pull() {
}
_docker_compose_push() {
function _docker_compose_push {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --ignore-push-failures" -- "$cur" ) )
@ -397,7 +406,7 @@ _docker_compose_push() {
}
_docker_compose_restart() {
function _docker_compose_restart {
case "$prev" in
--timeout|-t)
return
@ -415,7 +424,7 @@ _docker_compose_restart() {
}
_docker_compose_rm() {
function _docker_compose_rm {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--force -f --help --stop -s -v" -- "$cur" ) )
@ -431,7 +440,7 @@ _docker_compose_rm() {
}
_docker_compose_run() {
function _docker_compose_run {
case "$prev" in
-e)
COMPREPLY=( $( compgen -e -- "$cur" ) )
@ -454,7 +463,7 @@ _docker_compose_run() {
}
_docker_compose_scale() {
function _docker_compose_scale {
case "$prev" in
=)
COMPREPLY=("$cur")
@ -477,7 +486,7 @@ _docker_compose_scale() {
}
_docker_compose_start() {
function _docker_compose_start {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
@ -489,7 +498,7 @@ _docker_compose_start() {
}
_docker_compose_stop() {
function _docker_compose_stop {
case "$prev" in
--timeout|-t)
return
@ -507,7 +516,7 @@ _docker_compose_stop() {
}
_docker_compose_top() {
function _docker_compose_top {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
@ -519,7 +528,7 @@ _docker_compose_top() {
}
_docker_compose_unpause() {
function _docker_compose_unpause {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
@ -531,7 +540,7 @@ _docker_compose_unpause() {
}
_docker_compose_up() {
function _docker_compose_up {
case "$prev" in
=)
COMPREPLY=("$cur")
@ -562,7 +571,7 @@ _docker_compose_up() {
}
_docker_compose_version() {
function _docker_compose_version {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--short" -- "$cur" ) )
@ -571,7 +580,7 @@ _docker_compose_version() {
}
_docker_compose() {
function _docker_compose {
local previous_extglob_setting=$(shopt -p extglob)
shopt -s extglob
@ -664,7 +673,7 @@ _docker_compose() {
done
local completions_func=_docker_compose_${command//-/_}
declare -F $completions_func >/dev/null && $completions_func
_omb_util_function_exists "$completions_func" && "$completions_func"
eval "$previous_extglob_setting"
return 0

File diff suppressed because it is too large Load Diff