_esg-node() 
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    flag_opts="--install --verify --test --test-globus --type -t --set-type --get-type --show-type --start --stop --shutdown --restart --status --update --upgrade --update-sub-installer --write-env --version -v --recommended --custom --use-local-files --devel --prod --verbose --clear --clear-my-certs --clear --info --verbose --test-pub --check --config-db --backup-db --restore-db --verify-thredds-credentials --uninstall --get-idp-peer --set-idp-peer --get-index-peer --set-index-peer --set-publication-target --get-default-peer --set-default-peer --get-peer-group --set-peer-group --federation-sanity-check --spotcheck --register --fetch-esgf-certs --rebuild-truststore --add-my-cert-to-truststore --generate-ssl-key-and-csr --install-keypair --set-dname --keystore-password --keystore-alias --keystore-file --prefix --workdir --no-globus --force --gridftp-config --index-config --myproxy --help --set-auto-fetch-certs --install --update --upgrade --verify --test --type -t --set-type --get-type --show-type --start --stop --shutdown --restart --status --update-sub-installer --write-env --version --recommended --custom --use-local-files --devel --prod --debug --verbose --clear --clear-my-certs --test-pub --test-globus --info --check --config-db --backup-db --restore-db --verify-thredds-credentials --uninstall --get-idp-peer --set-idp-peer --set-admin-peer --get-index-peer --set-index-peer --set-publication-target --get-default-peer --set-default-peer --get-peer-group|--get-peer-groups --set-peer-group|--set-peer-groups --federation-sanity-check --spotcheck --optimize-index --policy-check --register --set-auto-fetch-certs --fetch-esgf-certs --rebuild-truststore --add-my-cert-to-truststore --generate-ssl-key-and-csr --install-keypair --set-dname --keystore-password --keystore-alias --keystore-file --install-signed-cert --export-keys-to-globus --prefix --force --check-shards --add-replica-shard --remove-replica-shard --list-shards --init-shards --time-shards --update-publisher-resources --shell --crawl --policy-check --install-globus-keypair --generate-globus-key-and-csr --simpleCA-relink --install-globus-online --migrate-tomcat-credentials-to-esgf" 
    gridftp_config_opts="bdm end-user"
    index_config_opts="master slave"
    word_opts="start stop shutdown restart status update upgrade"
    myproxy_opts="gen-self-cert regen-simple-ca install update"
    regen_simple_ca_opts="fetch-certs gen-self-cert keep-certs"
    type_opts="DATA INDEX IDP COMPUTE"

    #COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )

    case "${prev}" in 
        start | stop | shutdown | restart | status | update)
            COMPREPLY=( $(compgen -W "${word_opts}" -- ${cur}) )
            return 0
            ;;
        -t)
            COMPREPLY=( $(compgen -W "${type_opts}" -- ${cur}) )
            return 0
            ;;
        --myproxy)
            COMPREPLY=( $(compgen -W "${myproxy_opts}" -- ${cur}) )
            return 0
            ;;
        *)
            if [[ ${cur} == -* ]] ; then
                COMPREPLY=( $(compgen -W "${flag_opts}" -- ${cur}) )
                return 0
            fi    
            ;;
    esac

    #COMPREPLY=( $(compgen -W "${word_opts}" -- ${cur}) )
    return 0
}
complete -F _esg-node esg-node
