From 08b64d210b9f1ed8a9c3899512e44f9bb8fc87fa Mon Sep 17 00:00:00 2001 From: Anthony Torns II Date: Sun, 18 Oct 2026 20:05:07 -0700 Subject: [PATCH] build: upgrade to Go 1.26 and golangci-lint v2 The Go AI SDK needs Go 1.26 and go-server-sdk v7.19.1. This change moves the module to Go 1.26 and go-server-sdk from v7.13.4 to v7.19.1. golangci-lint v1.63.4 cannot read the type data of Go 1.26, so the pre-commit hook moves to v2.11.4. The new .golangci.yml keeps the v1 rules: staticcheck runs only the SA and S1 checks, and unchecked Close and print calls are not errors. The hook now pins Go 1.26.0. Without the pin, pre-commit downloads the newest Go, and the linter cannot read the type data of a newer release. Co-Authored-By: Claude Opus 5.5 --- .golangci.yml | 15 +++++++++++++++ .pre-commit-config.yaml | 7 +++++-- AGENTS.md | 2 +- go.mod | 16 ++++++++-------- go.sum | 30 ++++++++++++++++-------------- 5 files changed, 45 insertions(+), 25 deletions(-) create mode 100644 .golangci.yml diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 000000000..d2f7a62ea --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,15 @@ +version: "2" + +linters: + settings: + staticcheck: + # The v1 defaults: the staticcheck (SA) and gosimple (S1) checks. v2 adds + # the stylecheck (ST) and quickfix (QF) checks to staticcheck. + checks: + - "SA*" + - "S1*" + exclusions: + # The v1 default exclusions: unchecked Close, Flush, and print calls are + # not errors here. + presets: + - std-error-handling diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 55acc6463..36b8485a0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,11 +1,14 @@ -# Cache bust: force rebuild for Go 1.26.0 compatibility repos: - repo: https://github.com/golangci/golangci-lint - rev: v1.63.4 + rev: v2.11.4 hooks: - id: golangci-lint entry: golangci-lint run language: golang + # Build and run the linter with the Go version in go.mod. Without a pin, + # pre-commit downloads the newest Go, and the linter cannot read the type + # data of a Go release newer than itself. + language_version: 1.26.0 require_serial: true types: [go] - repo: https://github.com/pre-commit/pre-commit-hooks diff --git a/AGENTS.md b/AGENTS.md index 8e6787a2c..9646d891a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -132,5 +132,5 @@ Installed via `make install-hooks`. Checks: ## Linting -- Go: `golangci-lint` (v1.63.4) via pre-commit +- Go: `golangci-lint` (v2.11.4) via pre-commit, configured in `.golangci.yml` - Frontend: ESLint + Prettier diff --git a/go.mod b/go.mod index 3bc62693b..de5338b04 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/launchdarkly/ldcli -go 1.25 +go 1.26 require ( github.com/adrg/frontmatter v0.2.0 @@ -27,8 +27,8 @@ require ( github.com/iancoleman/strcase v0.3.0 github.com/ianlancetaylor/demangle v0.0.0-20260505044615-1ff4bf46051f github.com/launchdarkly/api-client-go/v24 v24.0.0 - github.com/launchdarkly/go-sdk-common/v3 v3.4.0 - github.com/launchdarkly/go-server-sdk/v7 v7.13.4 + github.com/launchdarkly/go-sdk-common/v3 v3.6.0 + github.com/launchdarkly/go-server-sdk/v7 v7.19.1 github.com/launchdarkly/sdk-meta/api v0.7.5 github.com/mattn/go-sqlite3 v1.14.52 github.com/mitchellh/go-homedir v1.1.0 @@ -88,11 +88,11 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/launchdarkly/ccache v1.1.0 // indirect - github.com/launchdarkly/eventsource v1.10.0 // indirect - github.com/launchdarkly/go-jsonstream/v3 v3.1.0 // indirect - github.com/launchdarkly/go-sdk-events/v3 v3.5.0 // indirect + github.com/launchdarkly/eventsource v1.14.0 // indirect + github.com/launchdarkly/go-jsonstream/v3 v3.1.2 // indirect + github.com/launchdarkly/go-sdk-events/v3 v3.7.0 // indirect github.com/launchdarkly/go-semver v1.0.3 // indirect - github.com/launchdarkly/go-server-sdk-evaluation/v3 v3.0.1 // indirect + github.com/launchdarkly/go-server-sdk-evaluation/v3 v3.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/mailru/easyjson v0.9.1 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -126,7 +126,7 @@ require ( golang.org/x/mod v0.33.0 // indirect golang.org/x/net v0.50.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.41.0 // indirect + golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.34.0 // indirect golang.org/x/tools v0.42.0 // indirect gopkg.in/validator.v2 v2.0.1 // indirect diff --git a/go.sum b/go.sum index 05934dc73..26ff2d63b 100644 --- a/go.sum +++ b/go.sum @@ -189,20 +189,20 @@ github.com/launchdarkly/api-client-go/v24 v24.0.0 h1:QgWQ0aJhu2SSP9+jbPgYyxDbzNV github.com/launchdarkly/api-client-go/v24 v24.0.0/go.mod h1:hdrIs4v0BW+/hQY/jCtNM+kT77uND8ahZa8500U180c= github.com/launchdarkly/ccache v1.1.0 h1:voD1M+ZJXR3MREOKtBwgTF9hYHl1jg+vFKS/+VAkR2k= github.com/launchdarkly/ccache v1.1.0/go.mod h1:TlxzrlnzvYeXiLHmesMuvoZetu4Z97cV1SsdqqBJi1Q= -github.com/launchdarkly/eventsource v1.10.0 h1:H9Tp6AfGu/G2qzBJC26iperrvwhzdbiA/gx7qE2nDFI= -github.com/launchdarkly/eventsource v1.10.0/go.mod h1:J3oa50bPvJesZqNAJtb5btSIo5N6roDWhiAS3IpsKck= -github.com/launchdarkly/go-jsonstream/v3 v3.1.0 h1:U/7/LplZO72XefBQ+FzHf6o4FwLHVqBE+4V58Ornu/E= -github.com/launchdarkly/go-jsonstream/v3 v3.1.0/go.mod h1:2Pt4BR5AwWgsuVTCcIpB6Os04JFIKWfoA+7faKkZB5E= -github.com/launchdarkly/go-sdk-common/v3 v3.4.0 h1:GTRulE0G43xdWY1QdjAXJ7QnZ8PMFU8pOWZICCydEtM= -github.com/launchdarkly/go-sdk-common/v3 v3.4.0/go.mod h1:6MNeeP8b2VtsM6I3TbShCHW/+tYh2c+p5dB+ilS69sg= -github.com/launchdarkly/go-sdk-events/v3 v3.5.0 h1:Yav8Thm70dZbO8U1foYwZPf3w60n/lNBRaYeeNM/qg4= -github.com/launchdarkly/go-sdk-events/v3 v3.5.0/go.mod h1:oepYWQ2RvvjfL2WxkE1uJJIuRsIMOP4WIVgUpXRPcNI= +github.com/launchdarkly/eventsource v1.14.0 h1:6lxVkUwxCAEbBrx8J/N9i25yOajC6NNwq0Voo+fT0Kc= +github.com/launchdarkly/eventsource v1.14.0/go.mod h1:dU+rZxkPOlGPsyJPpiDqiepAcFwIITDUClY9+A6RrMw= +github.com/launchdarkly/go-jsonstream/v3 v3.1.2 h1:Od0QEKHesbKnD3GgAt+LkZzhcUiSP+yhrclrhsoox6w= +github.com/launchdarkly/go-jsonstream/v3 v3.1.2/go.mod h1:ZBjhKq8mhArCtqotGRGnteY6eXpNm1GaOdUSZHh+ZjM= +github.com/launchdarkly/go-sdk-common/v3 v3.6.0 h1:DxDfcNcRMxN2E8X7aWfOLcVvHgD2iUgFRYCcZtVcK3w= +github.com/launchdarkly/go-sdk-common/v3 v3.6.0/go.mod h1:HUhSIcObNywBajTAiYT/U/llpHzGL7HMdVVBm7Nyy+E= +github.com/launchdarkly/go-sdk-events/v3 v3.7.0 h1:EuyvvZqpSE7kaMl2o2Am0KgpsfNB7KMJD9O+Ko1ESw4= +github.com/launchdarkly/go-sdk-events/v3 v3.7.0/go.mod h1:dmhlNVS8zxMyjvQE1eOHMP/rKz0fKtiWn53/Ol+S+IE= github.com/launchdarkly/go-semver v1.0.3 h1:agIy/RN3SqeQDIfKkl+oFslEdeIs7pgsJBs3CdCcGQM= github.com/launchdarkly/go-semver v1.0.3/go.mod h1:xFmMwXba5Mb+3h72Z+VeSs9ahCvKo2QFUTHRNHVqR28= -github.com/launchdarkly/go-server-sdk-evaluation/v3 v3.0.1 h1:rTgcYAFraGFj7sBMB2b7JCYCm0b9kph4FaMX02t4osQ= -github.com/launchdarkly/go-server-sdk-evaluation/v3 v3.0.1/go.mod h1:fPS5d+zOsgFnMunj+Ki6jjlZtFvo4h9iNbtNXxzYn58= -github.com/launchdarkly/go-server-sdk/v7 v7.13.4 h1:Jn4HQDkmV0DhbUKLz7gFbNrhVrE3xSx8D6FTKEDheis= -github.com/launchdarkly/go-server-sdk/v7 v7.13.4/go.mod h1:EEUSX/bc1mVq+3pwrRzTfu8LFRWRI1UL4XMgzsKWmbE= +github.com/launchdarkly/go-server-sdk-evaluation/v3 v3.2.0 h1:yT3skSXnTMPvcIt/Oz0LubiU9emv9V5xrAZvFt71bH8= +github.com/launchdarkly/go-server-sdk-evaluation/v3 v3.2.0/go.mod h1:TlNMB48dwNz+sewt+zsCrboZLMJj4Dov8Msg/cLv5GM= +github.com/launchdarkly/go-server-sdk/v7 v7.19.1 h1:GNeZM9H51BNOlyWtyFouu3r+GWP/Fz94HgufCxawF2M= +github.com/launchdarkly/go-server-sdk/v7 v7.19.1/go.mod h1:0Ne1xHskoelCQ/RCNVzkyjCr06yhtR1PclQ0owGriUM= github.com/launchdarkly/go-test-helpers/v3 v3.1.0 h1:E3bxJMzMoA+cJSF3xxtk2/chr1zshl1ZWa0/oR+8bvg= github.com/launchdarkly/go-test-helpers/v3 v3.1.0/go.mod h1:Ake5+hZFS/DmIGKx/cizhn5W9pGA7pplcR7xCxWiLIo= github.com/launchdarkly/sdk-meta/api v0.7.5 h1:56pC/y94azZuD6iiuYK76+mzY8AZFqpTsNP8JsNnzts= @@ -370,8 +370,8 @@ golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= 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.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= @@ -404,6 +404,8 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/ghodss/yaml.v1 v1.0.0 h1:JlY4R6oVz+ZSvcDhVfNQ/k/8Xo6yb2s1PBhslPZPX4c= +gopkg.in/ghodss/yaml.v1 v1.0.0/go.mod h1:HDvRMPQLqycKPs9nWLuzZWxsxRzISLCRORiDpBUOMqg= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/validator.v2 v2.0.1 h1:xF0KWyGWXm/LM2G1TrEjqOu4pa6coO9AlWSf3msVfDY=