Repository navigation
Tags
Tags
fix(deps): update module go.yaml.in/yaml/v3 to v4 (#74) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [go.yaml.in/yaml/v3](https://redirect.github.com/yaml/go-yaml) | `v3.0.6` → `v4.0.0` |  |  | --- ### Release Notes <details> <summary>yaml/go-yaml (go.yaml.in/yaml/v3)</summary> ### [`v4.0.0`](https://redirect.github.com/yaml/go-yaml/releases/tag/v4.0.0): go-yaml v4.0.0 [Compare Source](https://redirect.github.com/yaml/go-yaml/compare/v3.0.6...v4.0.0) ##### go-yaml v4.0.0 go-yaml v4.0.0 is the first stable release of the v4 series, maintained by the YAML organization. It adds configurable loading and dumping, public plugin interfaces, structured errors, and a CLI for inspecting YAML processing. The classic APIs remain supported, so applications can adopt v4 incrementally. ##### Getting started Install the release: ```bash go get go.yaml.in/yaml/v4@v4.0.0 ``` Use this import path in your Go code: ```go import "go.yaml.in/yaml/v4" ``` For an existing v3 application, start by updating imports, reviewing custom unmarshalers, and running your tests. You can continue using `Unmarshal`, `Marshal`, `NewDecoder`, and `NewEncoder`. The v2 and v3 APIs remain frozen, with security fixes only; new features and routine bug fixes are developed in v4. ##### Why add Load and Dump? Applications need different YAML policies: strict configuration validation, particular output layouts, or custom anchor handling. The new `Load` and `Dump` functions and streaming `Loader` and `Dumper` accept functional options and plugins for those choices. They use YAML's load/dump terminology and are recommended for new code. The classic entry points keep compatibility settings rather than changing formatting and error presentation for every existing caller. Moving to the new API is an explicit choice to use v4 defaults, with presets available when you want older settings. Classic APIs remain supported. For example, load a configuration with strict field checking, then choose its output indentation: ```go package main import ( "fmt" "log" "go.yaml.in/yaml/v4" ) func main() { var config struct { Name string `yaml:"name"` Port int `yaml:"port"` } input := []byte("name: api\nport: 8080\n") if err := yaml.Load(input, &config, yaml.WithKnownFields()); err != nil { log.Fatal(err) } output, err := yaml.Dump(config, yaml.WithIndent(4)) if err != nil { log.Fatal(err) } fmt.Print(string(output)) } ``` Unknown struct fields are ignored by default; `WithKnownFields()` opts into rejecting them. Duplicate mapping keys are rejected by default. Options apply in order, so later options override earlier settings. ##### Defaults and compatibility | Setting | Classic Marshal / Unmarshal | Load / Dump defaults | | ---------------------- | --------------------------- | -------------------------------- | | Output indentation | 4 spaces | 2 spaces | | Sequence indentation | Non-compact | Compact | | Quote preference | Legacy mixed quoting | Single quotes where possible | | Preferred output width | Unlimited for Marshal | 80 characters | | Error presentation | v3 style | v4 style with stage and position | Quoting still depends on scalar content and styles, and line width is a preference rather than a guaranteed maximum. `NewDecoder` uses v3 error formatting; `NewEncoder` retains v3 output settings with v4 error formatting. Choose `WithV3Defaults()` to select compatibility defaults through the new API. When replacing `Marshal`, also disable wrapping to match its line-width setting: ```go output, err := yaml.Dump(config, yaml.WithV3Defaults(), yaml.WithLineWidth(-1), ) ``` Presets select defaults; they do not reverse every v4 bug fix or reproduce every legacy code path. For example, package-level `Load` requires exactly one document, whereas `Unmarshal` retains legacy handling of empty input and trailing content. `WithSingleDocument()` deliberately skips validation of later documents. Use `WithAllDocuments()` to load or dump slices as document streams, or use a streaming loader or dumper to process documents individually. ##### Options, plugins, and nodes Options control indentation, sequence layout, quoting, document markers, Unicode escaping, field validation, and more. `OptsYAML` accepts YAML configuration for supported settings, which can also be shared with the CLI. The public plugin APIs cover six areas: - **Loader-Limits:** configure depth and alias expansion checks. - **Merge-Key:** control merge directives and mapping conflicts, or replace the merge algorithm. - **Alias-Data:** supply external anchors, retain anchors across documents, use dotted paths, or reject alias references. - **Error-format:** select error presentation or implement a custom formatter. - **YAML-parser:** select an alternative parser implementation. - **Tab-indent:** opt into tab-aware input and output indentation. The core module provides implementations for these APIs. Additional parsers live in separate modules, keeping their dependencies optional. Existing depth and alias protections remain enabled by default. `yaml.Node` gives access to tags, styles, comments, anchors, and source positions. `Node.Load` and `Node.Dump` accept options for node conversion. Pass construction options explicitly inside custom unmarshaler hooks; `Node.Load` starts with fresh defaults independently of its calling loader. Stream nodes can expose encoding and YAML directives. Node output retains supported styles and comments without promising identical source formatting. ##### Migration details to check `NewLoader` and `NewDumper` return errors; check them before using the stream. Check dumper `Dump` and `Close` errors as well. Custom `UnmarshalYAML(*yaml.Node) error` hooks must use the v4 node type. Recognized v3 node hooks produce a migration error rather than silently losing custom behavior. The legacy `UnmarshalYAML(func(any) error) error` callback remains supported. Conversion failures return structured `*yaml.LoadErrors` values. Use `errors.As` to inspect structured errors or match legacy `*yaml.TypeError` values, rather than relying on a direct type assertion or fixed message text. Review the [migration guide](https://redirect.github.com/yaml/go-yaml/blob/v4.0.0/docs/v3-to-v4-migration.md) for the complete compatibility guidance. ##### Inspect YAML with the CLI Install the CLI from this release: ```bash go install go.yaml.in/yaml/v4/cmd/go-yaml@v4.0.0 ``` Convert to JSON, inspect nodes, or examine scanner and parser output: ```bash go-yaml -J config.yaml go-yaml -N config.yaml go-yaml -T config.yaml go-yaml -E config.yaml ``` The CLI also supports reusable options files and pipelines between intermediate stages, making small bug reports easier to reproduce. Runtime plugin selection chooses implementations already linked into the binary. ##### Further reading and thanks See the [options guide](https://redirect.github.com/yaml/go-yaml/blob/v4.0.0/docs/options.md), [plugin guide](https://redirect.github.com/yaml/go-yaml/blob/v4.0.0/docs/plugin.md), [CLI guide](https://redirect.github.com/yaml/go-yaml/blob/v4.0.0/cmd/go-yaml/README.md), and [API reference](https://pkg.go.dev/go.yaml.in/yaml/v4@v4.0.0). Please report problems with minimal input, a reproducer, and your Go version in [the issue tracker](https://redirect.github.com/yaml/go-yaml/issues). Release-candidate users should update to v4.0.0 and rerun their tests, as some APIs changed during prerelease development. Thanks to everyone who tested, reported problems, and contributed to this release. </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/equinix/cli). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yMjIuNSIsInVwZGF0ZWRJblZlciI6IjQ0LjIyMi41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
fix: oauth2-token commands panic with zero Value argument (#65) ## Summary - `equinix accesstokenv1 oauth2-token get-oauth2-access-token` panicked with `reflect: Call using zero Value argument`. `getServiceFromClient` rebuilt a Go field name from the kebab-case service name, which is lossy (`oauth2-token` -> `Oauth2Token`, never matching the SDK field `OAuth2TokenApi`). It now converts each client field name with `casing.CamelToKebab` and compares, so both sides use the same rules. It also returns an error instead of panicking if no service matches. - Removes leftover Metal client config and helpers now that `metalv1` is gone. - Adds end-to-end tests (real root command against a fake API server), including a regression test for the panic, and a workflow that runs them on pull requests. ## Notes - Matching is now exact after stripping the `Api`/`ApiService` suffix, rather than prefix-based. I verified `OAuth2TokenApi` and `IPBlocksApi`, but not every service in every generated client. ## Test plan - [x] `go test ./cmd/ ./internal/...` passes locally - [x] Regression test fails with the original panic when the fix is reverted - [x] e2e workflow passes in CI 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
feat(deps): update module github.com/equinix/equinix-sdk-go to v0.67.0 ( #47) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [github.com/equinix/equinix-sdk-go](https://redirect.github.com/equinix/equinix-sdk-go) | `v0.61.0` → `v0.67.0` |  |  | --- <details> <summary>equinix/equinix-sdk-go (github.com/equinix/equinix-sdk-go)</summary> [`v0.67.0`](https://redirect.github.com/equinix/equinix-sdk-go/releases/tag/v0.67.0) [Compare Source](https://redirect.github.com/equinix/equinix-sdk-go/compare/v0.66.0...v0.67.0) - remove Equinix Metal (metalv1) from the SDK ([e87be05](https://redirect.github.com/equinix/equinix-sdk-go/commit/e87be05dc251fc62d731db105b49a39240b60ff3)) - remove Equinix Metal (metalv1) from the SDK ([#​190](https://redirect.github.com/equinix/equinix-sdk-go/issues/190)) ([b3dd243](https://redirect.github.com/equinix/equinix-sdk-go/commit/b3dd24366ffe95edaf185c5c33d0cebe557b733e)), closes [equinix/terraform-provider-equinix#1006](https://redirect.github.com/equinix/terraform-provider-equinix/issues/1006) - sync fabricv4 API spec 2026-08-17 ([9b7c2d1](https://redirect.github.com/equinix/equinix-sdk-go/commit/9b7c2d1f06853ebb43c47024d0609b4b8b14ad1f)) - sync fabricv4 API spec 2026-08-17 ([#​195](https://redirect.github.com/equinix/equinix-sdk-go/issues/195)) ([852dc92](https://redirect.github.com/equinix/equinix-sdk-go/commit/852dc927360f6a6864383b456b09eb60e0ec785b)) - rename IpBlocksApi.md to IPBlocksApi.md to match generator output ([33e7aa0](https://redirect.github.com/equinix/equinix-sdk-go/commit/33e7aa0ebbf770962e27130eeeb86136d428592f)) [`v0.66.0`](https://redirect.github.com/equinix/equinix-sdk-go/releases/tag/v0.66.0) [Compare Source](https://redirect.github.com/equinix/equinix-sdk-go/compare/v0.65.0...v0.66.0) This release is identical in content to [v0.65.0](https://redirect.github.com/equinix/equinix-sdk-go/releases/v0.65.0). [`v0.65.0`](https://redirect.github.com/equinix/equinix-sdk-go/releases/tag/v0.65.0) [Compare Source](https://redirect.github.com/equinix/equinix-sdk-go/compare/v0.64.2...v0.65.0) - API Sync by GitHub Action for [@​tutkat](https://redirect.github.com/tutkat) ([#​188](https://redirect.github.com/equinix/equinix-sdk-go/issues/188)) ([7fb65b1](https://redirect.github.com/equinix/equinix-sdk-go/commit/7fb65b10627d6be3700d7057ae37bdfdbaaab63f)) [`v0.64.2`](https://redirect.github.com/equinix/equinix-sdk-go/releases/tag/v0.64.2) [Compare Source](https://redirect.github.com/equinix/equinix-sdk-go/compare/v0.64.1...v0.64.2) [0.64.2](https://redirect.github.com/equinix/equinix-sdk-go/compare/v0.64.1...v0.64.2) (2026-05-05) - Add Provisioned connection state ([3082f3e](https://redirect.github.com/equinix/equinix-sdk-go/commit/3082f3e3ccedcf3e520cd573aee3e677af0959d8)) - Add Provisioned connection state ([#​185](https://redirect.github.com/equinix/equinix-sdk-go/issues/185)) ([12d643f](https://redirect.github.com/equinix/equinix-sdk-go/commit/12d643f2496a20bebae4e0c772229b263c93f563)) [`v0.64.1`](https://redirect.github.com/equinix/equinix-sdk-go/releases/tag/v0.64.1) [Compare Source](https://redirect.github.com/equinix/equinix-sdk-go/compare/v0.64.0...v0.64.1) [0.64.1](https://redirect.github.com/equinix/equinix-sdk-go/compare/v0.64.0...v0.64.1) (2026-05-05) - Bring back connection state ([560285a](https://redirect.github.com/equinix/equinix-sdk-go/commit/560285a504d18068255e5e776a0f3568f44bac3b)) - Bring back connection state ([#​184](https://redirect.github.com/equinix/equinix-sdk-go/issues/184)) ([6663b57](https://redirect.github.com/equinix/equinix-sdk-go/commit/6663b574397ca989b2b4c8b5855de3822a20565f)) - PATCH SDK to add State for Connections ([7733ee0](https://redirect.github.com/equinix/equinix-sdk-go/commit/7733ee01a8db662e2e3375d40d27be64a4841225)) - PATCH SDK to add State for Connections ([#​182](https://redirect.github.com/equinix/equinix-sdk-go/issues/182)) ([7869942](https://redirect.github.com/equinix/equinix-sdk-go/commit/78699428b7ac6aaf4bf4e27b56a2df99e5995319)) - revert PATCH SDK to add State for Connections ([#​183](https://redirect.github.com/equinix/equinix-sdk-go/issues/183)) ([a8aeb9d](https://redirect.github.com/equinix/equinix-sdk-go/commit/a8aeb9d1cba7caf2c41374079863b45de6ddb505)), closes [equinix/equinix-sdk-go#182](https://redirect.github.com/equinix/equinix-sdk-go/issues/182) [`v0.64.0`](https://redirect.github.com/equinix/equinix-sdk-go/releases/tag/v0.64.0) [Compare Source](https://redirect.github.com/equinix/equinix-sdk-go/compare/v0.63.0...v0.64.0) - `AgentTemplatesApi` - Manage agent templates - `GetAgentTemplateByUuid()` - Retrieve an agent template by UUID - `AgentsApi` - Manage agents - `GetAgentActivities()` - Retrieve activities for a specific agent - `GetAllAgents()` - Retrieve all agents - `CreateAgent()` - Create a new agent - `UpdateAgent()` - Update an existing agent - `DeleteAgent()` - Delete an agent - `Agent` - Represents an agent - `AgentActivities` - Represents activities related to an agent - `AgentActivitiesMetadata` - Metadata for agent activities - `AgentDefinition` - Definition of an agent - `AgentGetActivities` - Response model for agent activities - `AgentGetAllResponse` - Response model for retrieving all agents - `AgentPatchRequest` - Request model for updating an agent - `AgentPostRequest` - Request model for creating an agent - `AgentTemplate` - Represents an agent template - `AgentTemplateGetAllResponse` - Response model for retrieving all agent templates - `AgentTemplates` - Represents agent templates - `AgentTemplatesState` - Represents the state of agent templates - `ChatMessage` - Represents a chat message - `CloudRouterRouteAggregationAndExpression` - Logical AND expression for route aggregation - `CloudRouterRouteAggregationExpression` - Expression for route aggregation - `CloudRouterRouteAggregationOrExpression` - Logical OR expression for route aggregation - `CloudRouterRouteAggregationSimpleExpression` - Simple expression for route aggregation - `CloudRouterRouteAggregationSimpleExpressionProperty` - Property for simple route aggregation expression - `CloudRouterRouteAggregationsFilter` - Filter for route aggregations - `CloudRouterRouteAggregationsSearchBase` - Base search model for route aggregations - `CloudRouterRouteAggregationsSearchResponse` - Response model for route aggregation search - `CloudRouterRouteFilterAndExpression` - Logical AND expression for route filters - `CloudRouterRouteFilterExpression` - Expression for route filters - `CloudRouterRouteFilterOrExpression` - Logical OR expression for route filters - `CloudRouterRouteFilterSimpleExpression` - Simple expression for route filters - `CloudRouterRouteFilterSimpleExpressionProperty` - Property for simple route filter expression - `CloudRouterRouteFiltersFilter` - Filter for route filters - `CloudRouterRouteFiltersSearchBase` - Base search model for route filters - `CloudRouterRouteFiltersSearchResponse` - Response model for route filter search - `MessagesInner` - Represents an inner message - `RaAttachmentSortItem` - Sort item for route aggregation attachments - `RaAttachmentSortItemProperty` - Property for route aggregation attachment sort item - `RfAttachmentSortItem` - Sort item for route filter attachments - `RfAttachmentSortItemProperty` - Property for route filter attachment sort item - `RouteAggregationRuleAndExpression` - Logical AND expression for route aggregation rules - `RouteAggregationRuleExpression` - Expression for route aggregation rules - `RouteAggregationRuleOrExpression` - Logical OR expression for route aggregation rules - `RouteAggregationRuleSimpleExpression` - Simple expression for route aggregation rules - `RouteAggregationRuleSortBy` - Sorting options for route aggregation rules - `RouteAggregationRuleSortCriteria` - Sorting criteria for route aggregation rules - `RouteAggregationRuleSortDirection` - Sorting direction for route aggregation rules - `RouteAggregationRulesFilter` - Filter for route aggregation rules - `RouteAggregationRulesSearchRequest` - Request model for searching route aggregation rules - `RouteAggregationRulesSearchResponse` - Response model for searching route aggregation rules - `RouteFilterRuleAndExpression` - Logical AND expression for route filter rules - `RouteFilterRuleExpression` - Expression for route filter rules - `RouteFilterRuleOrExpression` - Logical OR expression for route filter rules - `RouteFilterRuleSimpleExpression` - Simple expression for route filter rules - `RouteFilterRuleSortBy` - Sorting options for route filter rules - `RouteFilterRuleSortCriteria` - Sorting criteria for route filter rules - `RouteFilterRuleSortDirection` - Sorting direction for route filter rules - `ServiceProfileActionRequest` - Request model for service profile actions - `ServiceProfileActionResponse` - Response model for service profile actions - `ServiceProfileChange` - Represents a change in a service profile - `AccessPointType` - Added: `APP_LINK` - `CloudEventAssetType` - Added: `APP_LINK` - `ExpressionOperator` - Added: `CONTAINS`, `NOT_CONTAINS` - `PortSortBy` - Added: `OPERATOR`, `LOCATION` - `ServiceProfile` - Added field `change` (*ServiceProfileChange*) - `Order` - Added field `orderNumber` (*string*) - `CompanyProfileResponse` - Added field `account` (*CompanyProfileResponseAccount*) - `DeleteStreamAlertRuleByUuid` - Updated description from "Update Stream Alert Rules" to "Delete Stream Alert Rules" - `ApiGetCloudRouterActionsRequest.Execute()` - Updated return type from `*CloudRouterActionResponse` to `*CloudRouterActionsSearchResponse` - `ConnectionType` - Removed: `VPIC` - `AccessPoint.VpicInterface` - Removed field - `ConnectionSide.VpicInterface` - Removed field - `EquinixStatus.VpicInterface` - Removed field - `PortRequest.VpicInterface` - Removed field *** > **Important:** This release contains a significant number of breaking API changes. As a v0 semver product, these changes are within expectations, but users should review carefully before upgrading. | Area | Change | | --------------------------------------------- | -------------------------------------------------------------------------------------------- | | **DeleteStreamAlertRuleByUuid** | Updated description from "Update Stream Alert Rules" to "Delete Stream Alert Rules" | | **ApiGetCloudRouterActionsRequest.Execute()** | Updated return type from `*CloudRouterActionResponse` to `*CloudRouterActionsSearchResponse` | | **ConnectionType** | Removed `VPIC` | | **AccessPoint** | Removed `VpicInterface` field | | **ConnectionSide** | Removed `VpicInterface` field | | **EquinixStatus** | Removed `VpicInterface` field | | **PortRequest** | Removed `VpicInterface` field | [`v0.63.0`](https://redirect.github.com/equinix/equinix-sdk-go/releases/tag/v0.63.0) [Compare Source](https://redirect.github.com/equinix/equinix-sdk-go/compare/v0.62.0...v0.63.0) - API Sync by GitHub Action for [@​tutkat](https://redirect.github.com/tutkat) ([#​171](https://redirect.github.com/equinix/equinix-sdk-go/issues/171)) ([9771772](https://redirect.github.com/equinix/equinix-sdk-go/commit/977177226a01656074510bcb2cd44197d53e2db7)) - upgrade openapi-generator to v7.16.0 ([#​158](https://redirect.github.com/equinix/equinix-sdk-go/issues/158)) ([7ae7a56](https://redirect.github.com/equinix/equinix-sdk-go/commit/7ae7a56d2cf37b00daac58c1444e2024042ee37e)) - api\_company\_profiles.go - CRUD operations for company profiles with private service, service profile, and tag associations - api\_logos.go - Logo retrieval and deletion operations - api\_tags.go - Tag creation and listing operations - api\_metrics.go - Added `GetMetricByName` endpoint with wildcard support for metro-level metrics (`equinix.fabric.metro.{SOURCE_METRO_CODE}_{DESTINATION_METRO_CODE}.latency`, `equinix.fabric.metro.{SOURCE_METRO_CODE}_{DESTINATION_METRO_CODE}.jitter_avg`) - api\_ports.go - Enhanced functionality - api\_service\_profiles.go - Enhanced functionality - api\_service\_tokens.go - Enhanced functionality - model\_company\_metro.go - Company metro information - model\_company\_profile\_sort\_direction.go - Sort direction enum for company profile queries - model\_get\_metrics\_by\_name\_response.go - Metrics query response with pagination support - model\_platform\_changelog.go - Change tracking metadata for platform updates - model\_response\_incomplete\_details.go - Details about incomplete responses - model\_response\_incomplete\_details\_reason.go - Reason codes for incomplete responses - model\_response\_usage\_input\_tokens\_details.go - Input token usage tracking - model\_response\_usage\_output\_tokens\_details.go - Output token usage tracking - model\_sort.go - Generic sort criteria model - model\_attach\_logo\_response.go - Attach logo response model - model\_cloud\_event\_asset\_type.go - Cloud event asset type enum expansion - model\_company\_logo.go - Company logo model - model\_company\_profile\_change.go - Company profile change tracking - model\_company\_profile\_request.go - Company profile request model - model\_company\_profile\_response.go - Company profile response model - model\_company\_profile\_search\_request.go - Company profile search request - model\_connection\_route\_table\_entry.go - Connection route table entry - model\_equinix\_status.go - Equinix status enum expansion - model\_geo\_scope\_type.go - Geographic scope type enum expansion - model\_logo\_response.go - Logo response model - model\_metric\_resource.go - Metric resource model - model\_metro.go - Metro information model - model\_metro\_response.go - Metro response model - model\_patch\_operation\_op.go - Patch operation enum expansion - model\_port\_order\_purchase\_order.go - Port order purchase order model - model\_port\_order\_purchase\_order\_selection\_type.go - Purchase order selection type - model\_port\_order\_purchase\_order\_type.go - Purchase order type - model\_port\_order\_signature.go - Port order signature model - model\_port\_order\_signature\_delegate.go - Port order signature delegate - model\_port\_order\_signature\_signatory.go - Port order signature signatory - model\_tag\_response.go - Tag response model - model\_virtual\_port\_price.go - Virtual port pricing model - model\_company\_profile\_update\_response.go - REMOVED (replaced by refactored response structure using CompanyMetro and other models) [`v0.62.0`](https://redirect.github.com/equinix/equinix-sdk-go/releases/tag/v0.62.0) [Compare Source](https://redirect.github.com/equinix/equinix-sdk-go/compare/v0.61.0...v0.62.0) - API Sync by GitHub Action for [@​tutkat](https://redirect.github.com/tutkat) ([#​168](https://redirect.github.com/equinix/equinix-sdk-go/issues/168)) ([fa4da64](https://redirect.github.com/equinix/equinix-sdk-go/commit/fa4da640354106a9607efec119dda7237d817648)) </details> --- 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/equinix/cli). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi41OS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzUuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
fix: keep known initialisms together in generated command names (#60) * fix: keep known initialisms together when generating kebab-case names The camelToKebab conversion used for CLI command/flag names inserted a dash before every uppercase letter, splitting initialisms like BGP, SSH, IP, VLAN, and API into commands such as b-g-p, s-s-h-key, and i-p-address. Add a shared internal/casing package that recognizes a list of known initialisms and keeps them as a single word, fixing commands like bgp, ssh-key, ip-address, and oauth. * fix: keep version-style digit suffixes attached to their word Digits like the "2" in OAuth2 or the "4"/"6" in IPv4/IPv6 were treated as a new word boundary, producing oauth-2-token instead of the well-known spec name oauth2-token. Trailing digits now attach to the preceding word like other suffixes. * docs: regenerate docs with fixed initialism command names Run 'make docs' to pick up the renamed commands (e.g. b-g-p -> bgp, create-a-p-i-key -> create-api-key, o-auth2-token -> oauth2-token) from the camelToKebab fix.
PreviousNext