From 72da07a1ec52ba47fa2be5d656d7b75eed059fdd Mon Sep 17 00:00:00 2001 From: Allen Conlon Date: Fri, 9 Feb 2024 23:27:36 -0500 Subject: [PATCH 1/8] Updated first section of the docs Signed-off-by: Allen Conlon --- docs/data-sources/groups.md | 48 ++++++--- docs/data-sources/project.md | 35 +++--- docs/data-sources/projects.md | 51 +++++---- docs/data-sources/registry.md | 40 ++++--- docs/index.md | 65 ++++------- docs/resources/config_auth.md | 101 ++++++++++++++++++ docs/resources/config_email.md | 44 +++++--- docs/resources/config_security.md | 42 ++++---- docs/resources/config_system.md | 37 +++++-- docs/resources/configuration.md | 81 -------------- .../data-sources/harbor_groups/data-source.tf | 7 ++ .../harbor_project/data-source.tf | 7 ++ .../harbor_projects/data-source.tf | 7 ++ .../harbor_registry/data-source.tf | 7 ++ examples/provider/provider.tf | 8 ++ examples/resources/harbor_config_auth/ldap.tf | 10 ++ examples/resources/harbor_config_auth/oidc.tf | 13 +++ .../resources/harbor_config_email/resource.tf | 4 + .../harbor_config_security/resource.tf | 4 + .../harbor_config_system/resource.tf | 6 ++ templates/data-sources/groups.md.tmpl | 46 ++++++++ templates/data-sources/project.md.tmpl | 33 ++++++ templates/data-sources/projects.md.tmpl | 45 ++++++++ templates/data-sources/registry.md.tmpl | 35 ++++++ templates/index.md.tmpl | 29 +++++ templates/resources/config_auth.md.tmpl | 80 ++++++++++++++ templates/resources/config_email.md.tmpl | 38 +++++++ templates/resources/config_security.md.tmpl | 35 ++++++ templates/resources/config_system.md.tmpl | 39 +++++++ 29 files changed, 759 insertions(+), 238 deletions(-) create mode 100644 docs/resources/config_auth.md delete mode 100644 docs/resources/configuration.md create mode 100644 examples/data-sources/harbor_groups/data-source.tf create mode 100644 examples/data-sources/harbor_project/data-source.tf create mode 100644 examples/data-sources/harbor_projects/data-source.tf create mode 100644 examples/data-sources/harbor_registry/data-source.tf create mode 100644 examples/provider/provider.tf create mode 100644 examples/resources/harbor_config_auth/ldap.tf create mode 100644 examples/resources/harbor_config_auth/oidc.tf create mode 100644 examples/resources/harbor_config_email/resource.tf create mode 100644 examples/resources/harbor_config_security/resource.tf create mode 100644 examples/resources/harbor_config_system/resource.tf create mode 100644 templates/data-sources/groups.md.tmpl create mode 100644 templates/data-sources/project.md.tmpl create mode 100644 templates/data-sources/projects.md.tmpl create mode 100644 templates/data-sources/registry.md.tmpl create mode 100644 templates/index.md.tmpl create mode 100644 templates/resources/config_auth.md.tmpl create mode 100644 templates/resources/config_email.md.tmpl create mode 100644 templates/resources/config_security.md.tmpl create mode 100644 templates/resources/config_system.md.tmpl diff --git a/docs/data-sources/groups.md b/docs/data-sources/groups.md index 6c8cdac7..ccbdad7c 100644 --- a/docs/data-sources/groups.md +++ b/docs/data-sources/groups.md @@ -1,7 +1,18 @@ -# Data Source: harbor_groups +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_groups Data Source - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_groups (Data Source) + + ## Example Usage -```hcl + +```terraform data "harbor_groups" "example" { group_name = "example-group" } @@ -11,24 +22,29 @@ output "group_ids" { } ``` -## Argument Reference -The following arguments are supported: +## Schema -* `group_name` - (Optional) The name of the group to filter by. -* `ldap_group_dn` - (Optional) The LDAP group DN to filter by. +### Optional -## Attributes Reference -In addition to all arguments, the following attributes are exported: +- `group_name` (String) The name of the group to filter by. +- `ldap_group_dn` (String) The LDAP group DN to filter by. -* `groups` - (Computed) A list of groups matching the previous arguments. Each `group` object provides the attributes documented below. +### Read-Only ---- +- `groups` (List of Object) (see [below for nested schema](#nestedatt--groups)) +- `id` (String) The ID of this resource. + + + +### Nested Schema for `groups` + +A list of groups matching the previous arguments. Each `group` object provides the attributes documented below. -**group** object exports the following: +Read-Only: -* `id` - The ID of the group. -* `group_name` - The name of the group. -* `group_type` - The type of the group. -* `ldap_group_dn` - The LDAP group DN of the group. +- `group_name` (String) The name of the group. +- `group_type` (Number) The type of the group. +- `id` (Number) The ID of the group. +- `ldap_group_dn` (String) The LDAP group DN of the group. -This data source retrieves a list of Harbor groups and filters them based on the `group_name` and `ldap_group_dn` arguments. It returns a list of `group` objects, each containing the `id`, `group_name`, `group_type`, and `ldap_group_dn` attributes of a group that matches the filter criteria. \ No newline at end of file +This data source retrieves a list of Harbor groups and filters them based on the `group_name` and `ldap_group_dn` arguments. It returns a list of `group` objects, each containing the `id`, `group_name`, `group_type`, and `ldap_group_dn` attributes of a group that matches the filter criteria. diff --git a/docs/data-sources/project.md b/docs/data-sources/project.md index df74f82d..57eb9ea0 100644 --- a/docs/data-sources/project.md +++ b/docs/data-sources/project.md @@ -1,7 +1,18 @@ -# Data Source: harbor_project +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_project Data Source - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_project (Data Source) + + ## Example Usage -```hcl + +```terraform data "harbor_project" "main" { name = "library" } @@ -11,18 +22,16 @@ output "project_id" { } ``` -## Argument Reference -The following arguments are supported: - -* **name** - (Required) The name of the project. - -## Attributes Reference -In addition to all argument, the following attributes are exported: +## Schema -* **project_id** - The id of the project within harbor. +### Required -* **public** - If the project has public accessibility. +- `name` (String) The name of the project. -* **vulnerability_scanning** - If the images is scanned for vulnerabilities when push to harbor. +### Read-Only -* **type** - The type of the project : Project or ProxyCache. +- `id` (String) The ID of this resource. +- `project_id` (Number) The id of the project within harbor. +- `public` (Boolean) If the project has public accessibility. +- `type` (String) The type of the project : Project or ProxyCache. +- `vulnerability_scanning` (Boolean) If the images is scanned for vulnerabilities when push to harbor. diff --git a/docs/data-sources/projects.md b/docs/data-sources/projects.md index 085a74f9..46ca2043 100644 --- a/docs/data-sources/projects.md +++ b/docs/data-sources/projects.md @@ -1,7 +1,18 @@ -# Data Source: harbor_projects +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_projects Data Source - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_projects (Data Source) + + ## Example Usage -```hcl + +```terraform data "harbor_projects" "proxycache" { type = "ProxyCache" } @@ -11,30 +22,28 @@ output "proxy_cache_projects" { } ``` -## Argument Reference -The following arguments are supported: +## Schema -* **name** - (Optional) The name of the project. +### Optional -* **type** - (Optional) The type of the project : Project or ProxyCache. +- `name` (String) The name of the project. +- `public` (Boolean) If the project has public accessibility. +- `type` (String) The type of the project : Project or ProxyCache. +- `vulnerability_scanning` (Boolean) If the images will be scanned for vulnerabilities when push to harbor. -* **public** - (Optional) If the project has public accessibility. - -* **vulnerability_scanning** - (Optional) If the images will be scanned for vulnerabilities when push to harbor. - -## Attributes Reference -In addition to all argument, the following attributes are exported: - -* **projects** - A list of projects matching previous arguments. Each **project** object provides the attributes documented below. - ---- +### Read-Only -**project** object exports the following: +- `id` (String) The ID of this resource. +- `projects` (List of Object) (see [below for nested schema](#nestedatt--projects)) -* **name** - The name of the project. + -* **type** - The type of the project : Project or ProxyCache. +### Nested Schema for `projects` -* **public** - If the project has public accessibility. +Read-Only: -* **vulnerability_scanning** - If the images will be scanned for vulnerabilities when push to harbor. +- `name` (String) +- `project_id` (Number) +- `public` (Boolean) +- `type` (String) +- `vulnerability_scanning` (Boolean) diff --git a/docs/data-sources/registry.md b/docs/data-sources/registry.md index c293995c..b254bad3 100644 --- a/docs/data-sources/registry.md +++ b/docs/data-sources/registry.md @@ -1,8 +1,18 @@ -# Data Source: harbor_registry +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_registry Data Source - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_registry (Data Source) + + ## Example Usage -```hcl +```terraform data "harbor_registry" "main" { name = "test_docker_harbor" } @@ -12,22 +22,18 @@ output "harbor_registry_id" { } ``` -## Argument Reference -The following arguments are supported: - -* **name** - (Required) The name of the register. +## Schema -## Attributes Reference -In addition to all argument, the following attributes are exported: +### Required -* **registry_id** - The id of the register within harbor. - -* **status** - The health status of the external container register - -* **endpoint_url** - The url endpoint for the external container register - -* **description** - The description of the external container register. +- `name` (String) The name of the register. -* **insecure** - If the certificate of the external container register can be verified. +### Read-Only -* **type** - The type of the provider type. \ No newline at end of file +- `description` (String) The description of the external container register. +- `id` (String) The ID of this resource. +- `insecure` (Boolean) If the certificate of the external container register can be verified. +- `registry_id` (Number) The id of the register within harbor. +- `status` (String) The health status of the external container register +- `type` (String) The type of the provider type. +- `url` (String) The url endpoint for the external container register diff --git a/docs/index.md b/docs/index.md index 7a3d1be9..81125506 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,50 +1,25 @@ -# Harbor Provider -The Harbor provider is used to configure an instance of Harbor. The provider needs to be configured with the proper credentials before it can be used. +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor Provider" +subcategory: "" +description: |- + +--- -## Resources -* [Resource: harbor_configuration](resources/configuration.md) -* [Resource: harbor_config_system](resources/config_system.md) -* [Resource: harbor_config_email](resources/config_email.md) -* [Resource: harbor_garbage_collection](resources/garbage_collection.md) -* [Resource: harbor_purge_audit_log](resources/purge-audit-log.md) -* [Resource: harbor_immutable_tag_rule](resources/immutable_tag_rule.md) -* [Resource: harbor_interrogation_services](resources/interrogation_services.md) -* [Resource: harbor_label](resources/label.md) -* [Resource: harbor_project_member_group](resources/project_member_group.md) -* [Resource: harbor_project_member_user](resources/project_member_user.md) -* [Resource: harbor_project](resources/project.md) -* [Resource: harbor_registry](resources/registry.md) -* [Resource: harbor_replication](resources/replication.md) -* [Resource: harbor_retention_policy](resources/retention_policy.md) -* [Resource: harbor_robot_account](resources/robot_account.md) -* [Resource: harbor_tasks](resources/tasks.md) -* [Resource: harbor_user](resources/user.md) +# harbor Provider -## Authentication -```hcl -provider "harbor" { - url = "https://harbor.aceme_corpartion.com" - username = "insert_admin_username_here" - password = "insert_password_here" - bearer_token = "insert_bearer_token_here" -} -``` + -Alternatively, these environment variables can be used to set the provider config values: -``` -HARBOR_URL -HARBOR_USERNAME -HARBOR_PASSWORD -HARBOR_BEARER_TOKEN -HARBOR_IGNORE_CERT -``` +## Schema -## Argument Reference -The following arguments are supported: +### Required -* **url** - (Required) The url of harbor -* **username** - (Required) The username to be used to access harbor -* **password** - (Required) The password to be used to access harbor -* **bearer_token** - (Optional) The bearer token to be used to access harbor. Will take precedence over username and password if set -* **insecure** - (Optional) Choose to ignore certificate errors -* **api_version** - (Optional) Choose which version of the api you would like to use 1 or 2. Default is `2` +- `url` (String) The url of harbor +- `password` (String) The password to be used to access harbor +- `username` (String) The username to be used to access harbor + +### Optional + +- `api_version` (Number) Choose which version of the api you would like to use 1 or 2. Default is `2` +- `bearer_token` (String) The bearer token to be used to access harbor. Will take precedence over username and password if set +- `insecure` (Boolean) Choose to ignore certificate errors diff --git a/docs/resources/config_auth.md b/docs/resources/config_auth.md new file mode 100644 index 00000000..b5cedca6 --- /dev/null +++ b/docs/resources/config_auth.md @@ -0,0 +1,101 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_config_auth Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_config_auth (Resource) + +## Example Usage - OIDC + +```terraform +resource "harbor_config_auth" "oidc" { + auth_mode = "oidc_auth" + primary_auth_mode = true + oidc_name = "azure" + oidc_endpoint = "https://login.microsoftonline.com/{GUID goes here}/v2.0" + oidc_client_id = "OIDC Client ID goes here" + oidc_client_secret = "ODDC Client Secret goes here" + oidc_scope = "openid,email" + oidc_verify_cert = true + oidc_auto_onboard = true + oidc_user_claim = "name" + oidc_admin_group = "administrators" +} +``` + +## Example Usage - LDAP + +```terraform +resource "harbor_config_auth" "ldap" { + auth_mode = "ldap_auth" + primary_auth_mode = true + ldap_url = "openldap.default.svc.cluster.local:389" + ldap_search_dn = "cn=admin,dc=example,dc=org" + ldap_search_password = "Not@SecurePassw0rd" + ldap_base_dn = "dc=example,dc=org" + ldap_uid = "email" + ldap_verify_cert = false +} +``` + + + +## Schema + +### Required + +- `auth_mode` (String) Harbor authentication mode. Can be `"oidc_auth"`, `"db_auth"` or `"ldap_auth"`. (Default: **"db_auth"**) + +### Required, OIDC + +The following are required if `auth_mode` is `oidc_auth` + +- `oidc_client_id` (String) The client id for the oidc server. +- `oidc_client_secret` (String, Sensitive) The client secert for the oidc server. +- `oidc_endpoint` (String) The URL of an OIDC-complaint server. +- `oidc_name` (String) The name of the oidc provider name. +- `oidc_scope` (String) The scope sent to OIDC server during authentication. It has to contain “openid”. +- `oidc_verify_cert` (Boolean) Set to **"false"** if your OIDC server is using a self-signed certificate. + +### Optional, OIDC + +- `oidc_admin_group` (String) All members of this group get Harbor admin permissions. +- `oidc_auto_onboard` (Boolean) Default is **"false"**, set to **"true"** if you want to skip the user onboarding screen, so user cannot change its username +- `oidc_group_filter` (String) The OIDC group filter to filter which groups could be onboarded to Harbor. +- `oidc_groups_claim` (String) The name of the claim in the token whose values is the list of group names. +- `oidc_user_claim` (String) Default is `name` + +### Required, LDAP + +The following are required if `auth_mode` is `ldap_auth` + +- `ldap_base_dn` (String) A user's DN who has the permission to search the LDAP/AD server. +- `ldap_uid` (String) The attribute used in a search to match a user. It could be uid, cn, email, sAMAccountName or other attributes depending on your LDAP/AD. +- `ldap_url` (String) The ldap server. Required when auth_mode is set to ldap. +- `ldap_verify_cert` (Boolean) Verify Cert from LDAP Server. + +### Optional, LDAP + +- `ldap_filter` (String) ldap filters +- `ldap_group_admin_dn` (String) Specify an LDAP group DN. All LDAP user in this group will have harbor admin privilege +- `ldap_group_base_dn` (String) The base DN from which to look up a group in LDAP/AD +- `ldap_group_filter` (String) The filter to look up an LDAP/AD group +- `ldap_group_gid` (String) The attribute used in a search to match a group +- `ldap_group_membership` (String) The attribute indicates the membership of LDAP group +- `ldap_group_scope` (String) The scope to search for groups +- `ldap_group_uid` (String) The attribute used in a search to match a user +- `ldap_scope` (String) LDAP Group Scope +- `ldap_search_dn` (String) The base DN from which to look up a user in LDAP/AD. +- `ldap_search_password` (String, Sensitive) The password for the user that will perform the LDAP search + +### Optional + +- `primary_auth_mode` (Boolean) Default is `false`, set to `true` if you want to use the OIDC or LDAP mode as the primary auth mode. +`NOTE: "primary_auth_mode" can only be used with Harbor version v2.8.0 and above` + +### Read-Only + +- `id` (String) The ID of this resource. diff --git a/docs/resources/config_email.md b/docs/resources/config_email.md index 97cabe8d..7b774f2c 100644 --- a/docs/resources/config_email.md +++ b/docs/resources/config_email.md @@ -1,21 +1,39 @@ -# Resource: harbor_config_email +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_config_email Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_config_email (Resource) + + ## Example Usage -```hcl +```terraform resource "harbor_config_email" "main" { - email_host = "server.acme.com" - email_from = "dont_reply@acme.com" + email_host = "server.acme.com" + email_from = "dont_reply@acme.com" } ``` -## Argument Reference -The following arguments are supported: +## Schema + +### Required + +- `email_from` (String) The email from address ie, `dont_reply@acme.com` +- `email_host` (String) The FQDN of the email server + +### Optional + +- `email_insecure` (Boolean) Disables validation of email server certificate `Default: false` +- `email_password` (String, Sensitive) The password for the email server +- `email_port` (Number) The smtp port for the email server `Default: 25` +- `email_ssl` (Boolean) Enable SSL for email server connection +- `email_username` (String) The username for the email server + +### Read-Only -* **email_host** - (Required) The FQDN of the email server -* **email_port** - (Optional) The smtp port for the email server `Default: 25` -* **email_username** - (Optional) The username for the email server -* **email_password** - (Optional) The password for the email server -* **email_from** - (Required) - The email from address ie, `dont_reply@acme.com` -* **email_ssl** - (Optional) Enable SSL for email server connection -* **email_insecure** - (Optional) Disables validation of email server certificate `Default: false` +- `id` (String) The ID of this resource. diff --git a/docs/resources/config_security.md b/docs/resources/config_security.md index a4dedfb3..869bf090 100644 --- a/docs/resources/config_security.md +++ b/docs/resources/config_security.md @@ -1,36 +1,36 @@ -# Resource: harbor_config_security +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_config_security Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_config_security (Resource) + + ## Example Usage -```hcl +```terraform resource "harbor_config_security" "main" { cve_allowlist = ["CVE-456", "CVE-123"] expires_at = "1701167767" } ``` -## Argument Reference - -The following arguments are supported: - -* `cve_allowlist` - (Required) System allowlist. Vulnerabilities in this list will be ignored when pushing and pulling images. Should be in the format or `["CVE-123", "CVE-145"]` or `["CVE-123"]` - -* `expires_at` - (Optional) The time for expiration of the allowlist, in the form of seconds since epoch. This is an optional attribute, if it's not set the CVE allowlist does not expire. - -## Attributes Reference +## Schema -In addition to all argument, the following attributes are exported: +### Required -* `id` - The id of the resource. -* `creation_time` - Time of creation of the list. -* `update_time` - Time of update of the list. +- `cve_allowlist` (List of String) System allowlist. Vulnerabilities in this list will be ignored when pushing and pulling images. Should be in the format or `["CVE-123", "CVE-145"]` or `["CVE-123"]` -## Import +### Optional -The list can be imported using the `id` eg, +- `expires_at` (Number) The time for expiration of the allowlist, in the form of seconds since epoch. This is an optional attribute, if it's not set the CVE allowlist does not expire. -` -terraform import harbor_config_security.main "7" -` +### Read-Only -> Note that at this point of time Harbor doesn't has any api endpoint for deleting this list. Only updating the records. +- `creation_time` (String) Time of creation of the list. +- `id` (String) The ID of this resource. +- `update_time` (String) Time of update of the list. diff --git a/docs/resources/config_system.md b/docs/resources/config_system.md index b8824f3c..eab79d3a 100644 --- a/docs/resources/config_system.md +++ b/docs/resources/config_system.md @@ -1,8 +1,18 @@ -# Resource: harbor_config_system +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_config_system Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_config_system (Resource) + + ## Example Usage -```hcl +```terraform resource "harbor_config_system" "main" { project_creation_restriction = "adminonly" robot_token_expiration = 30 @@ -11,17 +21,22 @@ resource "harbor_config_system" "main" { } ``` -## Argument Reference -The following arguments are supported: +## Schema + +### Optional -* **project_creation_restriction** - (Optional) Who can create projects within Harbor. Can be **"adminonly"** or **"everyone"** +- `project_creation_restriction` (String) Who can create projects within Harbor. Can be **"adminonly"** or **"everyone"** +- `read_only` (Boolean) Whether or not the system is in read only mode. +- `robot_name_prefix` (String) Robot account prefix. +- `robot_token_expiration` (Number) The amount of time in days a robot account will expire. +- `scanner_skip_update_pulltime` (Boolean) Whether or not to skip update pull time for scanner. +- `storage_per_project` (Number) Default quota space per project in GIB. Default is -1 (unlimited). -* **robot_token_expiration** - (Optional) The amount of time in days a robot account will expire. +#### Notes +`scanner_skip_update_pulltime` can only be used with harbor version v2.8.0 and above -* **robot_name_prefix** - (Optional) Robot account prefix. -`NOTE: If the time is set to high you will get a 500 internal server error message when creating robot accounts` +`robot_token_expiration` if the time is set to high you will get a 500 internal server error message when creating robot accounts -* **scanner_skip_update_pulltime** - (Optional) Whether or not to skip update pull time for scanner. -`NOTE: "scanner_skip_update_pulltime" can only be used with harbor version v2.8.0 and above` +### Read-Only -* **storage_per_project** - (Optional) Default quota space per project in GIB. Default is -1 (unlimited). \ No newline at end of file +- `id` (String) The ID of this resource. diff --git a/docs/resources/configuration.md b/docs/resources/configuration.md deleted file mode 100644 index a808646a..00000000 --- a/docs/resources/configuration.md +++ /dev/null @@ -1,81 +0,0 @@ -# Resource: harbor_configuration - -## Example Usage -How to configure oidc -```hcl -resource "harbor_config_auth" "oidc" { - auth_mode = "oidc_auth" - primary_auth_mode = true - oidc_name = "azure" - oidc_endpoint = "https://login.microsoftonline.com/{GUID goes here}/v2.0" - oidc_client_id = "OIDC Client ID goes here" - oidc_client_secret = "ODDC Client Secret goes here" - oidc_scope = "openid,email" - oidc_verify_cert = true - oidc_auto_onboard = true - oidc_user_claim = "name" - oidc_admin_group = "administrators" -} -``` - -How to configure ldap -```hcl -resource "harbor_config_auth" "ldap" { - auth_mode = "ldap_auth" - primary_auth_mode = true - ldap_url = "openldap.default.svc.cluster.local:389" - ldap_search_dn = "cn=admin,dc=example,dc=org" - ldap_search_password = "Not@SecurePassw0rd" - ldap_base_dn = "dc=example,dc=org" - ldap_uid = "email" - ldap_verify_cert = false -} -``` - -## Argument Reference -The following arguments are supported: - -* `auth_mode` - (Required) Harbor authentication mode. Can be `"oidc_auth"`, `"db_auth"` or `"ldap_auth"`. (Default: **"db_auth"**) - -* `primary_auth_mode` - (Optional) Default is **"false"**, set to **"true"** if you want to use the OIDC or LDAP mode as the primary auth mode. -`NOTE: "primary_auth_mode" can only be used with Harbor version v2.8.0 and above` - -* `oidc_name` - (Optional) The name of the oidc provider name. (Required - if auth_mode set to **oidc_auth**) - -* `oidc_endpoint` - (Optional) The URL of an OIDC-complaint server. (Required - if auth_mode set to **oidc_auth**) - -* `oidc_client_id` - (Optional) The client id for the oidc server. (Required - if auth_mode set to **oidc_auth**) - -* `oidc_client_serect` - (Optional) The client secert for the oidc server. (Required - if auth_mode set to **oidc_auth**) - -* `oidc_group_filter` - (Optional) The OIDC group filter to filter which groups could be onboarded to Harbor. - -* `oidc_groups_claim` - (Optional) The name of the claim in the token whose values is the list of group names. - -`NOTE: "oidc_groups_claim" can only be used with harbor version v1.10.1 and above` - -* `oidc_scope` - (Optional) The scope sent to OIDC server during authentication. It has to contain “openid”. (Required - if auth_mode set to **oidc_auth**) - -* `oidc_verify_cert` - (Optional) Set to **"false"** if your OIDC server is using a self-signed certificate. (Required - if auth_mode set to **oidc_auth**) - -* `oidc_auto_onboard` - (Optional) Default is **"false"**, set to **"true"** if you want to skip the user onboarding screen, so user cannot change its username - -* `oidc_user_claim` - (Optional) Default is **"name"** - -* `oidc_admin_group` - (Optional) All members of this group get Harbor admin permissions. - - -* `ldap_url` - (Optional) The ldap server. Required when auth_mode is set to ldap. (Required - if auth_mode set to **ldap_auth**) -* `ldap_base_dn` - (Optional) A user's DN who has the permission to search the LDAP/AD server. (Required - if auth_mode set to **ldap_auth**) -* `ldap_uid`- (Optional) The attribute used in a search to match a user. It could be uid, cn, email, sAMAccountName or other attributes depending on your LDAP/AD. (Required - if auth_mode set to **ldap_auth**) -* `ldap_verify_cert`- (Optional) Verify Cert from LDAP Server. (Required - if auth_mode set to **ldap_auth**) -* `ldap_search_dn` - (Optional) The base DN from which to look up a user in LDAP/AD. -* `ldap_search_password` - (Optional) The password for the user that will perform the LDAP search -* `ldap_filter` - (Optional) ldap filters -* `ldap_scope` - (Optional) LDAP Group Scope -* `ldap_group_base_dn` - (Optional) The base DN from which to look up a group in LDAP/AD. -* `ldap_group_filter` - (Optional) The filter to look up an LDAP/AD group. -* `ldap_group_gid` - (Optional) - The attribute used in a search to match a user -* `ldap_group_admin_dn` - (Optional) Specify an LDAP group DN. All LDAP user in this group will have harbor admin privilege -* `ldap_group_membership` - (Optional) The attribute indicates the membership of LDAP group -* `ldap_group_scope` - (Optional) The scope to search for groups diff --git a/examples/data-sources/harbor_groups/data-source.tf b/examples/data-sources/harbor_groups/data-source.tf new file mode 100644 index 00000000..015801c5 --- /dev/null +++ b/examples/data-sources/harbor_groups/data-source.tf @@ -0,0 +1,7 @@ +data "harbor_groups" "example" { + group_name = "example-group" +} + +output "group_ids" { + value = [data.harbor_groups.example.*.id] +} diff --git a/examples/data-sources/harbor_project/data-source.tf b/examples/data-sources/harbor_project/data-source.tf new file mode 100644 index 00000000..0054ca13 --- /dev/null +++ b/examples/data-sources/harbor_project/data-source.tf @@ -0,0 +1,7 @@ +data "harbor_project" "main" { + name = "library" +} + +output "project_id" { + value = data.harbor_project.main.id +} diff --git a/examples/data-sources/harbor_projects/data-source.tf b/examples/data-sources/harbor_projects/data-source.tf new file mode 100644 index 00000000..bd82c0ef --- /dev/null +++ b/examples/data-sources/harbor_projects/data-source.tf @@ -0,0 +1,7 @@ +data "harbor_projects" "proxycache" { + type = "ProxyCache" +} + +output "proxy_cache_projects" { + value = data.harbor_projects.proxycache +} diff --git a/examples/data-sources/harbor_registry/data-source.tf b/examples/data-sources/harbor_registry/data-source.tf new file mode 100644 index 00000000..ca0738c5 --- /dev/null +++ b/examples/data-sources/harbor_registry/data-source.tf @@ -0,0 +1,7 @@ +data "harbor_registry" "main" { + name = "test_docker_harbor" +} + +output "harbor_registry_id" { + value = data.harbor_registry.main.id +} diff --git a/examples/provider/provider.tf b/examples/provider/provider.tf new file mode 100644 index 00000000..160990e4 --- /dev/null +++ b/examples/provider/provider.tf @@ -0,0 +1,8 @@ +provider "harbor" { + url = "https://harbor.aceme_corpartion.com" + username = "insert_admin_username_here" + password = "insert_password_here" + bearer_token = "insert_bearer_token_here" + insecure = true + api_version = 2 +} diff --git a/examples/resources/harbor_config_auth/ldap.tf b/examples/resources/harbor_config_auth/ldap.tf new file mode 100644 index 00000000..99485e36 --- /dev/null +++ b/examples/resources/harbor_config_auth/ldap.tf @@ -0,0 +1,10 @@ +resource "harbor_config_auth" "ldap" { + auth_mode = "ldap_auth" + primary_auth_mode = true + ldap_url = "openldap.default.svc.cluster.local:389" + ldap_search_dn = "cn=admin,dc=example,dc=org" + ldap_search_password = "Not@SecurePassw0rd" + ldap_base_dn = "dc=example,dc=org" + ldap_uid = "email" + ldap_verify_cert = false +} diff --git a/examples/resources/harbor_config_auth/oidc.tf b/examples/resources/harbor_config_auth/oidc.tf new file mode 100644 index 00000000..c3172446 --- /dev/null +++ b/examples/resources/harbor_config_auth/oidc.tf @@ -0,0 +1,13 @@ +resource "harbor_config_auth" "oidc" { + auth_mode = "oidc_auth" + primary_auth_mode = true + oidc_name = "azure" + oidc_endpoint = "https://login.microsoftonline.com/{GUID goes here}/v2.0" + oidc_client_id = "OIDC Client ID goes here" + oidc_client_secret = "ODDC Client Secret goes here" + oidc_scope = "openid,email" + oidc_verify_cert = true + oidc_auto_onboard = true + oidc_user_claim = "name" + oidc_admin_group = "administrators" +} diff --git a/examples/resources/harbor_config_email/resource.tf b/examples/resources/harbor_config_email/resource.tf new file mode 100644 index 00000000..fc851712 --- /dev/null +++ b/examples/resources/harbor_config_email/resource.tf @@ -0,0 +1,4 @@ +resource "harbor_config_email" "main" { + email_host = "server.acme.com" + email_from = "dont_reply@acme.com" +} diff --git a/examples/resources/harbor_config_security/resource.tf b/examples/resources/harbor_config_security/resource.tf new file mode 100644 index 00000000..aaa1022d --- /dev/null +++ b/examples/resources/harbor_config_security/resource.tf @@ -0,0 +1,4 @@ +resource "harbor_config_security" "main" { + cve_allowlist = ["CVE-456", "CVE-123"] + expires_at = "1701167767" +} diff --git a/examples/resources/harbor_config_system/resource.tf b/examples/resources/harbor_config_system/resource.tf new file mode 100644 index 00000000..d06b0822 --- /dev/null +++ b/examples/resources/harbor_config_system/resource.tf @@ -0,0 +1,6 @@ +resource "harbor_config_system" "main" { + project_creation_restriction = "adminonly" + robot_token_expiration = 30 + robot_name_prefix = "harbor@" + storage_per_project = 100 +} diff --git a/templates/data-sources/groups.md.tmpl b/templates/data-sources/groups.md.tmpl new file mode 100644 index 00000000..c639e6ab --- /dev/null +++ b/templates/data-sources/groups.md.tmpl @@ -0,0 +1,46 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_groups Data Source - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_groups (Data Source) + + + +## Example Usage + +{{tffile "examples/data-sources/harbor_groups/data-source.tf"}} + +## Schema + +### Optional + +- `group_name` (String) The name of the group to filter by. +- `ldap_group_dn` (String) The LDAP group DN to filter by. + +### Read-Only + +- `groups` (List of Object) (see [below for nested schema](#nestedatt--groups)) +- `id` (String) The ID of this resource. + + + +### Nested Schema for `groups` + +A list of groups matching the previous arguments. Each `group` object provides the attributes documented below. + +Read-Only: + +- `group_name` (String) The name of the group. +- `group_type` (Number) The type of the group. +- `id` (Number) The ID of the group. +- `ldap_group_dn` (String) The LDAP group DN of the group. + +This data source retrieves a list of Harbor groups and filters them based on the `group_name` and `ldap_group_dn` arguments. It returns a list of `group` objects, each containing the `id`, `group_name`, `group_type`, and `ldap_group_dn` attributes of a group that matches the filter criteria. diff --git a/templates/data-sources/project.md.tmpl b/templates/data-sources/project.md.tmpl new file mode 100644 index 00000000..0a75de76 --- /dev/null +++ b/templates/data-sources/project.md.tmpl @@ -0,0 +1,33 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_project Data Source - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_project (Data Source) + + + +## Example Usage + +{{tffile "examples/data-sources/harbor_project/data-source.tf"}} + +## Schema + +### Required + +- `name` (String) The name of the project. + +### Read-Only + +- `id` (String) The ID of this resource. +- `project_id` (Number) The id of the project within harbor. +- `public` (Boolean) If the project has public accessibility. +- `type` (String) The type of the project : Project or ProxyCache. +- `vulnerability_scanning` (Boolean) If the images is scanned for vulnerabilities when push to harbor. diff --git a/templates/data-sources/projects.md.tmpl b/templates/data-sources/projects.md.tmpl new file mode 100644 index 00000000..2b93da0f --- /dev/null +++ b/templates/data-sources/projects.md.tmpl @@ -0,0 +1,45 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_projects Data Source - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_projects (Data Source) + + + +## Example Usage + +{{tffile "examples/data-sources/harbor_projects/data-source.tf"}} + +## Schema + +### Optional + +- `name` (String) The name of the project. +- `public` (Boolean) If the project has public accessibility. +- `type` (String) The type of the project : Project or ProxyCache. +- `vulnerability_scanning` (Boolean) If the images will be scanned for vulnerabilities when push to harbor. + +### Read-Only + +- `id` (String) The ID of this resource. +- `projects` (List of Object) (see [below for nested schema](#nestedatt--projects)) + + + +### Nested Schema for `projects` + +Read-Only: + +- `name` (String) +- `project_id` (Number) +- `public` (Boolean) +- `type` (String) +- `vulnerability_scanning` (Boolean) diff --git a/templates/data-sources/registry.md.tmpl b/templates/data-sources/registry.md.tmpl new file mode 100644 index 00000000..028584cb --- /dev/null +++ b/templates/data-sources/registry.md.tmpl @@ -0,0 +1,35 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_registry Data Source - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_registry (Data Source) + + + +## Example Usage + +{{tffile "examples/data-sources/harbor_registry/data-source.tf"}} + +## Schema + +### Required + +- `name` (String) The name of the register. + +### Read-Only + +- `description` (String) The description of the external container register. +- `id` (String) The ID of this resource. +- `insecure` (Boolean) If the certificate of the external container register can be verified. +- `registry_id` (Number) The id of the register within harbor. +- `status` (String) The health status of the external container register +- `type` (String) The type of the provider type. +- `url` (String) The url endpoint for the external container register diff --git a/templates/index.md.tmpl b/templates/index.md.tmpl new file mode 100644 index 00000000..f792e6ad --- /dev/null +++ b/templates/index.md.tmpl @@ -0,0 +1,29 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor Provider" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor Provider + + + +## Schema + +### Required + +- `url` (String) The url of harbor +- `password` (String) The password to be used to access harbor +- `username` (String) The username to be used to access harbor + +### Optional + +- `api_version` (Number) Choose which version of the api you would like to use 1 or 2. Default is `2` +- `bearer_token` (String) The bearer token to be used to access harbor. Will take precedence over username and password if set +- `insecure` (Boolean) Choose to ignore certificate errors diff --git a/templates/resources/config_auth.md.tmpl b/templates/resources/config_auth.md.tmpl new file mode 100644 index 00000000..c5081175 --- /dev/null +++ b/templates/resources/config_auth.md.tmpl @@ -0,0 +1,80 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_config_auth Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_config_auth (Resource) + +## Example Usage - OIDC + +{{tffile "examples/resources/harbor_config_auth/oidc.tf"}} + +## Example Usage - LDAP + +{{tffile "examples/resources/harbor_config_auth/ldap.tf"}} + + + +## Schema + +### Required + +- `auth_mode` (String) Harbor authentication mode. Can be `"oidc_auth"`, `"db_auth"` or `"ldap_auth"`. (Default: **"db_auth"**) + +### Required, OIDC + +The following are required if `auth_mode` is `oidc_auth` + +- `oidc_client_id` (String) The client id for the oidc server. +- `oidc_client_secret` (String, Sensitive) The client secert for the oidc server. +- `oidc_endpoint` (String) The URL of an OIDC-complaint server. +- `oidc_name` (String) The name of the oidc provider name. +- `oidc_scope` (String) The scope sent to OIDC server during authentication. It has to contain “openid”. +- `oidc_verify_cert` (Boolean) Set to **"false"** if your OIDC server is using a self-signed certificate. + +### Optional, OIDC + +- `oidc_admin_group` (String) All members of this group get Harbor admin permissions. +- `oidc_auto_onboard` (Boolean) Default is **"false"**, set to **"true"** if you want to skip the user onboarding screen, so user cannot change its username +- `oidc_group_filter` (String) The OIDC group filter to filter which groups could be onboarded to Harbor. +- `oidc_groups_claim` (String) The name of the claim in the token whose values is the list of group names. +- `oidc_user_claim` (String) Default is `name` + +### Required, LDAP + +The following are required if `auth_mode` is `ldap_auth` + +- `ldap_base_dn` (String) A user's DN who has the permission to search the LDAP/AD server. +- `ldap_uid` (String) The attribute used in a search to match a user. It could be uid, cn, email, sAMAccountName or other attributes depending on your LDAP/AD. +- `ldap_url` (String) The ldap server. Required when auth_mode is set to ldap. +- `ldap_verify_cert` (Boolean) Verify Cert from LDAP Server. + +### Optional, LDAP + +- `ldap_filter` (String) ldap filters +- `ldap_group_admin_dn` (String) Specify an LDAP group DN. All LDAP user in this group will have harbor admin privilege +- `ldap_group_base_dn` (String) The base DN from which to look up a group in LDAP/AD +- `ldap_group_filter` (String) The filter to look up an LDAP/AD group +- `ldap_group_gid` (String) The attribute used in a search to match a group +- `ldap_group_membership` (String) The attribute indicates the membership of LDAP group +- `ldap_group_scope` (String) The scope to search for groups +- `ldap_group_uid` (String) The attribute used in a search to match a user +- `ldap_scope` (String) LDAP Group Scope +- `ldap_search_dn` (String) The base DN from which to look up a user in LDAP/AD. +- `ldap_search_password` (String, Sensitive) The password for the user that will perform the LDAP search + +### Optional + +- `primary_auth_mode` (Boolean) Default is `false`, set to `true` if you want to use the OIDC or LDAP mode as the primary auth mode. +`NOTE: "primary_auth_mode" can only be used with Harbor version v2.8.0 and above` + +### Read-Only + +- `id` (String) The ID of this resource. diff --git a/templates/resources/config_email.md.tmpl b/templates/resources/config_email.md.tmpl new file mode 100644 index 00000000..dc67a9f9 --- /dev/null +++ b/templates/resources/config_email.md.tmpl @@ -0,0 +1,38 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_config_email Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_config_email (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_config_email/resource.tf"}} + +## Schema + +### Required + +- `email_from` (String) The email from address ie, `dont_reply@acme.com` +- `email_host` (String) The FQDN of the email server + +### Optional + +- `email_insecure` (Boolean) Disables validation of email server certificate `Default: false` +- `email_password` (String, Sensitive) The password for the email server +- `email_port` (Number) The smtp port for the email server `Default: 25` +- `email_ssl` (Boolean) Enable SSL for email server connection +- `email_username` (String) The username for the email server + +### Read-Only + +- `id` (String) The ID of this resource. diff --git a/templates/resources/config_security.md.tmpl b/templates/resources/config_security.md.tmpl new file mode 100644 index 00000000..fd09349e --- /dev/null +++ b/templates/resources/config_security.md.tmpl @@ -0,0 +1,35 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_config_security Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_config_security (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_config_security/resource.tf"}} + +## Schema + +### Required + +- `cve_allowlist` (List of String) System allowlist. Vulnerabilities in this list will be ignored when pushing and pulling images. Should be in the format or `["CVE-123", "CVE-145"]` or `["CVE-123"]` + +### Optional + +- `expires_at` (Number) The time for expiration of the allowlist, in the form of seconds since epoch. This is an optional attribute, if it's not set the CVE allowlist does not expire. + +### Read-Only + +- `creation_time` (String) Time of creation of the list. +- `id` (String) The ID of this resource. +- `update_time` (String) Time of update of the list. diff --git a/templates/resources/config_system.md.tmpl b/templates/resources/config_system.md.tmpl new file mode 100644 index 00000000..c4a85218 --- /dev/null +++ b/templates/resources/config_system.md.tmpl @@ -0,0 +1,39 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_config_system Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_config_system (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_config_system/resource.tf"}} + +## Schema + +### Optional + +- `project_creation_restriction` (String) Who can create projects within Harbor. Can be **"adminonly"** or **"everyone"** +- `read_only` (Boolean) Whether or not the system is in read only mode. +- `robot_name_prefix` (String) Robot account prefix. +- `robot_token_expiration` (Number) The amount of time in days a robot account will expire. +- `scanner_skip_update_pulltime` (Boolean) Whether or not to skip update pull time for scanner. +- `storage_per_project` (Number) Default quota space per project in GIB. Default is -1 (unlimited). + +#### Notes +`scanner_skip_update_pulltime` can only be used with harbor version v2.8.0 and above + +`robot_token_expiration` if the time is set to high you will get a 500 internal server error message when creating robot accounts + +### Read-Only + +- `id` (String) The ID of this resource. From 728f793639fb568971436551c5e76ca0dba734ce Mon Sep 17 00:00:00 2001 From: Allen Conlon Date: Sat, 10 Feb 2024 10:39:00 -0500 Subject: [PATCH 2/8] Updated docs Signed-off-by: Allen Conlon --- docs/resources/config_auth.md | 20 +++-- docs/resources/config_system.md | 2 +- docs/resources/garbage_collection.md | 32 ++++++-- docs/resources/group.md | 34 +++++--- docs/resources/immutable_tag_rule.md | 51 +++++++----- docs/resources/interrogation_services.md | 33 ++++++-- docs/resources/label.md | 73 +++++++++-------- docs/resources/project.md | 78 +++++++++---------- docs/resources/project_member_group.md | 44 +++++++---- docs/resources/project_member_user.md | 35 +++++---- docs/resources/project_webhook.md | 67 +++++++++++----- .../harbor_garbage_collection/resource.tf | 4 + examples/resources/harbor_group/resource.tf | 5 ++ .../harbor_immutable_tag_rule/resource.tf | 11 +++ .../harbor_interrogation_services/resource.tf | 4 + examples/resources/harbor_label/global.tf | 5 ++ examples/resources/harbor_label/project.tf | 10 +++ examples/resources/harbor_project/proxy.tf | 10 +++ examples/resources/harbor_project/resource.tf | 7 ++ .../harbor_project_member_group/resource.tf | 10 +++ .../harbor_project_member_user/resource.tf | 9 +++ .../harbor_project_webhook/resource.tf | 23 ++++++ templates/resources/config_auth.md.tmpl | 20 +++-- templates/resources/config_system.md.tmpl | 2 +- .../resources/garbage_collection.md.tmpl | 33 ++++++++ templates/resources/group.md.tmpl | 34 ++++++++ .../resources/immutable_tag_rule.md.tmpl | 37 +++++++++ .../resources/interrogation_services.md.tmpl | 33 ++++++++ templates/resources/label.md.tmpl | 42 ++++++++++ templates/resources/project.md.tmpl | 48 ++++++++++++ .../resources/project_member_group.md.tmpl | 41 ++++++++++ .../resources/project_member_user.md.tmpl | 32 ++++++++ templates/resources/project_webhook.md.tmpl | 52 +++++++++++++ 33 files changed, 759 insertions(+), 182 deletions(-) create mode 100644 examples/resources/harbor_garbage_collection/resource.tf create mode 100644 examples/resources/harbor_group/resource.tf create mode 100644 examples/resources/harbor_immutable_tag_rule/resource.tf create mode 100644 examples/resources/harbor_interrogation_services/resource.tf create mode 100644 examples/resources/harbor_label/global.tf create mode 100644 examples/resources/harbor_label/project.tf create mode 100644 examples/resources/harbor_project/proxy.tf create mode 100644 examples/resources/harbor_project/resource.tf create mode 100644 examples/resources/harbor_project_member_group/resource.tf create mode 100644 examples/resources/harbor_project_member_user/resource.tf create mode 100644 examples/resources/harbor_project_webhook/resource.tf create mode 100644 templates/resources/garbage_collection.md.tmpl create mode 100644 templates/resources/group.md.tmpl create mode 100644 templates/resources/immutable_tag_rule.md.tmpl create mode 100644 templates/resources/interrogation_services.md.tmpl create mode 100644 templates/resources/label.md.tmpl create mode 100644 templates/resources/project.md.tmpl create mode 100644 templates/resources/project_member_group.md.tmpl create mode 100644 templates/resources/project_member_user.md.tmpl create mode 100644 templates/resources/project_webhook.md.tmpl diff --git a/docs/resources/config_auth.md b/docs/resources/config_auth.md index b5cedca6..f340e94c 100644 --- a/docs/resources/config_auth.md +++ b/docs/resources/config_auth.md @@ -8,7 +8,9 @@ description: |- # harbor_config_auth (Resource) -## Example Usage - OIDC +## Example Usage + +### OIDC ```terraform resource "harbor_config_auth" "oidc" { @@ -26,7 +28,7 @@ resource "harbor_config_auth" "oidc" { } ``` -## Example Usage - LDAP +### LDAP ```terraform resource "harbor_config_auth" "ldap" { @@ -47,7 +49,7 @@ resource "harbor_config_auth" "ldap" { ### Required -- `auth_mode` (String) Harbor authentication mode. Can be `"oidc_auth"`, `"db_auth"` or `"ldap_auth"`. (Default: **"db_auth"**) +- `auth_mode` (String) Harbor authentication mode. Can be `"oidc_auth"`, `"db_auth"` or `"ldap_auth"`. (Default: `"db_auth"`) ### Required, OIDC @@ -57,20 +59,20 @@ The following are required if `auth_mode` is `oidc_auth` - `oidc_client_secret` (String, Sensitive) The client secert for the oidc server. - `oidc_endpoint` (String) The URL of an OIDC-complaint server. - `oidc_name` (String) The name of the oidc provider name. -- `oidc_scope` (String) The scope sent to OIDC server during authentication. It has to contain “openid”. -- `oidc_verify_cert` (Boolean) Set to **"false"** if your OIDC server is using a self-signed certificate. +- `oidc_scope` (String) The scope sent to OIDC server during authentication. It has to contain `“openid”`. +- `oidc_verify_cert` (Boolean) Set to `false` if your OIDC server is using a self-signed certificate. ### Optional, OIDC - `oidc_admin_group` (String) All members of this group get Harbor admin permissions. -- `oidc_auto_onboard` (Boolean) Default is **"false"**, set to **"true"** if you want to skip the user onboarding screen, so user cannot change its username +- `oidc_auto_onboard` (Boolean) Default is `"false"`, set to `"true"` if you want to skip the user onboarding screen, so user cannot change its username - `oidc_group_filter` (String) The OIDC group filter to filter which groups could be onboarded to Harbor. - `oidc_groups_claim` (String) The name of the claim in the token whose values is the list of group names. - `oidc_user_claim` (String) Default is `name` ### Required, LDAP -The following are required if `auth_mode` is `ldap_auth` +The following are required if `auth_mode` is `"ldap_auth"` - `ldap_base_dn` (String) A user's DN who has the permission to search the LDAP/AD server. - `ldap_uid` (String) The attribute used in a search to match a user. It could be uid, cn, email, sAMAccountName or other attributes depending on your LDAP/AD. @@ -94,7 +96,9 @@ The following are required if `auth_mode` is `ldap_auth` ### Optional - `primary_auth_mode` (Boolean) Default is `false`, set to `true` if you want to use the OIDC or LDAP mode as the primary auth mode. -`NOTE: "primary_auth_mode" can only be used with Harbor version v2.8.0 and above` + +#### Notes +`primary_auth_mode` can only be used with Harbor version v2.8.0 and above ### Read-Only diff --git a/docs/resources/config_system.md b/docs/resources/config_system.md index eab79d3a..f620fd99 100644 --- a/docs/resources/config_system.md +++ b/docs/resources/config_system.md @@ -25,7 +25,7 @@ resource "harbor_config_system" "main" { ### Optional -- `project_creation_restriction` (String) Who can create projects within Harbor. Can be **"adminonly"** or **"everyone"** +- `project_creation_restriction` (String) Who can create projects within Harbor. Can be `"adminonly"` or `"everyone"` - `read_only` (Boolean) Whether or not the system is in read only mode. - `robot_name_prefix` (String) Robot account prefix. - `robot_token_expiration` (Number) The amount of time in days a robot account will expire. diff --git a/docs/resources/garbage_collection.md b/docs/resources/garbage_collection.md index 4ba02bc9..5605871f 100644 --- a/docs/resources/garbage_collection.md +++ b/docs/resources/garbage_collection.md @@ -1,16 +1,34 @@ -# Resource: harbor_garbage_collection +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_garbage_collection Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_garbage_collection (Resource) + + ## Example Usage -```hcl + +```terraform resource "harbor_garbage_collection" "main" { schedule = "Daily" delete_untagged = true - } ``` -## Argument Reference -The following arguments are supported: -* **schedule** - (Required) Sets the schedule how often the Garbage Collection will run. Can be to `"hourly"`, `"daily"`, `"weekly"` or can be a custom cron string ie, `"5 4 * * *"` +## Schema + +### Required + +- `schedule` (String) Sets the schedule how often the Garbage Collection will run. Can be to `"hourly"`, `"daily"`, `"weekly"` or can be a custom cron string ie, `"5 4 * * *"` + +### Optional + +- `delete_untagged` (Boolean) Allow garbage collection on untagged artifacts. + +### Read-Only -* **delete_untagged** - (Optional) Allow garbage collection on untagged artifacts. \ No newline at end of file +- `id` (String) The ID of this resource. diff --git a/docs/resources/group.md b/docs/resources/group.md index 1a3eccc4..a1bdfe7f 100644 --- a/docs/resources/group.md +++ b/docs/resources/group.md @@ -1,26 +1,36 @@ -# Resource: harbor_group +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_group Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_group (Resource) + + ## Example Usage -```hcl +```terraform resource "harbor_group" "storage-group" { group_name = "storage-group" group_type = 3 + ldap_group_dn = "storage-group" } ``` -## Argument Reference -The following arguments are supported: +## Schema + +### Required -* **group_name** - (Required) The name of the group. +- `group_name` (String) The name of the group. +- `group_type` (Number) 3. Note: group type 3 is OIDC group. -* **group_type** - (Required) 3. Note: group type 3 is OIDC group. +### Optional -* **ldap_group_dn** - (Optional) The distinguished name of the group within AD/LDAP +- `ldap_group_dn` (String) The distinguished name of the group within AD/LDAP. -## Import -An OIDC group can be imported using the `group id` eg, +### Read-Only -` -terraform import harbor_group.storage-group /usergroups/19 -` +- `id` (String) The ID of this resource. diff --git a/docs/resources/immutable_tag_rule.md b/docs/resources/immutable_tag_rule.md index c48a8256..a8366888 100644 --- a/docs/resources/immutable_tag_rule.md +++ b/docs/resources/immutable_tag_rule.md @@ -1,32 +1,45 @@ -# Resource: harbor_immutable_tag_rule +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_immutable_tag_rule Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_immutable_tag_rule (Resource) + + ## Example Usage -```hcl +```terraform resource "harbor_project" "main" { - name = "acctest" + name = "acctest" } resource "harbor_immutable_tag_rule" "main" { - project_id = harbor_project.main.id - repo_matching = "**" - tag_excluding = "latest" + disabled = true + project_id = harbor_project.main.id + repo_matching = "**" + tag_matching = "v2.*" + tag_excluding = "latest" } ``` -## Argument Reference -The following arguments are supported: +## Schema + +### Required + +- `project_id` (String) The project id of which you would like to apply this policy. + +### Optional -* `disabled`- (Optional) Specify if the rule is disable or not. Defaults to `false` -* `repo_matching`- (Optional) For the repositories matching. -* `repo_excluding` - (Optional) For the repositories excuding. -* `tag_matching`- (Optional) For the tag matching. -* `tag_excluding` - (Optional) For the tag excuding. -* `scope` - (Required) The project id of which you would like to apply this policy. +- `disabled` (Boolean) Specify if the rule is disable or not. Defaults to `false` +- `repo_excluding` (String) For the repositories excluding. +- `repo_matching` (String) For the repositories matching. +- `tag_excluding` (String) For the tag excluding. +- `tag_matching` (String) For the tag matching. -## Import -Harbor immutable tag rule can be imported using the `project and immutabletagrule ids` eg, +### Read-Only -` -terraform import harbor_immutable_tag_rule.main /projects/4/immutabletagrules/25 -` +- `id` (String) The ID of this resource. diff --git a/docs/resources/interrogation_services.md b/docs/resources/interrogation_services.md index e2b6c498..b3af8dcf 100644 --- a/docs/resources/interrogation_services.md +++ b/docs/resources/interrogation_services.md @@ -1,15 +1,34 @@ -# Resource: harbor_interrogation_services +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_interrogation_services Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_interrogation_services (Resource) + + ## Example Usage -```hcl + +```terraform resource "harbor_interrogation_services" "main" { + default_scanner = "Clair" vulnerability_scan_policy = "Daily" - } ``` -## Argument Reference -The following arguments are supported: -* `default_scanner` - (Optional) Sets the default interrogation service **Clair** +## Schema + +### Required + +- `vulnerability_scan_policy` (String) The frequency of the vulnerability scanning is done. This can be `Daily`, `Weekly`, `Monthly` or can be a custom cron string. + +### Optional + +- `default_scanner` (String) Sets the default interrogation service `"Clair"` + +### Read-Only -* `vulnerability_scan_policy` - (Optional) The frequency of the vulnerability scanning is done. This can be `Daily`, `Weekly`, `Monthly` or can be a custom cron string. \ No newline at end of file +- `id` (String) The ID of this resource. diff --git a/docs/resources/label.md b/docs/resources/label.md index f7683b97..35a13d8c 100644 --- a/docs/resources/label.md +++ b/docs/resources/label.md @@ -1,44 +1,55 @@ -# Resource: harbor_label +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_label Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_label (Resource) + + ## Example Usage -* Create a global label within harbor -```hcl - resource "harbor_label" "main" { - name = "accTest" - color = "#FF0000" - description = "Description to for acceptance test" - } +### Global + +```terraform +resource "harbor_label" "main" { + name = "accTest" + color = "#FF0000" + description = "Description to for acceptance test" +} ``` -* Creates a label for project -```hcl - resource "harbor_project" "main" { - name = "acctest" - } - - resource "harbor_label" "main" { - name = "accTest" - color = "#FFFFFF" - description = "Description for acceptance test" - project_id = harbor_project.main.id - } +### Project + +```terraform +resource "harbor_project" "main" { + name = "acctest" +} + +resource "harbor_label" "main" { + name = "accTest" + color = "#FFFFFF" + description = "Description for acceptance test" + project_id = harbor_project.main.id +} ``` -## Argument Reference -The following arguments are supported: +## Schema -* **name** - (Required) The of name of the label within harbor. +### Required -* **color** - (Optional) The color of the label within harbor (Default: #FFFFF) +- `name` (String) The of name of the label within harbor. -* **description** - (Optional) The Description of the label within harbor +### Optional -* **project_id** - The id of the project with harbor. +- `color` (String) The color of the label within harbor (Default: #FFFFF) +- `description` (String) The Description of the label within harbor +- `project_id` (String) The id of the project with harbor. -## Import -Harbor label can be imported using the `label id` eg, +### Read-Only -` -terraform import harbor_label.main /labels/1 -` +- `id` (String) The ID of this resource. +- `scope` (String) diff --git a/docs/resources/project.md b/docs/resources/project.md index 8e2ae339..c95562d1 100644 --- a/docs/resources/project.md +++ b/docs/resources/project.md @@ -1,18 +1,32 @@ -# Resource: harbor_project +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_project Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_project (Resource) + + ## Example Usage -```hcl + +### Hosted + +```terraform resource "harbor_project" "main" { - name = "main" - public = false # (Optional) Default value is false - vulnerability_scanning = true # (Optional) Default value is true. Automatically scan images on push - enable_content_trust = true # (Optional) Default value is false. Deny unsigned images from being pulled (notary) - enable_content_trust_cosign = false # (Optional) Default value is false. Deny unsigned images from being pulled (cosign) + name = "main" + public = false # (Optional) Default value is false + vulnerability_scanning = true # (Optional) Default value is true. Automatically scan images on push + enable_content_trust = true # (Optional) Default value is false. Deny unsigned images from being pulled (notary) + enable_content_trust_cosign = false # (Optional) Default value is false. Deny unsigned images from being pulled (cosign) } ``` -## Harbor project example as proxy cache -```hcl +### Proxy + +```terraform resource "harbor_project" "main" { name = "acctest" registry_id = harbor_registry.docker.registry_id @@ -25,39 +39,25 @@ resource "harbor_registry" "docker" { } ``` +## Schema -## Argument Reference -The following arguments are supported: - -* `name` - (Required) The name of the project that will be created in harbor. - -* `public` - (Optional) The project will be public accessibility. Can be set to `"true"` or `"false"` (Default: false) - -* `vulnerability_scanning` - (Optional) Images will be scanned for vulnerabilities when push to harbor. Can be set to `"true"` or `"false"` (Default: true) - -* `deployment_security` - (Optional) Prevent deployment of images with vulnerability severity equal or higher than the specified value. Images must be scanned before this takes effect. Possible values: `critical`, `high`, `medium`, `low`, `none`. (Default: `""` - empty) - -* `registry_id` - (Optional) To enable project as Proxy Cache - -* `storage_quota` - (Optional) The storage quota of the project in GB's - -* `enable_content_trust` - (Optional) Enables Content Trust for project. When enabled it queries the embedded docker notary server. Can be set to `"true"` or `"false"` (Default: false) - -* `enable_content_trust_cosign` - (Optional) Enables Content Trust Cosign for project. When enabled it queries Cosign. Can be set to `"true"` or `"false"` (Default: false) - -* `force_destroy` - (Optional, Default: `false`) A boolean that indicates all repositories should be deleted from the project so that the project can be destroyed without error. These repositories are *not* recoverable. +### Required -* `cve_allowlist` - (Optional) Project allowlist allows vulnerabilities in this list to be ignored in this project when pushing and pulling images. Should be in the format or `["CVE-123", "CVE-145"]` or `["CVE-123"]` +- `name` (String) The name of the project that will be created in harbor. -## Attributes Reference -In addition to all argument, the following attributes are exported: +### Optional -* `project_id` - The id of the project with harbor. -* `cve_allowlist` - A list of allowed CVE IDs. +- `cve_allowlist` (List of String) Project allowlist allows vulnerabilities in this list to be ignored in this project when pushing and pulling images. Should be in the format or `["CVE-123", "CVE-145"]` or `["CVE-123"]` +- `deployment_security` (String) Prevent deployment of images with vulnerability severity equal or higher than the specified value. Images must be scanned before this takes effect. Possible values: `"critical"`, `"high"`, `"medium"`, `"low"`, `"none"`. (Default: `""` - empty) +- `enable_content_trust` (Boolean) Enables Content Trust for project. When enabled it queries the embedded docker notary server. (Default: `false`). +- `enable_content_trust_cosign` (Boolean) Enables Content Trust Cosign for project. When enabled it queries Cosign. (Default: `false`) +- `force_destroy` (Boolean) A boolean that indicates all repositories should be deleted from the project so that the project can be destroyed without error. These repositories are *not* recoverable. +- `public` (Boolean) The project will be public accessibility.(Default: `false`) +- `registry_id` (Number) To enable project as Proxy Cache. +- `storage_quota` (Number) The storage quota of the project in GB's. +- `vulnerability_scanning` (Boolean) Images will be scanned for vulnerabilities when push to harbor. (Default: `true`) -## Import -Harbor project can be imported using the `project id` eg, +### Read-Only -` -terraform import harbor_project.main /projects/1 -` +- `id` (String) The ID of this resource. +- `project_id` (Number) The project id of this resource. diff --git a/docs/resources/project_member_group.md b/docs/resources/project_member_group.md index b8c071bf..71eba0ce 100644 --- a/docs/resources/project_member_group.md +++ b/docs/resources/project_member_group.md @@ -1,7 +1,18 @@ -# Resource: harbor_project_member_group +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_project_member_group Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_project_member_group (Resource) + + ## Example Usage -```hcl + +```terraform resource "harbor_project" "main" { name = "main" } @@ -12,27 +23,26 @@ resource "harbor_project_member_group" "main" { role = "projectadmin" type = "oidc" } - ``` -## Argument Reference -The following arguments are supported: - -* **group_name** - (Required) The name of the group member entity +## Schema -* **project_id** - (Required) The project id of the project that the entity will have access to. +### Required -* **role** - (Required) The premissions that the entity will be granted. +- `project_id` (String) The project id of the project that the entity will have access to. +- `role` (String) The permissions that the entity will be granted. +- `type` (String) The group type. Can be set to `"ldap"`, `"internal"` or `"oidc"`. -* **type** - (Required) The group type. Can be set to **"ldap"**, **"internal"** or **"oidc"** +#### Notes +`type` can only be `oidc` when used with harbor version v1.10.1 and above. -* **ldap_group_dn** - (Optional) The distinguished name of the group within AD/LDAP +### Optional -`NOTE: oidc group type can only be used with harbor version v1.10.1 and above` +- `group_id` (Number) 3. Note: group type 3 is OIDC group. +- `group_name` (String) The name of the group member entity. +- `ldap_group_dn` (String) The distinguished name of the group within AD/LDAP. -## Import -Harbor project member group can be imported using the `project id` and `member id` eg, +### Read-Only -` -terraform import harbor_project_member_group.main /projects/10/members/200 -` +- `id` (String) The ID of this resource. +- `member_id` (Number) diff --git a/docs/resources/project_member_user.md b/docs/resources/project_member_user.md index 8dc08dbb..edc65e30 100644 --- a/docs/resources/project_member_user.md +++ b/docs/resources/project_member_user.md @@ -1,7 +1,18 @@ -# Resource: harbor_project_member_user +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_project_member_user Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_project_member_user (Resource) + + ## Example Usage -```hcl + +```terraform resource "harbor_project" "main" { name = "main" } @@ -11,21 +22,17 @@ resource "harbor_project_member_user" "main" { user_name = "testing1" role = "projectadmin" } - ``` -## Argument Reference -The following arguments are supported: - -* **user_name** - (Required) The name of the member entity +## Schema -* **project_id** - (Required) The project id of the project that the entity will have access to. +### Required -* **role** - (Required) The premissions that the entity will be granted. +- `project_id` (String) The project id of the project that the entity will have access to. +- `role` (String) The permissions that the entity will be granted. +- `user_name` (String) The name of the member entity. -## Import -Harbor project member user can be imported using the `project id` and `member id` eg, +### Read-Only -` -terraform import harbor_project_member_user.main /projects/10/members/200 -` +- `id` (String) The ID of this resource. +- `member_id` (Number) The member id of the member. diff --git a/docs/resources/project_webhook.md b/docs/resources/project_webhook.md index e414d026..a156d807 100644 --- a/docs/resources/project_webhook.md +++ b/docs/resources/project_webhook.md @@ -1,7 +1,22 @@ -# Resource: harbor_project_webhook +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_project_webhook Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_project_webhook (Resource) + + ## Example Usage -```hcl + +```terraform +resource "harbor_project" "main" { + name = "test-project" +} + resource "harbor_project_webhook" "main" { name = "test_webhook" address = "https://webhook.domain.com" @@ -21,21 +36,37 @@ resource "harbor_project_webhook" "main" { ] } - -resource "harbor_project" "main" { - name = "test-project" -} ``` -## Argument Reference -The following arguments are supported: - -* `name` - (Required, string) The name of the webhook that will be created in harbor. -* `address` - (Required, string) The address of the webhook -* `description` _ (Optional, string) A description of the webhook -* `enabled` - (Optional, bool), To enable / disable the webhook. Default `true` -* `project_id` - (Required, string) The project id (**/projects/ID**) of the harbor that webhook related to. -* `notify_type` - (Required, string) The notification type either `http` or `slack` -* `events_types` - (Required, list(string)) The type events you want to subscript to can be `DELETE_ARTIFACT`, `PULL_ARTIFACT`, `PUSH_ARTIFACT`, `QUOTA_EXCEED`, `QUOTA_WARNING`, `REPLICATION`, `SCANNING_FAILED`, `SCANNING_COMPLETED`, `TAG_RETENTION` -* `auth_header` - (Required, string) authentication header for you the webhook -* `skip_cert_verify` - (Optional - bool) checks the for validate SSL certificate. \ No newline at end of file +## Schema + +### Required + +- `address` (String) The address of the webhook. +- `events_types` (List of String) The type events you want to subscript to can be +- `name` (String) The name of the webhook that will be created in harbor. +- `notify_type` (String) The notification type either `http` or `slack`. +- `project_id` (String) The project id of the harbor that webhook related to. + +##### `events_types` Options + +- `DELETE_ARTIFACT` +- `PULL_ARTIFACT` +- `PUSH_ARTIFACT` +- `QUOTA_EXCEED` +- `QUOTA_WARNING` +- `REPLICATION` +- `SCANNING_FAILED` +- `SCANNING_COMPLETED` +- `TAG_RETENTION` + +### Optional + +- `auth_header` (String) authentication header for you the webhook. +- `description` (String) A description of the webhook. +- `enabled` (Boolean) To enable / disable the webhook. Default `true`. +- `skip_cert_verify` (Boolean) checks the for validate SSL certificate. + +### Read-Only + +- `id` (String) The ID of this resource. diff --git a/examples/resources/harbor_garbage_collection/resource.tf b/examples/resources/harbor_garbage_collection/resource.tf new file mode 100644 index 00000000..7e80df82 --- /dev/null +++ b/examples/resources/harbor_garbage_collection/resource.tf @@ -0,0 +1,4 @@ +resource "harbor_garbage_collection" "main" { + schedule = "Daily" + delete_untagged = true +} diff --git a/examples/resources/harbor_group/resource.tf b/examples/resources/harbor_group/resource.tf new file mode 100644 index 00000000..08976ad7 --- /dev/null +++ b/examples/resources/harbor_group/resource.tf @@ -0,0 +1,5 @@ +resource "harbor_group" "storage-group" { + group_name = "storage-group" + group_type = 3 + ldap_group_dn = "storage-group" +} diff --git a/examples/resources/harbor_immutable_tag_rule/resource.tf b/examples/resources/harbor_immutable_tag_rule/resource.tf new file mode 100644 index 00000000..cb7aed9a --- /dev/null +++ b/examples/resources/harbor_immutable_tag_rule/resource.tf @@ -0,0 +1,11 @@ +resource "harbor_project" "main" { + name = "acctest" +} + +resource "harbor_immutable_tag_rule" "main" { + disabled = true + project_id = harbor_project.main.id + repo_matching = "**" + tag_matching = "v2.*" + tag_excluding = "latest" +} diff --git a/examples/resources/harbor_interrogation_services/resource.tf b/examples/resources/harbor_interrogation_services/resource.tf new file mode 100644 index 00000000..f1660fde --- /dev/null +++ b/examples/resources/harbor_interrogation_services/resource.tf @@ -0,0 +1,4 @@ +resource "harbor_interrogation_services" "main" { + default_scanner = "Clair" + vulnerability_scan_policy = "Daily" +} diff --git a/examples/resources/harbor_label/global.tf b/examples/resources/harbor_label/global.tf new file mode 100644 index 00000000..9210d5ec --- /dev/null +++ b/examples/resources/harbor_label/global.tf @@ -0,0 +1,5 @@ +resource "harbor_label" "main" { + name = "accTest" + color = "#FF0000" + description = "Description to for acceptance test" +} \ No newline at end of file diff --git a/examples/resources/harbor_label/project.tf b/examples/resources/harbor_label/project.tf new file mode 100644 index 00000000..0e731123 --- /dev/null +++ b/examples/resources/harbor_label/project.tf @@ -0,0 +1,10 @@ +resource "harbor_project" "main" { + name = "acctest" +} + +resource "harbor_label" "main" { + name = "accTest" + color = "#FFFFFF" + description = "Description for acceptance test" + project_id = harbor_project.main.id +} diff --git a/examples/resources/harbor_project/proxy.tf b/examples/resources/harbor_project/proxy.tf new file mode 100644 index 00000000..9ca054d0 --- /dev/null +++ b/examples/resources/harbor_project/proxy.tf @@ -0,0 +1,10 @@ +resource "harbor_project" "main" { + name = "acctest" + registry_id = harbor_registry.docker.registry_id +} + +resource "harbor_registry" "docker" { + provider_name = "docker-hub" + name = "test" + endpoint_url = "https://hub.docker.com" +} diff --git a/examples/resources/harbor_project/resource.tf b/examples/resources/harbor_project/resource.tf new file mode 100644 index 00000000..a5f4013f --- /dev/null +++ b/examples/resources/harbor_project/resource.tf @@ -0,0 +1,7 @@ +resource "harbor_project" "main" { + name = "main" + public = false # (Optional) Default value is false + vulnerability_scanning = true # (Optional) Default value is true. Automatically scan images on push + enable_content_trust = true # (Optional) Default value is false. Deny unsigned images from being pulled (notary) + enable_content_trust_cosign = false # (Optional) Default value is false. Deny unsigned images from being pulled (cosign) +} diff --git a/examples/resources/harbor_project_member_group/resource.tf b/examples/resources/harbor_project_member_group/resource.tf new file mode 100644 index 00000000..054c2d93 --- /dev/null +++ b/examples/resources/harbor_project_member_group/resource.tf @@ -0,0 +1,10 @@ +resource "harbor_project" "main" { + name = "main" +} + +resource "harbor_project_member_group" "main" { + project_id = harbor_project.main.id + group_name = "testing1" + role = "projectadmin" + type = "oidc" +} diff --git a/examples/resources/harbor_project_member_user/resource.tf b/examples/resources/harbor_project_member_user/resource.tf new file mode 100644 index 00000000..e49c5ca4 --- /dev/null +++ b/examples/resources/harbor_project_member_user/resource.tf @@ -0,0 +1,9 @@ +resource "harbor_project" "main" { + name = "main" +} + +resource "harbor_project_member_user" "main" { + project_id = harbor_project.main.id + user_name = "testing1" + role = "projectadmin" +} diff --git a/examples/resources/harbor_project_webhook/resource.tf b/examples/resources/harbor_project_webhook/resource.tf new file mode 100644 index 00000000..70e9559a --- /dev/null +++ b/examples/resources/harbor_project_webhook/resource.tf @@ -0,0 +1,23 @@ +resource "harbor_project" "main" { + name = "test-project" +} + +resource "harbor_project_webhook" "main" { + name = "test_webhook" + address = "https://webhook.domain.com" + project_id = harbor_project.main.id + notify_type = "http" + + events_types = [ + "DELETE_ARTIFACT", + "PULL_ARTIFACT", + "PUSH_ARTIFACT", + "QUOTA_EXCEED", + "QUOTA_WARNING", + "REPLICATION", + "SCANNING_FAILED", + "SCANNING_COMPLETED", + "TAG_RETENTION" + ] + +} diff --git a/templates/resources/config_auth.md.tmpl b/templates/resources/config_auth.md.tmpl index c5081175..6c5b0e6f 100644 --- a/templates/resources/config_auth.md.tmpl +++ b/templates/resources/config_auth.md.tmpl @@ -12,11 +12,13 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc # harbor_config_auth (Resource) -## Example Usage - OIDC +## Example Usage + +### OIDC {{tffile "examples/resources/harbor_config_auth/oidc.tf"}} -## Example Usage - LDAP +### LDAP {{tffile "examples/resources/harbor_config_auth/ldap.tf"}} @@ -26,7 +28,7 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc ### Required -- `auth_mode` (String) Harbor authentication mode. Can be `"oidc_auth"`, `"db_auth"` or `"ldap_auth"`. (Default: **"db_auth"**) +- `auth_mode` (String) Harbor authentication mode. Can be `"oidc_auth"`, `"db_auth"` or `"ldap_auth"`. (Default: `"db_auth"`) ### Required, OIDC @@ -36,20 +38,20 @@ The following are required if `auth_mode` is `oidc_auth` - `oidc_client_secret` (String, Sensitive) The client secert for the oidc server. - `oidc_endpoint` (String) The URL of an OIDC-complaint server. - `oidc_name` (String) The name of the oidc provider name. -- `oidc_scope` (String) The scope sent to OIDC server during authentication. It has to contain “openid”. -- `oidc_verify_cert` (Boolean) Set to **"false"** if your OIDC server is using a self-signed certificate. +- `oidc_scope` (String) The scope sent to OIDC server during authentication. It has to contain `“openid”`. +- `oidc_verify_cert` (Boolean) Set to `false` if your OIDC server is using a self-signed certificate. ### Optional, OIDC - `oidc_admin_group` (String) All members of this group get Harbor admin permissions. -- `oidc_auto_onboard` (Boolean) Default is **"false"**, set to **"true"** if you want to skip the user onboarding screen, so user cannot change its username +- `oidc_auto_onboard` (Boolean) Default is `"false"`, set to `"true"` if you want to skip the user onboarding screen, so user cannot change its username - `oidc_group_filter` (String) The OIDC group filter to filter which groups could be onboarded to Harbor. - `oidc_groups_claim` (String) The name of the claim in the token whose values is the list of group names. - `oidc_user_claim` (String) Default is `name` ### Required, LDAP -The following are required if `auth_mode` is `ldap_auth` +The following are required if `auth_mode` is `"ldap_auth"` - `ldap_base_dn` (String) A user's DN who has the permission to search the LDAP/AD server. - `ldap_uid` (String) The attribute used in a search to match a user. It could be uid, cn, email, sAMAccountName or other attributes depending on your LDAP/AD. @@ -73,7 +75,9 @@ The following are required if `auth_mode` is `ldap_auth` ### Optional - `primary_auth_mode` (Boolean) Default is `false`, set to `true` if you want to use the OIDC or LDAP mode as the primary auth mode. -`NOTE: "primary_auth_mode" can only be used with Harbor version v2.8.0 and above` + +#### Notes +`primary_auth_mode` can only be used with Harbor version v2.8.0 and above ### Read-Only diff --git a/templates/resources/config_system.md.tmpl b/templates/resources/config_system.md.tmpl index c4a85218..81a48f6f 100644 --- a/templates/resources/config_system.md.tmpl +++ b/templates/resources/config_system.md.tmpl @@ -22,7 +22,7 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc ### Optional -- `project_creation_restriction` (String) Who can create projects within Harbor. Can be **"adminonly"** or **"everyone"** +- `project_creation_restriction` (String) Who can create projects within Harbor. Can be `"adminonly"` or `"everyone"` - `read_only` (Boolean) Whether or not the system is in read only mode. - `robot_name_prefix` (String) Robot account prefix. - `robot_token_expiration` (Number) The amount of time in days a robot account will expire. diff --git a/templates/resources/garbage_collection.md.tmpl b/templates/resources/garbage_collection.md.tmpl new file mode 100644 index 00000000..581c47a2 --- /dev/null +++ b/templates/resources/garbage_collection.md.tmpl @@ -0,0 +1,33 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_garbage_collection Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_garbage_collection (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_garbage_collection/resource.tf"}} + +## Schema + +### Required + +- `schedule` (String) Sets the schedule how often the Garbage Collection will run. Can be to `"hourly"`, `"daily"`, `"weekly"` or can be a custom cron string ie, `"5 4 * * *"` + +### Optional + +- `delete_untagged` (Boolean) Allow garbage collection on untagged artifacts. + +### Read-Only + +- `id` (String) The ID of this resource. diff --git a/templates/resources/group.md.tmpl b/templates/resources/group.md.tmpl new file mode 100644 index 00000000..ae919622 --- /dev/null +++ b/templates/resources/group.md.tmpl @@ -0,0 +1,34 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_group Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_group (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_group/resource.tf"}} + +## Schema + +### Required + +- `group_name` (String) The name of the group. +- `group_type` (Number) 3. Note: group type 3 is OIDC group. + +### Optional + +- `ldap_group_dn` (String) The distinguished name of the group within AD/LDAP. + +### Read-Only + +- `id` (String) The ID of this resource. diff --git a/templates/resources/immutable_tag_rule.md.tmpl b/templates/resources/immutable_tag_rule.md.tmpl new file mode 100644 index 00000000..09da00a5 --- /dev/null +++ b/templates/resources/immutable_tag_rule.md.tmpl @@ -0,0 +1,37 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_immutable_tag_rule Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_immutable_tag_rule (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_immutable_tag_rule/resource.tf"}} + +## Schema + +### Required + +- `project_id` (String) The project id of which you would like to apply this policy. + +### Optional + +- `disabled` (Boolean) Specify if the rule is disable or not. Defaults to `false` +- `repo_excluding` (String) For the repositories excluding. +- `repo_matching` (String) For the repositories matching. +- `tag_excluding` (String) For the tag excluding. +- `tag_matching` (String) For the tag matching. + +### Read-Only + +- `id` (String) The ID of this resource. diff --git a/templates/resources/interrogation_services.md.tmpl b/templates/resources/interrogation_services.md.tmpl new file mode 100644 index 00000000..2dc38609 --- /dev/null +++ b/templates/resources/interrogation_services.md.tmpl @@ -0,0 +1,33 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_interrogation_services Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_interrogation_services (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_interrogation_services/resource.tf"}} + +## Schema + +### Required + +- `vulnerability_scan_policy` (String) The frequency of the vulnerability scanning is done. This can be `Daily`, `Weekly`, `Monthly` or can be a custom cron string. + +### Optional + +- `default_scanner` (String) Sets the default interrogation service `"Clair"` + +### Read-Only + +- `id` (String) The ID of this resource. diff --git a/templates/resources/label.md.tmpl b/templates/resources/label.md.tmpl new file mode 100644 index 00000000..1e5481a5 --- /dev/null +++ b/templates/resources/label.md.tmpl @@ -0,0 +1,42 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_label Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_label (Resource) + + + +## Example Usage + +### Global + +{{tffile "examples/resources/harbor_label/global.tf"}} + +### Project + +{{tffile "examples/resources/harbor_label/project.tf"}} + +## Schema + +### Required + +- `name` (String) The of name of the label within harbor. + +### Optional + +- `color` (String) The color of the label within harbor (Default: #FFFFF) +- `description` (String) The Description of the label within harbor +- `project_id` (String) The id of the project with harbor. + +### Read-Only + +- `id` (String) The ID of this resource. +- `scope` (String) diff --git a/templates/resources/project.md.tmpl b/templates/resources/project.md.tmpl new file mode 100644 index 00000000..41ee3a2f --- /dev/null +++ b/templates/resources/project.md.tmpl @@ -0,0 +1,48 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_project Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_project (Resource) + + + +## Example Usage + +### Hosted + +{{tffile "examples/resources/harbor_project/resource.tf"}} + +### Proxy + +{{tffile "examples/resources/harbor_project/proxy.tf"}} + +## Schema + +### Required + +- `name` (String) The name of the project that will be created in harbor. + +### Optional + +- `cve_allowlist` (List of String) Project allowlist allows vulnerabilities in this list to be ignored in this project when pushing and pulling images. Should be in the format or `["CVE-123", "CVE-145"]` or `["CVE-123"]` +- `deployment_security` (String) Prevent deployment of images with vulnerability severity equal or higher than the specified value. Images must be scanned before this takes effect. Possible values: `"critical"`, `"high"`, `"medium"`, `"low"`, `"none"`. (Default: `""` - empty) +- `enable_content_trust` (Boolean) Enables Content Trust for project. When enabled it queries the embedded docker notary server. (Default: `false`). +- `enable_content_trust_cosign` (Boolean) Enables Content Trust Cosign for project. When enabled it queries Cosign. (Default: `false`) +- `force_destroy` (Boolean) A boolean that indicates all repositories should be deleted from the project so that the project can be destroyed without error. These repositories are *not* recoverable. +- `public` (Boolean) The project will be public accessibility.(Default: `false`) +- `registry_id` (Number) To enable project as Proxy Cache. +- `storage_quota` (Number) The storage quota of the project in GB's. +- `vulnerability_scanning` (Boolean) Images will be scanned for vulnerabilities when push to harbor. (Default: `true`) + +### Read-Only + +- `id` (String) The ID of this resource. +- `project_id` (Number) The project id of this resource. diff --git a/templates/resources/project_member_group.md.tmpl b/templates/resources/project_member_group.md.tmpl new file mode 100644 index 00000000..17e7542d --- /dev/null +++ b/templates/resources/project_member_group.md.tmpl @@ -0,0 +1,41 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_project_member_group Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_project_member_group (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_project_member_group/resource.tf"}} + +## Schema + +### Required + +- `project_id` (String) The project id of the project that the entity will have access to. +- `role` (String) The permissions that the entity will be granted. +- `type` (String) The group type. Can be set to `"ldap"`, `"internal"` or `"oidc"`. + +#### Notes +`type` can only be `oidc` when used with harbor version v1.10.1 and above. + +### Optional + +- `group_id` (Number) 3. Note: group type 3 is OIDC group. +- `group_name` (String) The name of the group member entity. +- `ldap_group_dn` (String) The distinguished name of the group within AD/LDAP. + +### Read-Only + +- `id` (String) The ID of this resource. +- `member_id` (Number) diff --git a/templates/resources/project_member_user.md.tmpl b/templates/resources/project_member_user.md.tmpl new file mode 100644 index 00000000..23ba7c54 --- /dev/null +++ b/templates/resources/project_member_user.md.tmpl @@ -0,0 +1,32 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_project_member_user Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_project_member_user (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_project_member_user/resource.tf"}} + +## Schema + +### Required + +- `project_id` (String) The project id of the project that the entity will have access to. +- `role` (String) The permissions that the entity will be granted. +- `user_name` (String) The name of the member entity. + +### Read-Only + +- `id` (String) The ID of this resource. +- `member_id` (Number) The member id of the member. diff --git a/templates/resources/project_webhook.md.tmpl b/templates/resources/project_webhook.md.tmpl new file mode 100644 index 00000000..24c119b7 --- /dev/null +++ b/templates/resources/project_webhook.md.tmpl @@ -0,0 +1,52 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_project_webhook Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_project_webhook (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_project_webhook/resource.tf"}} + +## Schema + +### Required + +- `address` (String) The address of the webhook. +- `events_types` (List of String) The type events you want to subscript to can be +- `name` (String) The name of the webhook that will be created in harbor. +- `notify_type` (String) The notification type either `http` or `slack`. +- `project_id` (String) The project id of the harbor that webhook related to. + +##### `events_types` Options + +- `DELETE_ARTIFACT` +- `PULL_ARTIFACT` +- `PUSH_ARTIFACT` +- `QUOTA_EXCEED` +- `QUOTA_WARNING` +- `REPLICATION` +- `SCANNING_FAILED` +- `SCANNING_COMPLETED` +- `TAG_RETENTION` + +### Optional + +- `auth_header` (String) authentication header for you the webhook. +- `description` (String) A description of the webhook. +- `enabled` (Boolean) To enable / disable the webhook. Default `true`. +- `skip_cert_verify` (Boolean) checks the for validate SSL certificate. + +### Read-Only + +- `id` (String) The ID of this resource. From dbfee5b293ee35c4f6f5e40a5e8116995d7054d1 Mon Sep 17 00:00:00 2001 From: Allen Conlon Date: Sat, 10 Feb 2024 11:09:29 -0500 Subject: [PATCH 3/8] Finished all the docs Signed-off-by: Allen Conlon --- docs/resources/purge-audit-log.md | 18 ---- docs/resources/purge_audit_log.md | 33 ++++++ docs/resources/registry.md | 65 +++++++----- docs/resources/replication.md | 77 +++++++------- docs/resources/retention_policy.md | 92 ++++++++-------- docs/resources/robot_account.md | 100 ++++++++---------- docs/resources/tasks.md | 26 ++++- docs/resources/user.md | 40 ++++--- .../harbor_purge_audit_log/resource.tf | 5 + .../resources/harbor_registry/resource.tf | 5 + .../resources/harbor_replication/resource.tf | 44 ++++++++ .../harbor_retention_policy/resource.tf | 18 ++++ .../resources/harbor_robot_account/project.tf | 21 ++++ .../harbor_robot_account/resource.tf | 39 +++++++ examples/resources/harbor_tasks/resource.tf | 3 + examples/resources/harbor_user/resource.tf | 6 ++ templates/resources/purge_audit_log.md.tmpl | 31 ++++++ templates/resources/registry.md.tmpl | 57 ++++++++++ templates/resources/replication.md.tmpl | 57 ++++++++++ templates/resources/retention_policy.md.tmpl | 52 +++++++++ templates/resources/robot_account.md.tmpl | 84 +++++++++++++++ templates/resources/tasks.md.tmpl | 29 +++++ templates/resources/user.md.tmpl | 37 +++++++ 23 files changed, 733 insertions(+), 206 deletions(-) delete mode 100644 docs/resources/purge-audit-log.md create mode 100644 docs/resources/purge_audit_log.md create mode 100644 examples/resources/harbor_purge_audit_log/resource.tf create mode 100644 examples/resources/harbor_registry/resource.tf create mode 100644 examples/resources/harbor_replication/resource.tf create mode 100644 examples/resources/harbor_retention_policy/resource.tf create mode 100644 examples/resources/harbor_robot_account/project.tf create mode 100644 examples/resources/harbor_robot_account/resource.tf create mode 100644 examples/resources/harbor_tasks/resource.tf create mode 100644 examples/resources/harbor_user/resource.tf create mode 100644 templates/resources/purge_audit_log.md.tmpl create mode 100644 templates/resources/registry.md.tmpl create mode 100644 templates/resources/replication.md.tmpl create mode 100644 templates/resources/retention_policy.md.tmpl create mode 100644 templates/resources/robot_account.md.tmpl create mode 100644 templates/resources/tasks.md.tmpl create mode 100644 templates/resources/user.md.tmpl diff --git a/docs/resources/purge-audit-log.md b/docs/resources/purge-audit-log.md deleted file mode 100644 index 95221d44..00000000 --- a/docs/resources/purge-audit-log.md +++ /dev/null @@ -1,18 +0,0 @@ -# Resource: harbor_purge_audit_log - -## Example Usage -```hcl -resource "harbor_purge_audit_log" "main" { - schedule = "Daily" - audit_retention_hour = 24 - include_operations = "create,pull" -} -``` - -## Argument Reference -The following arguments are supported: -* **schedule** - (Required) Sets the schedule how often the Garbage Collection will run. Can be to `"Hourly"`, `"Daily"`, `"Weekly"` or can be a custom cron string ie, `"5 4 * * *"` - -* **audit_retention_hour** - (Required) to configure how long audit logs should be kept. For example, if you set this to 24 Harbor will only purge audit logs that are 24 or more hours old. - -* **include_operations** - (Required) valid values are `create` `delete` `pull`, thoses values can be comma separated. When Create, Delete, or Pull is set, Harbor will include audit logs for those operations in the purge. \ No newline at end of file diff --git a/docs/resources/purge_audit_log.md b/docs/resources/purge_audit_log.md new file mode 100644 index 00000000..26c0ec64 --- /dev/null +++ b/docs/resources/purge_audit_log.md @@ -0,0 +1,33 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_purge_audit_log Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_purge_audit_log (Resource) + + + +## Example Usage + +```terraform +resource "harbor_purge_audit_log" "main" { + schedule = "Daily" + audit_retention_hour = 24 + include_operations = "create,pull" +} +``` + +## Schema + +### Required + +- `audit_retention_hour` (Number) To configure how long audit logs should be kept. For example, if you set this to 24 Harbor will only purge audit logs that are 24 or more hours old. +- `include_operations` (String) Valid values are `create` `delete` `pull`, thoses values can be comma separated. When Create, Delete, or Pull is set, Harbor will include audit logs for those operations in the purge. +- `schedule` (String) Sets the schedule how often the Garbage Collection will run. Can be to `"Hourly"`, `"Daily"`, `"Weekly"` or can be a custom cron string ie, `"5 4 * * *"` + +### Read-Only + +- `id` (String) The ID of this resource. diff --git a/docs/resources/registry.md b/docs/resources/registry.md index 231d3086..0e4b5954 100644 --- a/docs/resources/registry.md +++ b/docs/resources/registry.md @@ -1,10 +1,18 @@ -# Resource: harbor_registry +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_registry Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- +# harbor_registry (Resource) + ## Example Usage -```hcl +```terraform resource "harbor_registry" "main" { provider_name = "docker-hub" name = "test_docker_harbor" @@ -12,35 +20,40 @@ resource "harbor_registry" "main" { } ``` -## Argument Reference -The following arguments are supported: +## Schema -* **provider_name** - (Required) The name of the provider type. Supported values include `alibaba`, `artifact-hub`, `aws`, `azure`, `docker-hub`, `docker-registry`, `gitlab`, `github`, `google`, `harbor`, `helm`, `huawei`, `jfrog`, `quay` +### Required -* **name** - (Required) The name of the register. +- `endpoint_url` (String) The url endpoint for the external container register ie `"https://hub.docker.com"` +- `name` (String) The name of the register. +- `provider_name` (String) The name of the provider. -* **endpoint_url** - (Required) The url endpoint for the external container register ie, `https://hub.docker.com` +##### `provider_name` Options -* **description** - (Optional) The description of the external container register. +- ``alibaba` +- `artifact-hub` +- `aws` +- `azure` +- `docker-hub` +- `docker-registry` +- `gitlab` +- `github` +- `google` +- `harbor` +- `helm` +- `huawei` +- `jfrog` +- `quay` -* **access_id** - (Optional) The username / access id for the external container register +### Optional -* **access_secret** - (Optional) The password / access keys / token for the external container register +- `access_id` (String) The username / access id for the external container register. +- `access_secret` (String, Sensitive) The password / access keys / token for the external container register. +- `description` (String) The description of the external container register. +- `insecure` (Boolean) Verifies the certificate of the external container register. (Default: `false`) -* **insecure** - (Optional) Verifies the certificate of the external container register. Can be set to **"true"** or **"false"** (Default: false) +### Read-Only -* **enabled** - (Optional) enables / disables the external container register within harbor. Can be set to **"true"** or **"false"** (Default: true) - -## Attributes Reference -In addition to all argument, the following attributes are exported: - -* **registry_id** - The id of the register within harbor. - -* **status** - The health status of the external container register - -## Import -Harbor project can be imported using the `registry id` eg, - -` -terraform import harbor_registry.main /registries/7 -` +- `id` (String) The ID of this resource. +- `registry_id` (Number) +- `status` (String) diff --git a/docs/resources/replication.md b/docs/resources/replication.md index db17fe43..73ed7199 100644 --- a/docs/resources/replication.md +++ b/docs/resources/replication.md @@ -1,10 +1,18 @@ -# Resource: harbor_replication +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_replication Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- +# harbor_replication (Resource) + ## Example Usage -```hcl +```terraform resource "harbor_registry" "main" { provider_name = "docker-hub" name = "test_docker_harbor" @@ -12,7 +20,6 @@ resource "harbor_registry" "main" { } - resource "harbor_replication" "push" { name = "test_push" action = "push" @@ -50,52 +57,42 @@ resource "harbor_replication" "alpine" { tag = "3.*.*" } } - ``` -## Argument Reference -The following arguments are supported: - -* **name** - (Required) +## Schema -* **action** - (Required) +### Required -* **registry_id** - (Required) The registry ID of the Registry Endpoint - -* **speed** - (Optional) The Maximum network bandwidth in Kbps for each execution. Default is `-1` (unlimited). - -* **schedule** - (Optional) The scheduled time of when the container register will be push / pull. In cron base format. Hourly `"0 0 * * * *"`, Daily `"0 0 0 * * *"`, Monthly `"0 0 0 * * 0"`. Can be one of the following: `event_based`, `manual`, `cron format` (Default: `manual`) -* **override** - (Optional) Specify whether to override the resources at the destination if a resources with the same name exist. Can be set to `true` or `false` (Default: `true`) -* **enabled** - (Optional) Specify whether the replication is enabled. Can be set to `true` or `false` (Default: `true`) -* **description** - (Optional) Description of the replication policy. -* **dest_namespace** - (Optional) Specify the destination namespace. if empty, the resource will be put under the same namespace as the source. -* **dest_namespace_replace** - (Optional) Specify the destination namespace flattening policy. Integers from `-1` to `3` are valid values in the harbor API. A value of `-1` will 'Flatten All Levels', `0` means 'No Flattening', `1` 'Flatten 1 Level', `2` 'Flatten 2 Levels', `3` 'Flatten 3 Levels' (Default: `-1`, see [Replication Rules](https://goharbor.io/docs/latest/administration/configuring-replication/create-replication-rules/) for more details) -* **deletion** - (Optional) Specify whether to delete the remote resources when locally deleted. Can be set to `true` or `false` (Default: `false`) - -* **filters** - (Optional) A collection of `filters` block as documented below. -* **execute_on_changed** - (Optional) Specify whether to execute the replication rule if new or modified. Can be set to `true` or `false` (Default: `false`) - ---- +- `action` (String) +- `name` (String) The name of the replication. +- `registry_id` (Number) The registry ID of the Registry Endpoint. -**filters** supports the following: +### Optional -* **name** - (Optional) Filter on the name of the resource. -* **tag** - (Optional) Filter on the tag/version of the resource. - * **decoration** - (Optional) Matches or excludes the result. Can be one of the following. `matches`, `excludes` -* **labels** - (Optional, list ) Filter on the resource according to labels. - * **decoration** - (Optional) Matches or excludes the result. Can be one of the following. `matches`, `excludes` -* **resource** - (Optional) Filter on the resource type. Can be one of the following types. `chart`, `artifact` +- `deletion` (Boolean) Specify whether to delete the remote resources when locally deleted. (Default: `false`) +- `description` (String) Description of the replication policy. +- `dest_namespace` (String) Specify the destination namespace. if empty, the resource will be put under the same namespace as the source. +- `dest_namespace_replace` (Number) Specify the destination namespace flattening policy. Integers from `-1` to `3` are valid values in the harbor API. A value of `-1` will 'Flatten All Levels', `0` means 'No Flattening', `1` 'Flatten 1 Level', `2` 'Flatten 2 Levels', `3` 'Flatten 3 Levels' (Default: `-1`, see [Replication Rules](https://goharbor.io/docs/latest/administration/configuring-replication/create-replication-rules/) for more details) +- `enabled` (Boolean) Specify whether the replication is enabled. (Default: `true`) +- `execute_on_changed` (Boolean) Specify whether to execute the replication rule if new or modified. (Default: `false`) +- `filters` (Block Set) (see [below for nested schema](#nestedblock--filters)) +- `override` (Boolean) Specify whether to override the resources at the destination if a resources with the same name exist. (Default: `true`) +- `schedule` (String) The scheduled time of when the container register will be push / pull. In cron base format. Hourly `"0 0 * * * *"`, Daily `"0 0 0 * * *"`, Monthly `"0 0 0 * * 0"`. Can be one of the following: `event_based`, `manual`, `cron format` (Default: `manual`) +- `speed` (Number) The Maximum network bandwidth in Kbps for each execution. Default is `-1` (unlimited). +### Read-Only +- `id` (String) The ID of this resource. +- `replication_policy_id` (Number) -## Attributes Reference -In addition to all argument, the following attributes are exported: + -* **replication_policy_id** +### Nested Schema for `filters` -## Import -Harbor project can be imported using the `replication id` eg, +Optional: -` -terraform import harbor_replication.main /replication/policies/1 -` +- `decoration` (String) Matches or excludes the result. Can be one of the following. `matches`, `excludes` +- `labels` (List of String) Filter on the resource according to labels. +- `name` (String) Filter on the name of the resource. +- `resource` (String) Filter on the resource type. Can be one of the following types. `chart`, `artifact` +- `tag` (String) Filter on the tag/version of the resource. diff --git a/docs/resources/retention_policy.md b/docs/resources/retention_policy.md index 5f0eee0b..de237b04 100644 --- a/docs/resources/retention_policy.md +++ b/docs/resources/retention_policy.md @@ -1,59 +1,67 @@ -# Resource: harbor_retention_policy +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_retention_policy Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_retention_policy (Resource) + + ## Example Usage -```hcl +```terraform resource "harbor_project" "main" { - name = "acctest" + name = "acctest" } resource "harbor_retention_policy" "main" { - scope = harbor_project.main.id - schedule = "Daily" - rule { - n_days_since_last_pull = 5 - repo_matching = "**" - tag_matching = "latest" - } - rule { - n_days_since_last_push = 10 - repo_matching = "**" - tag_matching = "{latest,snapshot}" - } - + scope = harbor_project.main.id + schedule = "Daily" + rule { + n_days_since_last_pull = 5 + repo_matching = "**" + tag_matching = "latest" + } + rule { + n_days_since_last_push = 10 + repo_matching = "**" + tag_matching = "{latest,snapshot}" + } } ``` -## Argument Reference -The following arguments are supported: +## Schema -* `scope` - (Required) The project id of which you would like to apply this policy. +### Required -* `schedule` - (Optional) The schedule of when you would like the policy to run. This can be `Hourly`, `Daily`, `Weekly` or can be a custom cron string. +- `rule` (Block List, Min: 1, Max: 15) (see [below for nested schema](#nestedblock--rule)) +- `scope` (String) The project id of which you would like to apply this policy. -* `rule` - (Required) Al collection of rule blocks as documented below. +### Optional ---- -`rule` supports the following: -* `disabled`- (Optional) Specify if the rule is disable or not. Defaults to `false` -* `n_days_since_last_pull` - (Optional) retains the artifacts pulled within the lasts n days. -* `n_days_since_last_push` - (Optional) retains the artifacts pushed within the lasts n days. -* `most_recently_pulled` - (Optional) retain the most recently pulled n artifacts. -* `most_recently_pushed` - (Optional) retain the most recently pushed n artifacts. -* `always_retain` - (Optional) retain always. -* `repo_matching`- (Optional) For the repositories matching. -* `repo_excluding` - (Optional) For the repositories excuding. -* `tag_matching`- (Optional) For the tag matching. -* `tag_excluding` - (Optional) For the tag excuding. -* `untagged_artifacts`- (Optional) with untagged artifacts. Defaults to `true` - -~> Multiple tags or repositories must be provided as a comma-separated list wrapped into curly brackets `{ }`. Otherwise, the value is interpreted as a single value. +- `schedule` (String) The schedule of when you would like the policy to run. This can be `Hourly`, `Daily`, `Weekly` or can be a custom cron string. ---- +### Read-Only + +- `id` (String) The ID of this resource. + + + +### Nested Schema for `rule` -## Import -Harbor retention policy can be imported using the `retention_policy id` eg, +Optional: -` -terraform import harbor_retention_policy.main /retentions/10 -` +- `always_retain` (Boolean) retain always. +- `disabled` (Boolean) Specify if the rule is disable or not. Defaults to `false` +- `most_recently_pulled` (Number) retain the most recently pulled n artifacts. +- `most_recently_pushed` (Number) retain the most recently pushed n artifacts. +- `n_days_since_last_pull` (Number) retains the artifacts pulled within the lasts n days. +- `n_days_since_last_push` (Number) retains the artifacts pushed within the lasts n days. +- `repo_excluding` (String) For the repositories excluding. +- `repo_matching` (String) For the repositories matching. +- `tag_excluding` (String) For the tag excluding. +- `tag_matching` (String) For the tag matching. +- `untagged_artifacts` (Boolean) with untagged artifacts. Defaults to `true` diff --git a/docs/resources/robot_account.md b/docs/resources/robot_account.md index ea5cc8e7..7a48d57a 100644 --- a/docs/resources/robot_account.md +++ b/docs/resources/robot_account.md @@ -1,13 +1,23 @@ -# Resource: harbor_robot_account +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_robot_account Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_robot_account (Resource) -Harbor supports different levels of robot accounts. Currently `system` and `project` level robot accounts are supported. + ## Example Usage ### System Level Introduced in harbor 2.2.0, system level robot accounts can have basically [all available permissions](https://github.com/goharbor/harbor/blob/-/src/common/rbac/const.go) in harbor and are not dependent on a single project. -```hcl +### Global + +```terraform resource "random_password" "password" { length = 12 special = false @@ -54,13 +64,12 @@ The above example, creates a system level robot account with permissions to - pull repository across all projects - push repository to project "my-project-name" -### Project Level +### Project Other than system level robot accounts, project level robot accounts can interact on project level only. The [available permissions](https://github.com/goharbor/harbor/blob/-/src/common/rbac/const.go) are mostly the same as for system level robots. - -```hcl +```terraform resource "harbor_project" "main" { name = "main" } @@ -88,71 +97,46 @@ The above example creates a project level robot account with permissions to - pull repository on project "main" - push repository on project "main" +## Schema -## Argument Reference -The following arguments are supported: +### Required -* **name** - (string, required) The name of the project that will be created in harbor. +- `level` (String) Level of the robot account, currently either `system` or `project`. +- `name` (String) The name of the project that will be created in harbor. +- `permissions` (Block Set, Min: 1) (see [below for nested schema](#nestedblock--permissions)) -* **level** - (string, required) Level of the robot account, currently either `system` or `project`. +### Optional -* **description** - (string, optional) The description of the robot account will be displayed in harbor. +- `description` (String) The description of the robot account will be displayed in harbor. +- `disable` (Boolean) Disables the robot account when set to `true`. +- `duration` (Number) By default, the robot account will not expire. Set it to the amount of days until the account should expire. +- `secret` (String, Sensitive) The secret of the robot account used for authentication. Defaults to random generated string from Harbor. -* **duration** - (int, optional) By default, the robot account will not expire. Set it to the amount of days until the account should expire. +### Read-Only -* **disable** - (bool, optional) Disables the robot account when set to `true`. +- `full_name` (String) +- `id` (String) The ID of this resource. +- `robot_id` (String) -* **permissions** - (block, required) [Permissions](#permissions-arguments) to be applied to the robot account. - ``` - permissions { - access { - action = "action" - resource = "resource" - effect = "effect" - } - access { - ... - } - kind = "project" - namespace = harbor_project.main.name - } - permissions { - ... - } - ``` - **Note, that for `project` level accounts, only one `permission` block is allowed!** - - - -* **secret** - (string, optional) The secret of the robot account used for authentication. Defaults to random generated string from Harbor - -### Permissions Arguments -* **access** - (block, required) Define one or multiple [access blocks](#access-arguments). - -* **kind** - (string, required) Either `system` or `project`. - -* **namespace** - (string, required) namespace is the name of your project. - For kind `system` permissions, always use `/` as namespace. - Use `*` to match all projects. - -### Access Arguments -* **action** - (string, required) Eg. `push`, `pull`, `read`, etc. Check [available actions](https://github.com/goharbor/harbor/blob/-/src/common/rbac/const.go). + -* **resource** - (string, required) Eg. `repository`, `labels`, etc. Check [available resources](https://github.com/goharbor/harbor/blob/-/src/common/rbac/const.go). +### Nested Schema for `permissions` -* **effect** - (string, optional) Either `allow` or `deny`. Defaults to `allow`. +Required: +- `access` (Block Set, Min: 1) (see [below for nested schema](#nestedblock--permissions--access)) +- `kind` (String) Either `system` or `project`. +- `namespace` (String) namespace is the name of your project. For kind `system` permissions, always use `/` as namespace. Use `*` to match all projects. -## Attributes Reference -In addition to all argument, the following attributes are exported: + +### Nested Schema for `permissions.access` -* **full_name** - Full name of the robot account which harbor generates including the robot prefix. Eg. `robot$project+name` or `harbor@project+name` (depending on your robot prefix). +Required: -## Import -Harbor robot account can be imported using the `robot account id` eg, +- `action` (String) Eg. `push`, `pull`, `read`, etc. Check [available actions](https://github.com/goharbor/harbor/blob/-/src/common/rbac/const.go). +- `resource` (String) Eg. `repository`, `labels`, etc. Check [available resources](https://github.com/goharbor/harbor/blob/-/src/common/rbac/const.go). -` -terraform import harbor_robot_account.system /robots/123 -` +Optional: +- `effect` (String) Either `allow` or `deny`. Defaults to `allow`. diff --git a/docs/resources/tasks.md b/docs/resources/tasks.md index 3465cd3c..ae7ed1f0 100644 --- a/docs/resources/tasks.md +++ b/docs/resources/tasks.md @@ -1,13 +1,29 @@ -# Resource: harbor_tasks +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_tasks Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_tasks (Resource) + + ## Example Usage -```hcl + +```terraform resource "harbor_tasks" "main" { vulnerability_scan_policy = "daily" } ``` -## Argument Reference -The following arguments are supported: +## Schema + +### Required + +- `vulnerability_scan_policy` (String) The frequency of the vulnerability scanning is done. Can be to **"hourly"**, **"daily"** or **"weekly"** + +### Read-Only -* **vulnerability_scan_policy** - (Optional) The frequency of the vulnerability scanning is done. Can be to **"hourly"**, **"daily"** or **"weekly"** \ No newline at end of file +- `id` (String) The ID of this resource. diff --git a/docs/resources/user.md b/docs/resources/user.md index eb79f391..748c7d47 100644 --- a/docs/resources/user.md +++ b/docs/resources/user.md @@ -1,8 +1,18 @@ -# Resource: harbor_user +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_user Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +# harbor_user (Resource) + + ## Example Usage -```hcl +```terraform resource "harbor_user" "main" { username = "john" password = "Password12345!" @@ -11,24 +21,20 @@ resource "harbor_user" "main" { } ``` -## Argument Reference -The following arguments are supported: - -* **username** - (Required) The username of the internal user. - -* **password** - (Required) The password for the internal user. +## Schema -* **full_name** - (Required) The Full Name of the internal user. +### Required -* **email** - (Required) The email address of the internal user. +- `email` (String) The email address of the internal user. +- `full_name` (String) The Full Name of the internal user. +- `password` (String, Sensitive) The password for the internal user. +- `username` (String) The username of the internal user. -* **comment** - (Optional) Any comments for that are need for the internal user. +### Optional -* **admin** - (Optional) If the user will have admin rights within Harbor (Default: **false**) +- `admin` (Boolean) If the user will have admin rights within Harbor (Default: `false`) +- `comment` (String) Any comments for that are need for the internal user. -## Import -An internal user harbor user can be imported using the `user id` eg, +### Read-Only -` -terraform import harbor_user.main /users/19 -` \ No newline at end of file +- `id` (String) The ID of this resource. diff --git a/examples/resources/harbor_purge_audit_log/resource.tf b/examples/resources/harbor_purge_audit_log/resource.tf new file mode 100644 index 00000000..e3b11ea3 --- /dev/null +++ b/examples/resources/harbor_purge_audit_log/resource.tf @@ -0,0 +1,5 @@ +resource "harbor_purge_audit_log" "main" { + schedule = "Daily" + audit_retention_hour = 24 + include_operations = "create,pull" +} diff --git a/examples/resources/harbor_registry/resource.tf b/examples/resources/harbor_registry/resource.tf new file mode 100644 index 00000000..d3d28938 --- /dev/null +++ b/examples/resources/harbor_registry/resource.tf @@ -0,0 +1,5 @@ +resource "harbor_registry" "main" { + provider_name = "docker-hub" + name = "test_docker_harbor" + endpoint_url = "https://hub.docker.com" +} diff --git a/examples/resources/harbor_replication/resource.tf b/examples/resources/harbor_replication/resource.tf new file mode 100644 index 00000000..999e638e --- /dev/null +++ b/examples/resources/harbor_replication/resource.tf @@ -0,0 +1,44 @@ +resource "harbor_registry" "main" { + provider_name = "docker-hub" + name = "test_docker_harbor" + endpoint_url = "https://hub.docker.com" + +} + +resource "harbor_replication" "push" { + name = "test_push" + action = "push" + registry_id = harbor_registry.main.registry_id +} + +resource "harbor_replication" "alpine" { + name = "alpine" + action = "pull" + registry_id = harbor_registry.main.registry_id + schedule = "0 0/15 * * * *" + filters { + name = "library/alpine" + } + filters { + tag = "3.*.*" + } + filters { + resource = "artifact" + } + filters { + labels = ["qa"] + } +} + +resource "harbor_replication" "alpine" { + name = "alpine" + action = "pull" + registry_id = harbor_registry.main.registry_id + schedule = "event_based" + filters { + name = "library/alpine" + } + filters { + tag = "3.*.*" + } +} diff --git a/examples/resources/harbor_retention_policy/resource.tf b/examples/resources/harbor_retention_policy/resource.tf new file mode 100644 index 00000000..fc0affbe --- /dev/null +++ b/examples/resources/harbor_retention_policy/resource.tf @@ -0,0 +1,18 @@ +resource "harbor_project" "main" { + name = "acctest" +} + +resource "harbor_retention_policy" "main" { + scope = harbor_project.main.id + schedule = "Daily" + rule { + n_days_since_last_pull = 5 + repo_matching = "**" + tag_matching = "latest" + } + rule { + n_days_since_last_push = 10 + repo_matching = "**" + tag_matching = "{latest,snapshot}" + } +} diff --git a/examples/resources/harbor_robot_account/project.tf b/examples/resources/harbor_robot_account/project.tf new file mode 100644 index 00000000..8ae0e087 --- /dev/null +++ b/examples/resources/harbor_robot_account/project.tf @@ -0,0 +1,21 @@ +resource "harbor_project" "main" { + name = "main" +} + +resource "harbor_robot_account" "project" { + name = "example-project" + description = "project level robot account" + level = "project" + permissions { + access { + action = "pull" + resource = "repository" + } + access { + action = "push" + resource = "repository" + } + kind = "project" + namespace = harbor_project.main.name + } +} diff --git a/examples/resources/harbor_robot_account/resource.tf b/examples/resources/harbor_robot_account/resource.tf new file mode 100644 index 00000000..da62ae14 --- /dev/null +++ b/examples/resources/harbor_robot_account/resource.tf @@ -0,0 +1,39 @@ +resource "random_password" "password" { + length = 12 + special = false +} + +resource "harbor_project" "main" { + name = "main" +} + +resource "harbor_robot_account" "system" { + name = "example-system" + description = "system level robot account" + level = "system" + secret = resource.random_password.password.result + permissions { + access { + action = "create" + resource = "labels" + } + kind = "system" + namespace = "/" + } + permissions { + access { + action = "push" + resource = "repository" + } + kind = "project" + namespace = harbor_project.main.name + } + permissions { + access { + action = "pull" + resource = "repository" + } + kind = "project" + namespace = "*" + } +} diff --git a/examples/resources/harbor_tasks/resource.tf b/examples/resources/harbor_tasks/resource.tf new file mode 100644 index 00000000..657ed21e --- /dev/null +++ b/examples/resources/harbor_tasks/resource.tf @@ -0,0 +1,3 @@ +resource "harbor_tasks" "main" { + vulnerability_scan_policy = "daily" +} diff --git a/examples/resources/harbor_user/resource.tf b/examples/resources/harbor_user/resource.tf new file mode 100644 index 00000000..fb8b14bd --- /dev/null +++ b/examples/resources/harbor_user/resource.tf @@ -0,0 +1,6 @@ +resource "harbor_user" "main" { + username = "john" + password = "Password12345!" + full_name = "John Smith" + email = "john@smith.com" +} diff --git a/templates/resources/purge_audit_log.md.tmpl b/templates/resources/purge_audit_log.md.tmpl new file mode 100644 index 00000000..adc66d0e --- /dev/null +++ b/templates/resources/purge_audit_log.md.tmpl @@ -0,0 +1,31 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_purge_audit_log Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_purge_audit_log (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_purge_audit_log/resource.tf"}} + +## Schema + +### Required + +- `audit_retention_hour` (Number) To configure how long audit logs should be kept. For example, if you set this to 24 Harbor will only purge audit logs that are 24 or more hours old. +- `include_operations` (String) Valid values are `create` `delete` `pull`, thoses values can be comma separated. When Create, Delete, or Pull is set, Harbor will include audit logs for those operations in the purge. +- `schedule` (String) Sets the schedule how often the Garbage Collection will run. Can be to `"Hourly"`, `"Daily"`, `"Weekly"` or can be a custom cron string ie, `"5 4 * * *"` + +### Read-Only + +- `id` (String) The ID of this resource. diff --git a/templates/resources/registry.md.tmpl b/templates/resources/registry.md.tmpl new file mode 100644 index 00000000..d6340a59 --- /dev/null +++ b/templates/resources/registry.md.tmpl @@ -0,0 +1,57 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_registry Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_registry (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_registry/resource.tf"}} + +## Schema + +### Required + +- `endpoint_url` (String) The url endpoint for the external container register ie `"https://hub.docker.com"` +- `name` (String) The name of the register. +- `provider_name` (String) The name of the provider. + +##### `provider_name` Options + +- ``alibaba` +- `artifact-hub` +- `aws` +- `azure` +- `docker-hub` +- `docker-registry` +- `gitlab` +- `github` +- `google` +- `harbor` +- `helm` +- `huawei` +- `jfrog` +- `quay` + +### Optional + +- `access_id` (String) The username / access id for the external container register. +- `access_secret` (String, Sensitive) The password / access keys / token for the external container register. +- `description` (String) The description of the external container register. +- `insecure` (Boolean) Verifies the certificate of the external container register. (Default: `false`) + +### Read-Only + +- `id` (String) The ID of this resource. +- `registry_id` (Number) +- `status` (String) diff --git a/templates/resources/replication.md.tmpl b/templates/resources/replication.md.tmpl new file mode 100644 index 00000000..6fb42447 --- /dev/null +++ b/templates/resources/replication.md.tmpl @@ -0,0 +1,57 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_replication Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_replication (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_replication/resource.tf"}} + +## Schema + +### Required + +- `action` (String) +- `name` (String) The name of the replication. +- `registry_id` (Number) The registry ID of the Registry Endpoint. + +### Optional + +- `deletion` (Boolean) Specify whether to delete the remote resources when locally deleted. (Default: `false`) +- `description` (String) Description of the replication policy. +- `dest_namespace` (String) Specify the destination namespace. if empty, the resource will be put under the same namespace as the source. +- `dest_namespace_replace` (Number) Specify the destination namespace flattening policy. Integers from `-1` to `3` are valid values in the harbor API. A value of `-1` will 'Flatten All Levels', `0` means 'No Flattening', `1` 'Flatten 1 Level', `2` 'Flatten 2 Levels', `3` 'Flatten 3 Levels' (Default: `-1`, see [Replication Rules](https://goharbor.io/docs/latest/administration/configuring-replication/create-replication-rules/) for more details) +- `enabled` (Boolean) Specify whether the replication is enabled. (Default: `true`) +- `execute_on_changed` (Boolean) Specify whether to execute the replication rule if new or modified. (Default: `false`) +- `filters` (Block Set) (see [below for nested schema](#nestedblock--filters)) +- `override` (Boolean) Specify whether to override the resources at the destination if a resources with the same name exist. (Default: `true`) +- `schedule` (String) The scheduled time of when the container register will be push / pull. In cron base format. Hourly `"0 0 * * * *"`, Daily `"0 0 0 * * *"`, Monthly `"0 0 0 * * 0"`. Can be one of the following: `event_based`, `manual`, `cron format` (Default: `manual`) +- `speed` (Number) The Maximum network bandwidth in Kbps for each execution. Default is `-1` (unlimited). + +### Read-Only + +- `id` (String) The ID of this resource. +- `replication_policy_id` (Number) + + + +### Nested Schema for `filters` + +Optional: + +- `decoration` (String) Matches or excludes the result. Can be one of the following. `matches`, `excludes` +- `labels` (List of String) Filter on the resource according to labels. +- `name` (String) Filter on the name of the resource. +- `resource` (String) Filter on the resource type. Can be one of the following types. `chart`, `artifact` +- `tag` (String) Filter on the tag/version of the resource. diff --git a/templates/resources/retention_policy.md.tmpl b/templates/resources/retention_policy.md.tmpl new file mode 100644 index 00000000..cc5bb49c --- /dev/null +++ b/templates/resources/retention_policy.md.tmpl @@ -0,0 +1,52 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_retention_policy Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_retention_policy (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_retention_policy/resource.tf"}} + +## Schema + +### Required + +- `rule` (Block List, Min: 1, Max: 15) (see [below for nested schema](#nestedblock--rule)) +- `scope` (String) The project id of which you would like to apply this policy. + +### Optional + +- `schedule` (String) The schedule of when you would like the policy to run. This can be `Hourly`, `Daily`, `Weekly` or can be a custom cron string. + +### Read-Only + +- `id` (String) The ID of this resource. + + + +### Nested Schema for `rule` + +Optional: + +- `always_retain` (Boolean) retain always. +- `disabled` (Boolean) Specify if the rule is disable or not. Defaults to `false` +- `most_recently_pulled` (Number) retain the most recently pulled n artifacts. +- `most_recently_pushed` (Number) retain the most recently pushed n artifacts. +- `n_days_since_last_pull` (Number) retains the artifacts pulled within the lasts n days. +- `n_days_since_last_push` (Number) retains the artifacts pushed within the lasts n days. +- `repo_excluding` (String) For the repositories excluding. +- `repo_matching` (String) For the repositories matching. +- `tag_excluding` (String) For the tag excluding. +- `tag_matching` (String) For the tag matching. +- `untagged_artifacts` (Boolean) with untagged artifacts. Defaults to `true` diff --git a/templates/resources/robot_account.md.tmpl b/templates/resources/robot_account.md.tmpl new file mode 100644 index 00000000..0aebe5c2 --- /dev/null +++ b/templates/resources/robot_account.md.tmpl @@ -0,0 +1,84 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_robot_account Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_robot_account (Resource) + + + +## Example Usage + +### System Level +Introduced in harbor 2.2.0, system level robot accounts can have basically [all available permissions](https://github.com/goharbor/harbor/blob/-/src/common/rbac/const.go) in harbor and are not dependent on a single project. + +### Global + +{{tffile "examples/resources/harbor_robot_account/resource.tf"}} + +The above example, creates a system level robot account with permissions to +- permission to create labels on system level +- pull repository across all projects +- push repository to project "my-project-name" + +### Project + +Other than system level robot accounts, project level robot accounts can interact on project level only. +The [available permissions](https://github.com/goharbor/harbor/blob/-/src/common/rbac/const.go) are mostly the same as for system level robots. + +{{tffile "examples/resources/harbor_robot_account/project.tf"}} + +The above example creates a project level robot account with permissions to +- pull repository on project "main" +- push repository on project "main" + +## Schema + +### Required + +- `level` (String) Level of the robot account, currently either `system` or `project`. +- `name` (String) The name of the project that will be created in harbor. +- `permissions` (Block Set, Min: 1) (see [below for nested schema](#nestedblock--permissions)) + +### Optional + +- `description` (String) The description of the robot account will be displayed in harbor. +- `disable` (Boolean) Disables the robot account when set to `true`. +- `duration` (Number) By default, the robot account will not expire. Set it to the amount of days until the account should expire. +- `secret` (String, Sensitive) The secret of the robot account used for authentication. Defaults to random generated string from Harbor. + +### Read-Only + +- `full_name` (String) +- `id` (String) The ID of this resource. +- `robot_id` (String) + + + +### Nested Schema for `permissions` + +Required: + +- `access` (Block Set, Min: 1) (see [below for nested schema](#nestedblock--permissions--access)) +- `kind` (String) Either `system` or `project`. +- `namespace` (String) namespace is the name of your project. For kind `system` permissions, always use `/` as namespace. Use `*` to match all projects. + + + +### Nested Schema for `permissions.access` + +Required: + +- `action` (String) Eg. `push`, `pull`, `read`, etc. Check [available actions](https://github.com/goharbor/harbor/blob/-/src/common/rbac/const.go). +- `resource` (String) Eg. `repository`, `labels`, etc. Check [available resources](https://github.com/goharbor/harbor/blob/-/src/common/rbac/const.go). + +Optional: + +- `effect` (String) Either `allow` or `deny`. Defaults to `allow`. diff --git a/templates/resources/tasks.md.tmpl b/templates/resources/tasks.md.tmpl new file mode 100644 index 00000000..7af4d8ea --- /dev/null +++ b/templates/resources/tasks.md.tmpl @@ -0,0 +1,29 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_tasks Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_tasks (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_tasks/resource.tf"}} + +## Schema + +### Required + +- `vulnerability_scan_policy` (String) The frequency of the vulnerability scanning is done. Can be to **"hourly"**, **"daily"** or **"weekly"** + +### Read-Only + +- `id` (String) The ID of this resource. diff --git a/templates/resources/user.md.tmpl b/templates/resources/user.md.tmpl new file mode 100644 index 00000000..0f1e190f --- /dev/null +++ b/templates/resources/user.md.tmpl @@ -0,0 +1,37 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "harbor_user Resource - terraform-provider-harbor" +subcategory: "" +description: |- + +--- + +{{/* This template serves as a starting point for documentation generation, and can be customized with hardcoded values and/or doc gen templates. + +For example, the {{ .SchemaMarkdown }} template can be used to replace manual schema documentation if descriptions of schema attributes are added in the provider source code. */ -}} + +# harbor_user (Resource) + + + +## Example Usage + +{{tffile "examples/resources/harbor_user/resource.tf"}} + +## Schema + +### Required + +- `email` (String) The email address of the internal user. +- `full_name` (String) The Full Name of the internal user. +- `password` (String, Sensitive) The password for the internal user. +- `username` (String) The username of the internal user. + +### Optional + +- `admin` (Boolean) If the user will have admin rights within Harbor (Default: `false`) +- `comment` (String) Any comments for that are need for the internal user. + +### Read-Only + +- `id` (String) The ID of this resource. From 252d91103e294f93dcdacabba861ba6ccf6c8407 Mon Sep 17 00:00:00 2001 From: Allen Conlon Date: Sat, 10 Feb 2024 11:51:11 -0500 Subject: [PATCH 4/8] Removed `helm` type from registry Signed-off-by: Allen Conlon --- docs/resources/registry.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/resources/registry.md b/docs/resources/registry.md index 0e4b5954..2433b86b 100644 --- a/docs/resources/registry.md +++ b/docs/resources/registry.md @@ -40,7 +40,6 @@ resource "harbor_registry" "main" { - `github` - `google` - `harbor` -- `helm` - `huawei` - `jfrog` - `quay` From 480df60123e9d0b236e749e84afb1fd69567378e Mon Sep 17 00:00:00 2001 From: Allen Conlon Date: Sun, 11 Feb 2024 08:43:30 -0500 Subject: [PATCH 5/8] Removed `helm` from template file Signed-off-by: Allen Conlon --- templates/resources/registry.md.tmpl | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/resources/registry.md.tmpl b/templates/resources/registry.md.tmpl index d6340a59..2906e28e 100644 --- a/templates/resources/registry.md.tmpl +++ b/templates/resources/registry.md.tmpl @@ -38,7 +38,6 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc - `github` - `google` - `harbor` -- `helm` - `huawei` - `jfrog` - `quay` From d3dc0edaf9cc210296ed01ebce37fc8ca8c85bde Mon Sep 17 00:00:00 2001 From: Allen Conlon Date: Wed, 28 Feb 2024 17:42:18 -0500 Subject: [PATCH 6/8] Added Github actions for checking the docs Signed-off-by: Allen Conlon --- .github/workflows/tfplugindocs-check.yml | 49 + Makefile | 18 + tools/go.mod | 226 +++++ tools/go.sum | 1068 ++++++++++++++++++++++ tools/main.go | 10 + 5 files changed, 1371 insertions(+) create mode 100644 .github/workflows/tfplugindocs-check.yml create mode 100644 Makefile create mode 100644 tools/go.mod create mode 100644 tools/go.sum create mode 100644 tools/main.go diff --git a/.github/workflows/tfplugindocs-check.yml b/.github/workflows/tfplugindocs-check.yml new file mode 100644 index 00000000..cb35bc7d --- /dev/null +++ b/.github/workflows/tfplugindocs-check.yml @@ -0,0 +1,49 @@ +# source https://github.com/hashicorp/terraform-provider-awscc/blob/main/.github/workflows/tfplugindocs-check.yml + +name: Check if tfplugindocs result matches /docs + +on: + push: + branches: + - main + - "release/**" + pull_request: + paths: + - .github/workflows/tfplugindocs-check.yml + - go.sum + - Makefile + - client/** + - main.go + - docs/** + +jobs: + tfplugindocs_check: + name: tfplugindocs check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4.1.1 + - uses: actions/setup-go@v5.0.0 + with: + go-version-file: tools/go.mod + - name: GOCACHE + run: | + echo "GOCACHE=$(go env GOCACHE)" >> $GITHUB_ENV + - uses: actions/cache@v4.0.0 + continue-on-error: true + timeout-minutes: 2 + with: + # TODO: Replace with supported mechanism when it is supported + # https://github.com/actions/setup-go/issues/54 + path: ${{ env.GOCACHE }} + key: ${{ runner.os }}-GOCACHE-${{ hashFiles('go.sum') }}-${{ hashFiles('internal/**') }} + - uses: actions/cache@v4.0.0 + continue-on-error: true + timeout-minutes: 2 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-pkg-mod-${{ hashFiles('go.sum') }} + - run: | + make tools + make docs + git add -N docs/ + git diff --exit-code diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..9000d166 --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +ACCTEST_PARALLELISM ?= 20 +GO_VER ?= go + +default: tools + +.PHONY: tools docs default + +all: tools docs + +tools: + cd tools && $(GO_VER) install github.com/golangci/golangci-lint/cmd/golangci-lint + cd tools && $(GO_VER) install github.com/pavius/impi/cmd/impi + cd tools && $(GO_VER) install github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs + +docs: + rm -f docs/data-sources/*.md + rm -f docs/resources/*.md + @tfplugindocs generate diff --git a/tools/go.mod b/tools/go.mod new file mode 100644 index 00000000..03b86dc2 --- /dev/null +++ b/tools/go.mod @@ -0,0 +1,226 @@ +module github.com/hashicorp/terraform-provider-awscc/tools + +go 1.21 + +require ( + github.com/client9/misspell v0.3.4 + github.com/golangci/golangci-lint v1.56.2 + github.com/hashicorp/terraform-plugin-docs v0.18.0 + github.com/pavius/impi v0.0.3 +) + +require ( + 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect + 4d63.com/gochecknoglobals v0.2.1 // indirect + github.com/4meepo/tagalign v1.3.3 // indirect + github.com/Abirdcfly/dupword v0.0.13 // indirect + github.com/Antonboom/errname v0.1.12 // indirect + github.com/Antonboom/nilnil v0.1.7 // indirect + github.com/Antonboom/testifylint v1.1.2 // indirect + github.com/BurntSushi/toml v1.3.2 // indirect + github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect + github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0 // indirect + github.com/Kunde21/markdownfmt/v3 v3.1.0 // indirect + github.com/Masterminds/goutils v1.1.1 // indirect + github.com/Masterminds/semver v1.5.0 // indirect + github.com/Masterminds/semver/v3 v3.2.0 // indirect + github.com/Masterminds/sprig/v3 v3.2.3 // indirect + github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect + github.com/alecthomas/go-check-sumtype v0.1.4 // indirect + github.com/alexkohler/nakedret/v2 v2.0.2 // indirect + github.com/alexkohler/prealloc v1.0.0 // indirect + github.com/alingse/asasalint v0.0.11 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/armon/go-radix v1.0.0 // indirect + github.com/ashanbrown/forbidigo v1.6.0 // indirect + github.com/ashanbrown/makezero v1.1.1 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/speakeasy v0.1.0 // indirect + github.com/bkielbasa/cyclop v1.2.1 // indirect + github.com/blizzy78/varnamelen v0.8.0 // indirect + github.com/bombsimon/wsl/v4 v4.2.1 // indirect + github.com/breml/bidichk v0.2.7 // indirect + github.com/breml/errchkjson v0.3.6 // indirect + github.com/butuzov/ireturn v0.3.0 // indirect + github.com/butuzov/mirror v1.1.0 // indirect + github.com/catenacyber/perfsprint v0.6.0 // indirect + github.com/ccojocar/zxcvbn-go v1.0.2 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/charithe/durationcheck v0.0.10 // indirect + github.com/chavacava/garif v0.1.0 // indirect + github.com/cloudflare/circl v1.3.7 // indirect + github.com/curioswitch/go-reassign v0.2.0 // indirect + github.com/daixiang0/gci v0.12.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/denis-tingaikin/go-header v0.4.3 // indirect + github.com/esimonov/ifshort v1.0.4 // indirect + github.com/ettle/strcase v0.2.0 // indirect + github.com/fatih/color v1.16.0 // indirect + github.com/fatih/structtag v1.2.0 // indirect + github.com/firefart/nonamedreturns v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/fzipp/gocyclo v0.6.0 // indirect + github.com/ghostiam/protogetter v0.3.4 // indirect + github.com/go-critic/go-critic v0.11.1 // indirect + github.com/go-toolsmith/astcast v1.1.0 // indirect + github.com/go-toolsmith/astcopy v1.1.0 // indirect + github.com/go-toolsmith/astequal v1.2.0 // indirect + github.com/go-toolsmith/astfmt v1.1.0 // indirect + github.com/go-toolsmith/astp v1.1.0 // indirect + github.com/go-toolsmith/strparse v1.1.0 // indirect + github.com/go-toolsmith/typep v1.1.0 // indirect + github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect + github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/gofrs/flock v0.8.1 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect + github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect + github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe // indirect + github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e // indirect + github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect + github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect + github.com/golangci/misspell v0.4.1 // indirect + github.com/golangci/revgrep v0.5.2 // indirect + github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gordonklaus/ineffassign v0.1.0 // indirect + github.com/gostaticanalysis/analysisutil v0.7.1 // indirect + github.com/gostaticanalysis/comment v1.4.2 // indirect + github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect + github.com/gostaticanalysis/nilerr v0.1.1 // indirect + github.com/hashicorp/cli v1.1.6 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-checkpoint v0.5.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/hc-install v0.6.2 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/terraform-exec v0.20.0 // indirect + github.com/hashicorp/terraform-json v0.21.0 // indirect + github.com/hexops/gotextdiff v1.0.3 // indirect + github.com/huandu/xstrings v1.3.3 // indirect + github.com/imdario/mergo v0.3.15 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jgautheron/goconst v1.7.0 // indirect + github.com/jingyugao/rowserrcheck v1.1.1 // indirect + github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect + github.com/jjti/go-spancheck v0.5.2 // indirect + github.com/julz/importas v0.1.0 // indirect + github.com/kisielk/errcheck v1.7.0 // indirect + github.com/kisielk/gotool v1.0.0 // indirect + github.com/kkHAIKE/contextcheck v1.1.4 // indirect + github.com/kulti/thelper v0.6.3 // indirect + github.com/kunwardeep/paralleltest v1.0.9 // indirect + github.com/kyoh86/exportloopref v0.1.11 // indirect + github.com/ldez/gomoddirectives v0.2.3 // indirect + github.com/ldez/tagliatelle v0.5.0 // indirect + github.com/leonklingele/grouper v1.1.1 // indirect + github.com/lufeee/execinquery v1.2.1 // indirect + github.com/macabu/inamedparam v0.1.3 // indirect + github.com/magiconair/properties v1.8.6 // indirect + github.com/maratori/testableexamples v1.0.0 // indirect + github.com/maratori/testpackage v1.1.1 // indirect + github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/mbilski/exhaustivestruct v1.2.0 // indirect + github.com/mgechev/revive v1.3.7 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moricho/tparallel v0.3.1 // indirect + github.com/nakabonne/nestif v0.3.1 // indirect + github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect + github.com/nishanths/exhaustive v0.12.0 // indirect + github.com/nishanths/predeclared v0.2.2 // indirect + github.com/nunnatsa/ginkgolinter v0.15.2 // indirect + github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.0.5 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/polyfloyd/go-errorlint v1.4.8 // indirect + github.com/posener/complete v1.2.3 // indirect + github.com/prometheus/client_golang v1.12.1 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.32.1 // indirect + github.com/prometheus/procfs v0.7.3 // indirect + github.com/quasilyte/go-ruleguard v0.4.0 // indirect + github.com/quasilyte/gogrep v0.5.0 // indirect + github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect + github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect + github.com/russross/blackfriday v1.6.0 // indirect + github.com/ryancurrah/gomodguard v1.3.0 // indirect + github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect + github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect + github.com/sashamelentyev/interfacebloat v1.1.0 // indirect + github.com/sashamelentyev/usestdlibvars v1.25.0 // indirect + github.com/securego/gosec/v2 v2.19.0 // indirect + github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect + github.com/shopspring/decimal v1.3.1 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/sivchari/containedctx v1.0.3 // indirect + github.com/sivchari/nosnakecase v1.7.0 // indirect + github.com/sivchari/tenv v1.7.1 // indirect + github.com/sonatard/noctx v0.0.2 // indirect + github.com/sourcegraph/go-diff v0.7.0 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/cobra v1.7.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.13.0 // indirect + github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect + github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect + github.com/stretchr/objx v0.5.0 // indirect + github.com/stretchr/testify v1.8.4 // indirect + github.com/subosito/gotenv v1.4.1 // indirect + github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect + github.com/tdakkota/asciicheck v0.2.0 // indirect + github.com/tetafro/godot v1.4.16 // indirect + github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 // indirect + github.com/timonwong/loggercheck v0.9.4 // indirect + github.com/tomarrell/wrapcheck/v2 v2.8.1 // indirect + github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect + github.com/ultraware/funlen v0.1.0 // indirect + github.com/ultraware/whitespace v0.1.0 // indirect + github.com/uudashr/gocognit v1.1.2 // indirect + github.com/xen0n/gosmopolitan v1.2.2 // indirect + github.com/yagipy/maintidx v1.0.0 // indirect + github.com/yeya24/promlinter v0.2.0 // indirect + github.com/ykadowak/zerologlint v0.1.5 // indirect + github.com/yuin/goldmark v1.6.0 // indirect + github.com/yuin/goldmark-meta v1.1.0 // indirect + github.com/zclconf/go-cty v1.14.1 // indirect + gitlab.com/bosi/decorder v0.4.1 // indirect + go-simpler.org/musttag v0.8.0 // indirect + go-simpler.org/sloglint v0.4.0 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.24.0 // indirect + golang.org/x/crypto v0.19.0 // indirect + golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect + golang.org/x/exp/typeparams v0.0.0-20231219180239-dc181d75b848 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/sync v0.6.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/tools v0.18.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect + gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + honnef.co/go/tools v0.4.6 // indirect + mvdan.cc/gofumpt v0.6.0 // indirect + mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect + mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect + mvdan.cc/unparam v0.0.0-20240104100049-c549a3470d14 // indirect +) diff --git a/tools/go.sum b/tools/go.sum new file mode 100644 index 00000000..d9b98636 --- /dev/null +++ b/tools/go.sum @@ -0,0 +1,1068 @@ +4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= +4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= +4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= +4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/4meepo/tagalign v1.3.3 h1:ZsOxcwGD/jP4U/aw7qeWu58i7dwYemfy5Y+IF1ACoNw= +github.com/4meepo/tagalign v1.3.3/go.mod h1:Q9c1rYMZJc9dPRkbQPpcBNCLEmY2njbAsXhQOZFE2dE= +github.com/Abirdcfly/dupword v0.0.13 h1:SMS17YXypwP000fA7Lr+kfyBQyW14tTT+nRv9ASwUUo= +github.com/Abirdcfly/dupword v0.0.13/go.mod h1:Ut6Ue2KgF/kCOawpW4LnExT+xZLQviJPE4klBPMK/5Y= +github.com/Antonboom/errname v0.1.12 h1:oh9ak2zUtsLp5oaEd/erjB4GPu9w19NyoIskZClDcQY= +github.com/Antonboom/errname v0.1.12/go.mod h1:bK7todrzvlaZoQagP1orKzWXv59X/x0W0Io2XT1Ssro= +github.com/Antonboom/nilnil v0.1.7 h1:ofgL+BA7vlA1K2wNQOsHzLJ2Pw5B5DpWRLdDAVvvTow= +github.com/Antonboom/nilnil v0.1.7/go.mod h1:TP+ScQWVEq0eSIxqU8CbdT5DFWoHp0MbP+KMUO1BKYQ= +github.com/Antonboom/testifylint v1.1.2 h1:IdLRermiLRogxY5AumBL4sP0A+qKHQM/AP1Xd7XOTKc= +github.com/Antonboom/testifylint v1.1.2/go.mod h1:9PFi+vWa8zzl4/B/kqmFJcw85ZUv8ReyBzuQCd30+WI= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= +github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0 h1:sATXp1x6/axKxz2Gjxv8MALP0bXaNRfQinEwyfMcx8c= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0/go.mod h1:Nl76DrGNJTA1KJ0LePKBw/vznBX1EHbAZX8mwjR82nI= +github.com/Kunde21/markdownfmt/v3 v3.1.0 h1:KiZu9LKs+wFFBQKhrZJrFZwtLnCCWJahL+S+E/3VnM0= +github.com/Kunde21/markdownfmt/v3 v3.1.0/go.mod h1:tPXN1RTyOzJwhfHoon9wUr4HGYmWgVxSQN6VBJDkrVc= +github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= +github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= +github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= +github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA= +github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= +github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= +github.com/alecthomas/go-check-sumtype v0.1.4 h1:WCvlB3l5Vq5dZQTFmodqL2g68uHiSwwlWcT5a2FGK0c= +github.com/alecthomas/go-check-sumtype v0.1.4/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ= +github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk= +github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alexkohler/nakedret/v2 v2.0.2 h1:qnXuZNvv3/AxkAb22q/sEsEpcA99YxLFACDtEw9TPxE= +github.com/alexkohler/nakedret/v2 v2.0.2/go.mod h1:2b8Gkk0GsOrqQv/gPWjNLDSKwG8I5moSXG1K4VIBcTQ= +github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= +github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= +github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= +github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= +github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= +github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= +github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= +github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bkielbasa/cyclop v1.2.1 h1:AeF71HZDob1P2/pRm1so9cd1alZnrpyc4q2uP2l0gJY= +github.com/bkielbasa/cyclop v1.2.1/go.mod h1:K/dT/M0FPAiYjBgQGau7tz+3TMh4FWAEqlMhzFWCrgM= +github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= +github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= +github.com/bombsimon/wsl/v4 v4.2.1 h1:Cxg6u+XDWff75SIFFmNsqnIOgob+Q9hG6y/ioKbRFiM= +github.com/bombsimon/wsl/v4 v4.2.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo= +github.com/breml/bidichk v0.2.7 h1:dAkKQPLl/Qrk7hnP6P+E0xOodrq8Us7+U0o4UBOAlQY= +github.com/breml/bidichk v0.2.7/go.mod h1:YodjipAGI9fGcYM7II6wFvGhdMYsC5pHDlGzqvEW3tQ= +github.com/breml/errchkjson v0.3.6 h1:VLhVkqSBH96AvXEyclMR37rZslRrY2kcyq+31HCsVrA= +github.com/breml/errchkjson v0.3.6/go.mod h1:jhSDoFheAF2RSDOlCfhHO9KqhZgAYLyvHe7bRCX8f/U= +github.com/butuzov/ireturn v0.3.0 h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0= +github.com/butuzov/ireturn v0.3.0/go.mod h1:A09nIiwiqzN/IoVo9ogpa0Hzi9fex1kd9PSD6edP5ZA= +github.com/butuzov/mirror v1.1.0 h1:ZqX54gBVMXu78QLoiqdwpl2mgmoOJTk7s4p4o+0avZI= +github.com/butuzov/mirror v1.1.0/go.mod h1:8Q0BdQU6rC6WILDiBM60DBfvV78OLJmMmixe7GF45AE= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/catenacyber/perfsprint v0.6.0 h1:VSv95RRkk5+BxrU/YTPcnxuMEWar1iMK5Vyh3fWcBfs= +github.com/catenacyber/perfsprint v0.6.0/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= +github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= +github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= +github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= +github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= +github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= +github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/daixiang0/gci v0.12.1 h1:ugsG+KRYny1VK4oqrX4Vtj70bo4akYKa0tgT1DXMYiY= +github.com/daixiang0/gci v0.12.1/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denis-tingaikin/go-header v0.4.3 h1:tEaZKAlqql6SKCY++utLmkPLd6K8IBM20Ha7UVm+mtU= +github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStBA= +github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= +github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= +github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y= +github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= +github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= +github.com/ghostiam/protogetter v0.3.4 h1:5SZ+lZSNmNkSbGVSF9hUHhv/b7ELF9Rwchoq7btYo6c= +github.com/ghostiam/protogetter v0.3.4/go.mod h1:A0JgIhs0fgVnotGinjQiKaFVG3waItLJNwPmcMzDnvk= +github.com/go-critic/go-critic v0.11.1 h1:/zBseUSUMytnRqxjlsYNbDDxpu3R2yH8oLXo/FOE8b8= +github.com/go-critic/go-critic v0.11.1/go.mod h1:aZVQR7+gazH6aDEQx4356SD7d8ez8MipYjXbEl5JAKA= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-git/v5 v5.10.1 h1:tu8/D8i+TWxgKpzQ3Vc43e+kkhXqtsZCKI/egajKnxk= +github.com/go-git/go-git/v5 v5.10.1/go.mod h1:uEuHjxkHap8kAl//V5F/nNWwqIYtP/402ddd05mp0wg= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= +github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= +github.com/go-toolsmith/astcopy v1.1.0 h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s= +github.com/go-toolsmith/astcopy v1.1.0/go.mod h1:hXM6gan18VA1T/daUEHCFcYiW8Ai1tIwIzHY6srfEAw= +github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= +github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= +github.com/go-toolsmith/astequal v1.2.0 h1:3Fs3CYZ1k9Vo4FzFhwwewC3CHISHDnVUPC4x0bI2+Cw= +github.com/go-toolsmith/astequal v1.2.0/go.mod h1:c8NZ3+kSFtFY/8lPso4v8LuJjdJiUFVnSuU3s0qrrDY= +github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco= +github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4= +github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA= +github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA= +github.com/go-toolsmith/pkgload v1.2.2 h1:0CtmHq/02QhxcF7E9N5LIFcYFsMR5rdovfqTtRKkgIk= +github.com/go-toolsmith/pkgload v1.2.2/go.mod h1:R2hxLNRKuAsiXCo2i5J6ZQPhnPMOVtU+f0arbFPWCus= +github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= +github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw= +github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= +github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= +github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= +github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= +github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6J5HIP8ZtyMdiDscjMLfRBSPuzVVeo= +github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= +github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e h1:ULcKCDV1LOZPFxGZaA6TlQbiM3J2GCPnkx/bGF6sX/g= +github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e/go.mod h1:Pm5KhLPA8gSnQwrQ6ukebRcapGb/BG9iUkdaiCcGHJM= +github.com/golangci/golangci-lint v1.56.2 h1:dgQzlWHgNbCqJjuxRJhFEnHDVrrjuTGQHJ3RIZMpp/o= +github.com/golangci/golangci-lint v1.56.2/go.mod h1:7CfNO675+EY7j84jihO4iAqDQ80s3HCjcc5M6B7SlZQ= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= +github.com/golangci/misspell v0.4.1 h1:+y73iSicVy2PqyX7kmUefHusENlrP9YwuHZHPLGQj/g= +github.com/golangci/misspell v0.4.1/go.mod h1:9mAN1quEo3DlpbaIKKyEvRxK1pwqR9s/Sea1bJCtlNI= +github.com/golangci/revgrep v0.5.2 h1:EndcWoRhcnfj2NHQ+28hyuXpLMF+dQmCN+YaeeIl4FU= +github.com/golangci/revgrep v0.5.2/go.mod h1:bjAMA+Sh/QUfTDcHzxfyHxr4xKvllVr/0sCv2e7jJHA= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= +github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= +github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= +github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= +github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= +github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= +github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= +github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= +github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= +github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= +github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= +github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= +github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY= +github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU= +github.com/hashicorp/cli v1.1.6 h1:CMOV+/LJfL1tXCOKrgAX0uRKnzjj/mpmqNXloRSy2K8= +github.com/hashicorp/cli v1.1.6/go.mod h1:MPon5QYlgjjo0BSoAiN0ESeT5fRzDjVRp+uioJ0piz4= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU= +github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hc-install v0.6.2 h1:V1k+Vraqz4olgZ9UzKiAcbman9i9scg9GgSt/U3mw/M= +github.com/hashicorp/hc-install v0.6.2/go.mod h1:2JBpd+NCFKiHiu/yYCGaPyPHhZLxXTpz8oreHa/a3Ps= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/terraform-exec v0.20.0 h1:DIZnPsqzPGuUnq6cH8jWcPunBfY+C+M8JyYF3vpnuEo= +github.com/hashicorp/terraform-exec v0.20.0/go.mod h1:ckKGkJWbsNqFKV1itgMnE0hY9IYf1HoiekpuN0eWoDw= +github.com/hashicorp/terraform-json v0.21.0 h1:9NQxbLNqPbEMze+S6+YluEdXgJmhQykRyRNd+zTI05U= +github.com/hashicorp/terraform-json v0.21.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= +github.com/hashicorp/terraform-plugin-docs v0.18.0 h1:2bINhzXc+yDeAcafurshCrIjtdu1XHn9zZ3ISuEhgpk= +github.com/hashicorp/terraform-plugin-docs v0.18.0/go.mod h1:iIUfaJpdUmpi+rI42Kgq+63jAjI8aZVTyxp3Bvk9Hg8= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= +github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= +github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jgautheron/goconst v1.7.0 h1:cEqH+YBKLsECnRSd4F4TK5ri8t/aXtt/qoL0Ft252B0= +github.com/jgautheron/goconst v1.7.0/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= +github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= +github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= +github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= +github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= +github.com/jjti/go-spancheck v0.5.2 h1:WXTZG3efY/ji1Vi8mkH+23O3bLeKR6hp3tI3YB7XwKk= +github.com/jjti/go-spancheck v0.5.2/go.mod h1:ARPNI1JRG1V2Rjnd6/2f2NEfghjSVDZGVmruNKlnXU0= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= +github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kisielk/errcheck v1.7.0 h1:+SbscKmWJ5mOK/bO1zS60F5I9WwZDWOfRsC4RwfwRV0= +github.com/kisielk/errcheck v1.7.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkHAIKE/contextcheck v1.1.4 h1:B6zAaLhOEEcjvUgIYEqystmnFk1Oemn8bvJhbt0GMb8= +github.com/kkHAIKE/contextcheck v1.1.4/go.mod h1:1+i/gWqokIa+dm31mqGLZhZJ7Uh44DJGZVmr6QRBNJg= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= +github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= +github.com/kunwardeep/paralleltest v1.0.9 h1:3Sr2IfFNcsMmlqPk1cjTUbJ4zofKPGyHxenwPebgTug= +github.com/kunwardeep/paralleltest v1.0.9/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= +github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= +github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= +github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= +github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= +github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo= +github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4= +github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU= +github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= +github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM= +github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= +github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= +github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= +github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= +github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= +github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= +github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE= +github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= +github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= +github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= +github.com/mgechev/revive v1.3.7 h1:502QY0vQGe9KtYJ9FpxMz9rL+Fc/P13CI5POL4uHCcE= +github.com/mgechev/revive v1.3.7/go.mod h1:RJ16jUbF0OWC3co/+XTxmFNgEpUPwnnA0BRllX2aDNA= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA= +github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= +github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhKRf3Swg= +github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= +github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= +github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= +github.com/nunnatsa/ginkgolinter v0.15.2 h1:N2ORxUxPU56R9gsfLIlVVvCv/V/VVou5qVI1oBKBNHg= +github.com/nunnatsa/ginkgolinter v0.15.2/go.mod h1:oYxE7dt1vZI8cK2rZOs3RgTaBN2vggkqnENmoJ8kVvc= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= +github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= +github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= +github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/pavius/impi v0.0.3 h1:DND6MzU+BLABhOZXbELR3FU8b+zDgcq4dOCNLhiTYuI= +github.com/pavius/impi v0.0.3/go.mod h1:x/hU0bfdWIhuOT1SKwiJg++yvkk6EuOtJk8WtDZqgr8= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= +github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polyfloyd/go-errorlint v1.4.8 h1:jiEjKDH33ouFktyez7sckv6pHWif9B7SuS8cutDXFHw= +github.com/polyfloyd/go-errorlint v1.4.8/go.mod h1:NNCxFcFjZcw3xNjVdCchERkEM6Oz7wta2XJVxRftwO4= +github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/quasilyte/go-ruleguard v0.4.0 h1:DyM6r+TKL+xbKB4Nm7Afd1IQh9kEUKQs2pboWGKtvQo= +github.com/quasilyte/go-ruleguard v0.4.0/go.mod h1:Eu76Z/R8IXtViWUIHkE3p8gdH3/PKk1eh3YGfaEof10= +github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= +github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= +github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU= +github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= +github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJHMLuTw= +github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50= +github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= +github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= +github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= +github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= +github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= +github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= +github.com/sashamelentyev/usestdlibvars v1.25.0 h1:IK8SI2QyFzy/2OD2PYnhy84dpfNo9qADrRt6LH8vSzU= +github.com/sashamelentyev/usestdlibvars v1.25.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= +github.com/securego/gosec/v2 v2.19.0 h1:gl5xMkOI0/E6Hxx0XCY2XujA3V7SNSefA8sC+3f1gnk= +github.com/securego/gosec/v2 v2.19.0/go.mod h1:hOkDcHz9J/XIgIlPDXalxjeVYsHxoWUc5zJSHxcB8YM= +github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= +github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= +github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= +github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= +github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt95do8= +github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= +github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= +github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00= +github.com/sonatard/noctx v0.0.2/go.mod h1:kzFz+CzWSjQ2OzIm46uJZoXuBpa2+0y3T36U18dWqIo= +github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= +github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.13.0 h1:BWSJ/M+f+3nmdz9bxB+bWX28kkALN2ok11D0rSo8EJU= +github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw= +github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= +github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= +github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= +github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= +github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8= +github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c/go.mod h1:SbErYREK7xXdsRiigaQiQkI9McGRzYMvlKYaP3Nimdk= +github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM= +github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg= +github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= +github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= +github.com/tetafro/godot v1.4.16 h1:4ChfhveiNLk4NveAZ9Pu2AN8QZ2nkUGFuadM9lrr5D0= +github.com/tetafro/godot v1.4.16/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= +github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4= +github.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg= +github.com/tomarrell/wrapcheck/v2 v2.8.1 h1:HxSqDSN0sAt0yJYsrcYVoEeyM4aI9yAm3KQpIXDJRhQ= +github.com/tomarrell/wrapcheck/v2 v2.8.1/go.mod h1:/n2Q3NZ4XFT50ho6Hbxg+RV1uyo2Uow/Vdm9NQcl5SE= +github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= +github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= +github.com/ultraware/funlen v0.1.0 h1:BuqclbkY6pO+cvxoq7OsktIXZpgBSkYTQtmwhAK81vI= +github.com/ultraware/funlen v0.1.0/go.mod h1:XJqmOQja6DpxarLj6Jj1U7JuoS8PvL4nEqDaQhy22p4= +github.com/ultraware/whitespace v0.1.0 h1:O1HKYoh0kIeqE8sFqZf1o0qbORXUCOQFrlaQyZsczZw= +github.com/ultraware/whitespace v0.1.0/go.mod h1:/se4r3beMFNmewJ4Xmz0nMQ941GJt+qmSHGP9emHYe0= +github.com/uudashr/gocognit v1.1.2 h1:l6BAEKJqQH2UpKAPKdMfZf5kE4W/2xk8pfU1OVLvniI= +github.com/uudashr/gocognit v1.1.2/go.mod h1:aAVdLURqcanke8h3vg35BC++eseDm66Z7KmchI5et4k= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= +github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= +github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= +github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= +github.com/yeya24/promlinter v0.2.0 h1:xFKDQ82orCU5jQujdaD8stOHiv8UN68BSdn2a8u8Y3o= +github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= +github.com/ykadowak/zerologlint v0.1.5 h1:Gy/fMz1dFQN9JZTPjv1hxEk+sRWm05row04Yoolgdiw= +github.com/ykadowak/zerologlint v0.1.5/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68= +github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc= +github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0= +github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA= +github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +gitlab.com/bosi/decorder v0.4.1 h1:VdsdfxhstabyhZovHafFw+9eJ6eU0d2CkFNJcZz/NU4= +gitlab.com/bosi/decorder v0.4.1/go.mod h1:jecSqWUew6Yle1pCr2eLWTensJMmsxHsBwt+PVbkAqA= +go-simpler.org/assert v0.7.0 h1:OzWWZqfNxt8cLS+MlUp6Tgk1HjPkmgdKBq9qvy8lZsA= +go-simpler.org/assert v0.7.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= +go-simpler.org/musttag v0.8.0 h1:DR4UTgetNNhPRNo02rkK1hwDTRzAPotN+ZqYpdtEwWc= +go-simpler.org/musttag v0.8.0/go.mod h1:fiNdCkXt2S6je9Eblma3okjnlva9NT1Eg/WUt19rWu8= +go-simpler.org/sloglint v0.4.0 h1:UVJuUJo63iNQNFEOtZ6o1xAgagVg/giVLLvG9nNLobI= +go-simpler.org/sloglint v0.4.0/go.mod h1:v6zJ++j/thFPhefs2wEXoCKwT10yo5nkBDYRCXyqgNQ= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM= +golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20231219180239-dc181d75b848 h1:UhRVJ0i7bF9n/Hd8YjW3eKjlPVBHzbQdxrBgjbSKl64= +golang.org/x/exp/typeparams v0.0.0-20231219180239-dc181d75b848/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.4.6 h1:oFEHCKeID7to/3autwsWfnuv69j3NsfcXbvJKuIcep8= +honnef.co/go/tools v0.4.6/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= +mvdan.cc/gofumpt v0.6.0 h1:G3QvahNDmpD+Aek/bNOLrFR2XC6ZAdo62dZu65gmwGo= +mvdan.cc/gofumpt v0.6.0/go.mod h1:4L0wf+kgIPZtcCWXynNS2e6bhmj73umwnuXSZarixzA= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= +mvdan.cc/unparam v0.0.0-20240104100049-c549a3470d14 h1:zCr3iRRgdk5eIikZNDphGcM6KGVTx3Yu+/Uu9Es254w= +mvdan.cc/unparam v0.0.0-20240104100049-c549a3470d14/go.mod h1:ZzZjEpJDOmx8TdVU6umamY3Xy0UAQUI2DHbf05USVbI= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/tools/main.go b/tools/main.go new file mode 100644 index 00000000..3206d945 --- /dev/null +++ b/tools/main.go @@ -0,0 +1,10 @@ +// source: https://github.com/hashicorp/terraform-provider-awscc/blob/main/tools/main.go + +package main + +import ( + _ "github.com/client9/misspell/cmd/misspell" + _ "github.com/golangci/golangci-lint/cmd/golangci-lint" + _ "github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs" + _ "github.com/pavius/impi/cmd/impi" +) From 741d5acb683a7709c50b65815b7f152400657823 Mon Sep 17 00:00:00 2001 From: Allen Conlon Date: Wed, 28 Feb 2024 17:43:02 -0500 Subject: [PATCH 7/8] Added sections that were removed well updating the docs Signed-off-by: Allen Conlon --- docs/resources/config_security.md | 9 +++++++++ docs/resources/group.md | 7 +++++++ docs/resources/immutable_tag_rule.md | 7 +++++++ docs/resources/label.md | 7 +++++++ docs/resources/project.md | 7 +++++++ docs/resources/project_member_group.md | 7 +++++++ docs/resources/project_member_user.md | 7 +++++++ docs/resources/registry.md | 7 +++++++ docs/resources/replication.md | 7 +++++++ docs/resources/retention_policy.md | 7 +++++++ docs/resources/robot_account.md | 7 +++++++ docs/resources/user.md | 7 +++++++ templates/resources/config_security.md.tmpl | 9 +++++++++ templates/resources/group.md.tmpl | 7 +++++++ templates/resources/immutable_tag_rule.md.tmpl | 7 +++++++ templates/resources/label.md.tmpl | 7 +++++++ templates/resources/project.md.tmpl | 7 +++++++ templates/resources/project_member_group.md.tmpl | 7 +++++++ templates/resources/project_member_user.md.tmpl | 7 +++++++ templates/resources/registry.md.tmpl | 7 +++++++ templates/resources/replication.md.tmpl | 7 +++++++ templates/resources/retention_policy.md.tmpl | 7 +++++++ templates/resources/robot_account.md.tmpl | 7 +++++++ templates/resources/user.md.tmpl | 7 +++++++ 24 files changed, 172 insertions(+) diff --git a/docs/resources/config_security.md b/docs/resources/config_security.md index 869bf090..213a934d 100644 --- a/docs/resources/config_security.md +++ b/docs/resources/config_security.md @@ -34,3 +34,12 @@ resource "harbor_config_security" "main" { - `creation_time` (String) Time of creation of the list. - `id` (String) The ID of this resource. - `update_time` (String) Time of update of the list. + +## Import +Import is supported using the following syntax with the `registry` `id`: + +```shell +# import using the id of the repo +terraform import harbor_config_security.main "7" +``` +Note that at this point of time Harbor doesn't has any api endpoint for deleting this list. Only updating the records. diff --git a/docs/resources/group.md b/docs/resources/group.md index a1bdfe7f..92492693 100644 --- a/docs/resources/group.md +++ b/docs/resources/group.md @@ -34,3 +34,10 @@ resource "harbor_group" "storage-group" { ### Read-Only - `id` (String) The ID of this resource. + +## Import +Import is supported using the following syntax with the `group` `id`: + +```shell +terraform import harbor_group.storage-group /usergroups/19 +``` diff --git a/docs/resources/immutable_tag_rule.md b/docs/resources/immutable_tag_rule.md index a8366888..8eac0ee4 100644 --- a/docs/resources/immutable_tag_rule.md +++ b/docs/resources/immutable_tag_rule.md @@ -43,3 +43,10 @@ resource "harbor_immutable_tag_rule" "main" { ### Read-Only - `id` (String) The ID of this resource. + +## Import +Import is supported using the following syntax with the `project` and `immutabletagrules` `id`'s: + +```shell +terraform import harbor_immutable_tag_rule.main /projects/4/immutabletagrules/25 +``` diff --git a/docs/resources/label.md b/docs/resources/label.md index 35a13d8c..7352147f 100644 --- a/docs/resources/label.md +++ b/docs/resources/label.md @@ -53,3 +53,10 @@ resource "harbor_label" "main" { - `id` (String) The ID of this resource. - `scope` (String) + +## Import +Import is supported using the following syntax with the `label` `id`: + +```shell +terraform import harbor_label.main /labels/1 +``` diff --git a/docs/resources/project.md b/docs/resources/project.md index c95562d1..035fbfd2 100644 --- a/docs/resources/project.md +++ b/docs/resources/project.md @@ -61,3 +61,10 @@ resource "harbor_registry" "docker" { - `id` (String) The ID of this resource. - `project_id` (Number) The project id of this resource. + +## Import +Import is supported using the following syntax with the `project` `id`: + +```shell +terraform import harbor_project.main /projects/1 +``` diff --git a/docs/resources/project_member_group.md b/docs/resources/project_member_group.md index 71eba0ce..c3df9197 100644 --- a/docs/resources/project_member_group.md +++ b/docs/resources/project_member_group.md @@ -46,3 +46,10 @@ resource "harbor_project_member_group" "main" { - `id` (String) The ID of this resource. - `member_id` (Number) + +## Import +Import is supported using the following syntax with the `project` and `member` `id`'s: + +```shell +terraform import harbor_project_member_group.main /projects/10/members/200 +``` diff --git a/docs/resources/project_member_user.md b/docs/resources/project_member_user.md index edc65e30..490fa709 100644 --- a/docs/resources/project_member_user.md +++ b/docs/resources/project_member_user.md @@ -36,3 +36,10 @@ resource "harbor_project_member_user" "main" { - `id` (String) The ID of this resource. - `member_id` (Number) The member id of the member. + +## Import +Import is supported using the following syntax with the `project` and `member` `id`'s: + +```shell +terraform import harbor_project_member_user.main /projects/10/members/200 +``` diff --git a/docs/resources/registry.md b/docs/resources/registry.md index 2433b86b..7adff188 100644 --- a/docs/resources/registry.md +++ b/docs/resources/registry.md @@ -56,3 +56,10 @@ resource "harbor_registry" "main" { - `id` (String) The ID of this resource. - `registry_id` (Number) - `status` (String) + +## Import +Import is supported using the following syntax with the `registry` `id`: + +```shell +terraform import harbor_registry.main /registries/7 +``` diff --git a/docs/resources/replication.md b/docs/resources/replication.md index 73ed7199..9faf9a11 100644 --- a/docs/resources/replication.md +++ b/docs/resources/replication.md @@ -96,3 +96,10 @@ Optional: - `name` (String) Filter on the name of the resource. - `resource` (String) Filter on the resource type. Can be one of the following types. `chart`, `artifact` - `tag` (String) Filter on the tag/version of the resource. + +## Import +Import is supported using the following syntax with the `replication` `id`: + +```shell +terraform import harbor_replication.main /replication/policies/1 +``` diff --git a/docs/resources/retention_policy.md b/docs/resources/retention_policy.md index de237b04..66bb2c7d 100644 --- a/docs/resources/retention_policy.md +++ b/docs/resources/retention_policy.md @@ -65,3 +65,10 @@ Optional: - `tag_excluding` (String) For the tag excluding. - `tag_matching` (String) For the tag matching. - `untagged_artifacts` (Boolean) with untagged artifacts. Defaults to `true` + +## Import +Import is supported using the following syntax with the `retention_policy` `id`: + +```shell +terraform import harbor_retention_policy.main /retentions/10 +``` diff --git a/docs/resources/robot_account.md b/docs/resources/robot_account.md index 7a48d57a..9300efd6 100644 --- a/docs/resources/robot_account.md +++ b/docs/resources/robot_account.md @@ -140,3 +140,10 @@ Required: Optional: - `effect` (String) Either `allow` or `deny`. Defaults to `allow`. + +## Import +Import is supported using the following syntax with the `robot_account` `id`: + +```shell +terraform import harbor_robot_account.system /robots/123 +``` diff --git a/docs/resources/user.md b/docs/resources/user.md index 748c7d47..ae775c1a 100644 --- a/docs/resources/user.md +++ b/docs/resources/user.md @@ -38,3 +38,10 @@ resource "harbor_user" "main" { ### Read-Only - `id` (String) The ID of this resource. + +## Import +Import is supported using the following syntax with the `user` `id`: + +```shell +terraform import harbor_user.main /users/19 +``` diff --git a/templates/resources/config_security.md.tmpl b/templates/resources/config_security.md.tmpl index fd09349e..d099671c 100644 --- a/templates/resources/config_security.md.tmpl +++ b/templates/resources/config_security.md.tmpl @@ -33,3 +33,12 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc - `creation_time` (String) Time of creation of the list. - `id` (String) The ID of this resource. - `update_time` (String) Time of update of the list. + +## Import +Import is supported using the following syntax with the `registry` `id`: + +```shell +# import using the id of the repo +terraform import harbor_config_security.main "7" +``` +Note that at this point of time Harbor doesn't has any api endpoint for deleting this list. Only updating the records. diff --git a/templates/resources/group.md.tmpl b/templates/resources/group.md.tmpl index ae919622..7b16ecc2 100644 --- a/templates/resources/group.md.tmpl +++ b/templates/resources/group.md.tmpl @@ -32,3 +32,10 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc ### Read-Only - `id` (String) The ID of this resource. + +## Import +Import is supported using the following syntax with the `group` `id`: + +```shell +terraform import harbor_group.storage-group /usergroups/19 +``` diff --git a/templates/resources/immutable_tag_rule.md.tmpl b/templates/resources/immutable_tag_rule.md.tmpl index 09da00a5..d95f59d7 100644 --- a/templates/resources/immutable_tag_rule.md.tmpl +++ b/templates/resources/immutable_tag_rule.md.tmpl @@ -35,3 +35,10 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc ### Read-Only - `id` (String) The ID of this resource. + +## Import +Import is supported using the following syntax with the `project` and `immutabletagrules` `id`'s: + +```shell +terraform import harbor_immutable_tag_rule.main /projects/4/immutabletagrules/25 +``` diff --git a/templates/resources/label.md.tmpl b/templates/resources/label.md.tmpl index 1e5481a5..0a4989f9 100644 --- a/templates/resources/label.md.tmpl +++ b/templates/resources/label.md.tmpl @@ -40,3 +40,10 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc - `id` (String) The ID of this resource. - `scope` (String) + +## Import +Import is supported using the following syntax with the `label` `id`: + +```shell +terraform import harbor_label.main /labels/1 +``` diff --git a/templates/resources/project.md.tmpl b/templates/resources/project.md.tmpl index 41ee3a2f..ce526763 100644 --- a/templates/resources/project.md.tmpl +++ b/templates/resources/project.md.tmpl @@ -46,3 +46,10 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc - `id` (String) The ID of this resource. - `project_id` (Number) The project id of this resource. + +## Import +Import is supported using the following syntax with the `project` `id`: + +```shell +terraform import harbor_project.main /projects/1 +``` diff --git a/templates/resources/project_member_group.md.tmpl b/templates/resources/project_member_group.md.tmpl index 17e7542d..426c1801 100644 --- a/templates/resources/project_member_group.md.tmpl +++ b/templates/resources/project_member_group.md.tmpl @@ -39,3 +39,10 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc - `id` (String) The ID of this resource. - `member_id` (Number) + +## Import +Import is supported using the following syntax with the `project` and `member` `id`'s: + +```shell +terraform import harbor_project_member_group.main /projects/10/members/200 +``` diff --git a/templates/resources/project_member_user.md.tmpl b/templates/resources/project_member_user.md.tmpl index 23ba7c54..25ef43d0 100644 --- a/templates/resources/project_member_user.md.tmpl +++ b/templates/resources/project_member_user.md.tmpl @@ -30,3 +30,10 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc - `id` (String) The ID of this resource. - `member_id` (Number) The member id of the member. + +## Import +Import is supported using the following syntax with the `project` and `member` `id`'s: + +```shell +terraform import harbor_project_member_user.main /projects/10/members/200 +``` diff --git a/templates/resources/registry.md.tmpl b/templates/resources/registry.md.tmpl index 2906e28e..f143f90b 100644 --- a/templates/resources/registry.md.tmpl +++ b/templates/resources/registry.md.tmpl @@ -54,3 +54,10 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc - `id` (String) The ID of this resource. - `registry_id` (Number) - `status` (String) + +## Import +Import is supported using the following syntax with the `registry` `id`: + +```shell +terraform import harbor_registry.main /registries/7 +``` diff --git a/templates/resources/replication.md.tmpl b/templates/resources/replication.md.tmpl index 6fb42447..888912dc 100644 --- a/templates/resources/replication.md.tmpl +++ b/templates/resources/replication.md.tmpl @@ -55,3 +55,10 @@ Optional: - `name` (String) Filter on the name of the resource. - `resource` (String) Filter on the resource type. Can be one of the following types. `chart`, `artifact` - `tag` (String) Filter on the tag/version of the resource. + +## Import +Import is supported using the following syntax with the `replication` `id`: + +```shell +terraform import harbor_replication.main /replication/policies/1 +``` diff --git a/templates/resources/retention_policy.md.tmpl b/templates/resources/retention_policy.md.tmpl index cc5bb49c..eaa3d245 100644 --- a/templates/resources/retention_policy.md.tmpl +++ b/templates/resources/retention_policy.md.tmpl @@ -50,3 +50,10 @@ Optional: - `tag_excluding` (String) For the tag excluding. - `tag_matching` (String) For the tag matching. - `untagged_artifacts` (Boolean) with untagged artifacts. Defaults to `true` + +## Import +Import is supported using the following syntax with the `retention_policy` `id`: + +```shell +terraform import harbor_retention_policy.main /retentions/10 +``` diff --git a/templates/resources/robot_account.md.tmpl b/templates/resources/robot_account.md.tmpl index 0aebe5c2..c278009e 100644 --- a/templates/resources/robot_account.md.tmpl +++ b/templates/resources/robot_account.md.tmpl @@ -82,3 +82,10 @@ Required: Optional: - `effect` (String) Either `allow` or `deny`. Defaults to `allow`. + +## Import +Import is supported using the following syntax with the `robot_account` `id`: + +```shell +terraform import harbor_robot_account.system /robots/123 +``` diff --git a/templates/resources/user.md.tmpl b/templates/resources/user.md.tmpl index 0f1e190f..67b13d7d 100644 --- a/templates/resources/user.md.tmpl +++ b/templates/resources/user.md.tmpl @@ -35,3 +35,10 @@ For example, the {{ .SchemaMarkdown }} template can be used to replace manual sc ### Read-Only - `id` (String) The ID of this resource. + +## Import +Import is supported using the following syntax with the `user` `id`: + +```shell +terraform import harbor_user.main /users/19 +``` From 3c7ba25ce0d1805fb376acbbd1899cc5834aaf84 Mon Sep 17 00:00:00 2001 From: Allen Conlon Date: Fri, 1 Mar 2024 08:12:44 -0500 Subject: [PATCH 8/8] Fixed version drift with docs tools and main project Signed-off-by: Allen Conlon --- tools/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/go.mod b/tools/go.mod index 03b86dc2..bb56b693 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -1,6 +1,6 @@ module github.com/hashicorp/terraform-provider-awscc/tools -go 1.21 +go 1.22 require ( github.com/client9/misspell v0.3.4