Skip to content

Instantly share code, notes, and snippets.

@xenlo
Created November 28, 2019 13:13
Show Gist options
  • Save xenlo/2f68ce6bf03ce7eb96f3154ade1ba713 to your computer and use it in GitHub Desktop.
Save xenlo/2f68ce6bf03ce7eb96f3154ade1ba713 to your computer and use it in GitHub Desktop.
cobbler PR #2208
#!/usr/bin/env bash
_cobbler_completions()
{
local cur prev cobbler_type
declare -A opts
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
cobbler_type=${COMP_WORDS[1]}
COMPREPLY=()
TYPE="distro profile system repo image mgmtclass package file aclsetup buildiso import list replicate report reposync sync validateks version signature get-loaders hardlink"
ACTION="add edit copy list remove rename report"
opts=(
[distro]="--name --owners --kernel --initrd --kopts --kopts-post --ksmeta --arch --breed --os-version --source-repos --depth --comment --tree-build-time --mgmt-classes --boot-files --fetchable-files --template-files --redhat-management-key --redhat-management-server --clobber --in-place --help"
[profile]="--name --owners --distro --enable-gpxe --enable-menu --kickstart --kopts --ksmeta --proxy --repos --comment --virt-file-size --virt-ram --virt-type --virt-cpus --virt-path --virt-bridge --depth --dhcp-tag --server --name-servers --name-servers-search --mgmt-classes --mgmt-parameters --boot-files --fetchable-files --template-files --redhat-management-key --redhat-management-server --template-remote-kickstarts --clobber --in-place --parent --help"
[system]="--name --owners --profile --image --status --mac --ip-address --hostname --kopts --kopts-post --ksmeta --kickstart --enable-gpxe --proxy --netboot-enabled --comment --depth --server --virt-path --virt-type --virt-cpus --virt-file-size --virt-disk-driver --virt-ram --virt-auto-boot --virt-pxe-boot --virt-bridge --power-address --power-user --power-pass --power-id --gateway --dns-name --name-servers --name-servers-search --ipv6-default-device --ipv6-autoconfiguration --mgmt-classes --mgmt-parameters --boot-files --fetchable-files --template-files --redhat-management-key --redhat-management-server --template-remote-kickstarts --repos-enabled --ldap-enabled --ldap-type --monit-enabled --cnames --interface --delete-interface --rename-interface --interface-type --interface-master --bonding-opts --static-routes --static --netmask --clobber --in-place --help"
[repo]="--mirror --name --owners --comment --parent --rpmlist --creatrepo-flags --yumopts --proxy --keep-updated --environment --priority --arch --mirror-locally --breed --apt-components --apt-dists --depth --clobber --in-place --help"
[image]="--name --arch --breed --comment --ctime --mtime --file --depth --image-type --network-count --os-version --owners --parent --kickstart --virt-auto-boot --virt-bridge --virt-cpus --virt-file-size --virt-disk-driver --virt-path --virt-ram --virt-type --clobber --in-place --help"
[mgmtclass]="--name --owners --comment --class-name --is-definition --params --packages --files --depth --clobber --in-place --help"
[package]="--uid --depth --comment --ctime --mtime --owners --name --action --installer --version --clobber --in-place --help"
[file]="--uid --depth --comment --ctime --mtime --owners --name --is-dir --action --group --mode --owner --path --template --clobber --in-place --help"
[import]="--arch --breed --os-version --path --name --available-as --kickstart --rsync-flags --help"
[buildiso]="--iso --profiles --systems --tempdir --distro --standalone --source --exclude-dns --mkisofs-opts --help"
)
while :; do
case "${prev}" in
cobbler)
COMPREPLY=($(compgen -W "${TYPE}" -- ${cur}))
return 0
;;
distro|repo|image|mgmtclass|package|file)
COMPREPLY=($(compgen -W "${ACTION}" -- ${cur}))
return 0
;;
profile|system)
COMPREPLY=($(compgen -W "${ACTION} getks" -- ${cur}))
return 0
;;
import|buildiso)
COMPREPLY=($(compgen -W "${opts[${cobbler_type}]}" -- ${cur}))
return 0
;;
add|edit)
COMPREPLY=($(compgen -W "${opts[${cobbler_type}]}" -- ${cur}))
return 0
;;
list)
return 0
;;
copy|rename)
COMPREPLY=($(compgen -W "${opts[${cobbler_type}]} --newname" -- ${cur}))
return 0
;;
getks|remove|report)
COMPREPLY=($(compgen -W "--name" -- ${cur}))
return 0
;;
--name)
if [ -d "/var/lib/cobbler/config/${cobbler_type}s.d" ]; then
conf="$(ls /var/lib/cobbler/config/${cobbler_type}s.d)"
: "${conf//.json/}"
COMPREPLY=( $(compgen -W "$(echo $_)" -- ${cur}) )
fi
return 0
;;
--profile)
conf="$(ls /var/lib/cobbler/config/profiles.d)"
: "${conf//.json/}"
COMPREPLY=( $(compgen -W "$(echo $_)" -- ${cur}) )
return 0
;;
*)
if [[ ${COMP_CWORD} > 2 ]]; then
prev="${COMP_WORDS[2]}"
else
return 0
fi
;;
esac
done
}
complete -F _cobbler_completions cobbler
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment