- help_text:
    brief: Update a Cloud Build Connection of type GitHub Enterprise.
    description: |
      Update a Cloud Build Connection of type GitHub Enterprise.

    examples: |
      To update the ssl_ca, provide the connection name and the ssl_ca file:

        $ {command} my-ghe-conn --region=us-west1
          --ssl-ca-file=mycertificate.crt

      To update the installation id, provide the connection name and the installation id of the
      Cloud Build GitHub app.

        $ {command} my-ghe-conn --region=us-west1 --app-installation-id=1234

  command_type: UPDATE
  request:
    collection: cloudbuild.projects.locations.connections
    api_version: v2
    static_fields:
      "connection.githubEnterpriseConfig": {}

  arguments:
    resource:
      help_text: Connection to update.
      spec: !REF googlecloudsdk.command_lib.cloudbuild.resources_v2:connection
    params:
    - api_field: connection.githubEnterpriseConfig.appSlug
      arg_name: app-slug
      help_text: |-
        App slug (url-friendly name) of the GitHub App. When seeing the configuration
        page of the App (e.g. in https://my-ghe-server.net/settings/apps/my-app), the app-slug
        is the last component of the URL path ("my-app" in that example).
    - api_field: connection.githubEnterpriseConfig.hostUri
      arg_name: host-uri
      help_text: URI of the GitHub Enterprise server.
    - api_field: connection.githubEnterpriseConfig.serviceDirectoryConfig.service
      arg_name: service-directory-service
      help_text: Service Directory service resource to use for accessing the GitHub Enterprise
        Server. Necessary only if the server has no public access from the internet.
    - api_field: connection.githubEnterpriseConfig.sslCa
      arg_name: ssl-ca-file
      help_text: File containing the SSL_CA to be used.
      processor: googlecloudsdk.core.util.files:ReadFileContents
    - api_field: connection.githubEnterpriseConfig.appId
      arg_name: app-id
      help_text: App ID of the GitHub App in the GitHub Enterprise server.
    - api_field: connection.githubEnterpriseConfig.privateKeySecretVersion
      arg_name: private-key-secret-version
      help_text: Secret containing the private key of the GitHub App.
    - api_field: connection.githubEnterpriseConfig.webhookSecretSecretVersion
      arg_name: webhook-secret-secret-version
      help_text: |-
        Secret containing the webhook secret string for validating webhook events generated by
        the GitHub App.
    - api_field: connection.githubEnterpriseConfig.appInstallationId
      arg_name: app-installation-id
      help_text: Installation ID of the Cloud Build GitHub App.

  output:
    # Print the installation instruction and link (if any) after updating.
    format: 'csv[no-heading,separator="\\n"](installationState.stage,installationState.message,installationState.actionUri)'

  async:
    collection: cloudbuild.projects.locations.operations
