- release_tracks: [ALPHA, GA]

  help_text:
    brief: Update a Security Health Analytics custom module.
    description: Update a Security Health Analytics custom module.
    examples: |
      To update a Security Health Analytics custom module with ID `123456` for organization `123, run`:

        $ {command} 123456 \
            --organization=organizations/123 \
            --enablement-state="ENABLED" \
            --custom-config-from-file=custom_config.yaml

      To update a Security Health Analytics custom module with ID `123456` for folder `456`, run:

        $ {command} 123456 \
            --folder=folders/456 \
            --enablement-state="ENABLED" \
            --custom-config-from-file=custom_config.yaml

      To update a Security Health Analytics custom module with ID `123456` for project `789`, run:

        $ {command} 123456 \
            --project=projects/789 \
            --enablement-state="ENABLED" \
            --custom-config-from-file=custom_config.yaml

  request:
    collection: securitycenter.organizations.securityHealthAnalyticsSettings.customModules
    disable_resource_check: true
    api_version: v1
    modify_request_hooks:
    - googlecloudsdk.command_lib.scc.custom_modules.sha.request_hooks:UpdateSecurityHealthAnalyticsCustomModuleReqHook

  arguments:

    params:
    - arg_name: custom_module
      api_field: name
      is_positional: true
      required: true
      help_text: |
        ID or the full resource name of the Security Health Analytics custom module. If you specify the full resource name, you do not need to specify the --organization, --folder, or --project flags.

    - group:
        mutex: true
        params:
        - arg_name: organization
          api_field: name
          help_text: |
            Organization where the Security Health Analytics custom module resides. Formatted as `organizations/123` or just `123`.

        - arg_name: folder
          api_field: name
          help_text: |
            Folder where the Security Health Analytics custom module resides. Formatted as `folders/456` or just `456`.

        - arg_name: project
          api_field: name
          help_text: |
            ID or number of the project where the Security Health Analytics custom module resides. Formatted as `projects/789` or just `789`.


    - arg_name: enablement-state
      api_field: googleCloudSecuritycenterV1SecurityHealthAnalyticsCustomModule.enablementState
      is_positional: false
      required: false
      help_text: |
        Sets the enablement state of the Security Health Analytics custom module. From the following list of possible enablement states, specify either enabled, disabled or inherited only

    - arg_name: custom-config-from-file
      api_field: googleCloudSecuritycenterV1SecurityHealthAnalyticsCustomModule.customConfig
      type: "googlecloudsdk.calliope.arg_parsers:FileContents:"
      processor: googlecloudsdk.command_lib.scc.hooks:ProcessCustomConfigFile
      is_positional: false
      help_text: |
        Path to a YAML file that contains the configuration for the Security Health Analytics custom module.

    - arg_name: update-mask
      api_field: updateMask
      help_text: |
        Optional: If left unspecified (default), an update-mask is automatically created using the
        flags specified in the command and only those values are updated.
