_biom_complete()
{
  local cur prev

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

  if [ $COMP_CWORD -gt 1 ]; then
    prev=${COMP_WORDS[1]}
  fi  

  if [ $COMP_CWORD -eq 1 ]; then
    COMPREPLY=( $(compgen -W "add-metadata convert show-install-info subset-table summarize-table validate-table" -- $cur) )
  elif [ $COMP_CWORD -gt 1 ]; then
    case "$prev" in
             "add-metadata")
        COMPREPLY=( $(compgen -W "--float-fields --input-fp --int-fields --observation-header --observation-metadata-fp --output-as-json --output-fp --sample-header --sample-metadata-fp --sc-pipe-separated --sc-separated" -- $cur) )
        ;;
       "convert")
        COMPREPLY=( $(compgen -W "--collapsed-observations --collapsed-samples --header-key --input-fp --observation-metadata-fp --output-fp --output-metadata-id --process-obs-metadata --sample-metadata-fp --table-type --to-hdf5 --to-json --to-tsv --tsv-metadata-formatter" -- $cur) )
        ;;
       "show-install-info")
        COMPREPLY=( $(compgen -W "" -- $cur) )
        ;;
       "subset-table")
        COMPREPLY=( $(compgen -W "--axis --ids --input-hdf5-fp --input-json-fp --output-fp" -- $cur) )
        ;;
       "summarize-table")
        COMPREPLY=( $(compgen -W "--input-fp --observations --output-fp --qualitative" -- $cur) )
        ;;
       "validate-table")
        COMPREPLY=( $(compgen -W "--detailed-report --format-version --input-fp --is-json" -- $cur) )
        ;;

      *)
        ;;
    esac
  fi

  return 0
} &&
complete -F _biom_complete -f biom

