kumofsのkumoctlとkumostatのコマンドライン補完 (bash編)

hosts, hosts_ks, hosts_km の定義はお使いの環境にあわせて変更してくださいませ。

### kumofs
_kumoctl() {
  local cur prev
  local commands="status attach attach-noreplace detach detach-noreplace replace full-replace backup"
  local hosts="localhost"
  for ((i=101; i<=105; i++)); do # km101 km102 ...
    hosts="$hosts km$i"
  done

  COMPREPLY=()
  cur=${COMP_WORDS[COMP_CWORD]}
  prev=${COMP_WORDS[COMP_CWORD-1]}

  #echo "cur:$cur prev:$prev" >&2
  if [ $COMP_CWORD = 1 ]; then
    COMPREPLY=( $( compgen -W "$hosts"    -- $cur ))
  elif [ $COMP_CWORD = 2 ]; then
    COMPREPLY=( $( compgen -W "$commands" -- $cur ))
  fi

  return 0
}
complete -F _kumoctl -o default kumoctl

_kumostat() {
  local cur prev
  local commands="pid uptime time version cmd_get cmd_set cmd_delete items rhs whs hscheck"
  local hosts_ks="localhost"
  for ((i=101; i<=105; i++)); do # ks101 ks102 ...
    hosts_ks="$hosts_ks ks$i"
  done
  local hosts_km
  for ((i=101; i<=102; i++)); do # km101 km102 ...
    hosts_km="$hosts_km km$i"
  done

  COMPREPLY=()
  cur=${COMP_WORDS[COMP_CWORD]}
  prev=${COMP_WORDS[COMP_CWORD-1]}

  #echo "cur:$cur prev:$prev" >&2
  if [ $COMP_CWORD = 1 ]; then
    COMPREPLY=( $( compgen -W "$hosts_ks -m" -- $cur ))
  elif [ $COMP_CWORD -ge 2 ]; then
    if [ "$prev" = "-m" ]; then
      COMPREPLY=( $( compgen -W "$hosts_km"  -- $cur ))
    else
      COMPREPLY=( $( compgen -W "$commands"  -- $cur ))
    fi
  fi

  return 0
}
complete -F _kumostat -o default kumostat