_receptor()
{
  local cur prevdashed count DASHCMDS
  cur=${COMP_WORDS[COMP_CWORD]}
  count=$((COMP_CWORD-1))
  while [[ $count > 1 && ! ${COMP_WORDS[$count]} == --* ]]; do
    count=$((count-1))
  done
  prevdashed=${COMP_WORDS[$count]}
  DASHCMDS="--help --bash-completion --config -c --node --local-only --pyroscope-client --version --log-level --trace --tls-server --tls-client --cert-init --cert-makereq --cert-signreq --control-service --command-service --ip-router --tcp-server --tcp-client --udp-server --udp-client --unix-socket-server --unix-socket-client --tcp-listener --tcp-peer --udp-listener --udp-peer --ws-listener --ws-peer --work-signing --work-verification --work-command --command-runner --work-kubernetes --work-python"
  if [[ $cur == -* ]]; then
    COMPREPLY=($(compgen -W "$DASHCMDS" -- ${cur}))
  else    case ${prevdashed} in
      -c|--config)
        COMPREPLY=($(compgen -f -- ${cur}))
        ;;
      --node)
        COMPREPLY=($(compgen -W "id= datadir= firewallrules= maxidleconnectiontimeout= receptorkubesupportreconnect= receptorkubeclientsetqps= receptorkubeclientsetburst= receptorkubeclientsetratelimiter=" -- ${cur}))
        ;;
      --local-only)
        COMPREPLY=($(compgen -W "local=" -- ${cur}))
        ;;
      --pyroscope-client)
        COMPREPLY=($(compgen -W "applicationname= tags= serveraddress= basicauthuser= basicauthpassword= tenantid= uploadrate= profiletypes= disablegcruns= httpheaders=" -- ${cur}))
        ;;
      --version)
        COMPREPLY=($(compgen -W "" -- ${cur}))
        ;;
      --log-level)
        COMPREPLY=($(compgen -W "level=" -- ${cur}))
        ;;
      --trace)
        COMPREPLY=($(compgen -W "" -- ${cur}))
        ;;
      --tls-server)
        COMPREPLY=($(compgen -W "name= cert= key= requireclientcert= clientcas= pinnedclientcert= skipreceptornamescheck= mintls13=" -- ${cur}))
        ;;
      --tls-client)
        COMPREPLY=($(compgen -W "name= cert= key= rootcas= insecureskipverify= pinnedservercert= skipreceptornamescheck= mintls13=" -- ${cur}))
        ;;
      --cert-init)
        COMPREPLY=($(compgen -W "commonname= bits= notbefore= notafter= outcert= outkey=" -- ${cur}))
        ;;
      --cert-makereq)
        COMPREPLY=($(compgen -W "commonname= bits= dnsname= ipaddress= nodeid= outreq= inkey= outkey=" -- ${cur}))
        ;;
      --cert-signreq)
        COMPREPLY=($(compgen -W "req= cacert= cakey= notbefore= notafter= outcert= verify=" -- ${cur}))
        ;;
      --control-service)
        COMPREPLY=($(compgen -W "service= filename= permissions= tls= tcplisten= tcptls=" -- ${cur}))
        ;;
      --command-service)
        COMPREPLY=($(compgen -W "service= command= tls=" -- ${cur}))
        ;;
      --ip-router)
        COMPREPLY=($(compgen -W "networkname= interface= localnet= routes=" -- ${cur}))
        ;;
      --tcp-server)
        COMPREPLY=($(compgen -W "port= bindaddr= remotenode= remoteservice= tlsserver= tlsclient=" -- ${cur}))
        ;;
      --tcp-client)
        COMPREPLY=($(compgen -W "service= address= tlsserver= tlsclient=" -- ${cur}))
        ;;
      --udp-server)
        COMPREPLY=($(compgen -W "port= bindaddr= remotenode= remoteservice=" -- ${cur}))
        ;;
      --udp-client)
        COMPREPLY=($(compgen -W "service= address=" -- ${cur}))
        ;;
      --unix-socket-server)
        COMPREPLY=($(compgen -W "filename= permissions= remotenode= remoteservice= tls=" -- ${cur}))
        ;;
      --unix-socket-client)
        COMPREPLY=($(compgen -W "service= filename= tls=" -- ${cur}))
        ;;
      --tcp-listener)
        COMPREPLY=($(compgen -W "bindaddr= port= tls= cost= nodecost= allowedpeers=" -- ${cur}))
        ;;
      --tcp-peer)
        COMPREPLY=($(compgen -W "address= redial= tls= cost= allowedpeers=" -- ${cur}))
        ;;
      --udp-listener)
        COMPREPLY=($(compgen -W "bindaddr= port= cost= nodecost= allowedpeers=" -- ${cur}))
        ;;
      --udp-peer)
        COMPREPLY=($(compgen -W "address= redial= cost= allowedpeers=" -- ${cur}))
        ;;
      --ws-listener)
        COMPREPLY=($(compgen -W "bindaddr= port= path= tls= cost= nodecost= allowedpeers=" -- ${cur}))
        ;;
      --ws-peer)
        COMPREPLY=($(compgen -W "address= redial= extraheader= tls= cost= allowedpeers=" -- ${cur}))
        ;;
      --work-signing)
        COMPREPLY=($(compgen -W "privatekey= tokenexpiration=" -- ${cur}))
        ;;
      --work-verification)
        COMPREPLY=($(compgen -W "publickey=" -- ${cur}))
        ;;
      --work-command)
        COMPREPLY=($(compgen -W "worktype= command= params= allowruntimeparams= verifysignature=" -- ${cur}))
        ;;
      --work-kubernetes)
        COMPREPLY=($(compgen -W "worktype= namespace= image= command= params= authmethod= kubeconfig= pod= allowruntimeauth= allowruntimecommand= allowruntimeparams= allowruntimepod= deletepodonrestart= streammethod= verifysignature=" -- ${cur}))
        ;;
      --work-python)
        COMPREPLY=($(compgen -W "worktype= plugin= function= config=" -- ${cur}))
        ;;
      *)
        COMPREPLY=($(compgen -W "$DASHCMDS" -- ${cur}))
        ;;
    esac
  fi
  [[ $COMPREPLY == *= ]] && compopt -o nospace
}
complete -F _receptor receptor
