diff --git a/CLAUDE.md b/CLAUDE.md index 9dfe0d3..025153a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -24,7 +24,7 @@ ships a `version` subcommand. Grow it by adding subcommands (e.g. a `serve` comm - `internal/cli/` — cobra root command, observability bootstrap + shutdown, subcommands. - `internal/config/` — assembles `observability.Config` and builds the pillars (slog logging + noop tracing/metrics/profiling by default). See `Config.NewPillars` for the upgrade path to real telemetry. - Two loaders use `platform-go/v10/config`: `Load` overlays `TEMPLATE_GO_`-prefixed environment + Two loaders use `platform-go/v11/config`: `Load` overlays `TEMPLATE_GO_`-prefixed environment variables on the flag/default-seeded config, and `LoadFromFile` decodes a complete JSON config file and then overlays the same environment variables. `Render` goes the other way: it validates typed `Config` objects and writes them to disk (see `make configs`). diff --git a/cmd/tools/codegen/configs/environments.go b/cmd/tools/codegen/configs/environments.go index 9c81c31..d78aff7 100644 --- a/cmd/tools/codegen/configs/environments.go +++ b/cmd/tools/codegen/configs/environments.go @@ -3,9 +3,9 @@ package main import ( "github.com/primandproper/template-go/internal/config" - "github.com/primandproper/platform-go/v10/observability" - "github.com/primandproper/platform-go/v10/observability/logging" - loggingcfg "github.com/primandproper/platform-go/v10/observability/logging/config" + "github.com/primandproper/platform-go/v11/observability" + "github.com/primandproper/platform-go/v11/observability/logging" + loggingcfg "github.com/primandproper/platform-go/v11/observability/logging/config" ) // Each builder returns a fully-formed *config.Config for one environment. The diff --git a/go.mod b/go.mod index a8d2e61..a1963f6 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/primandproper/template-go go 1.26 require ( - github.com/primandproper/platform-go/v10 v10.0.0 + github.com/primandproper/platform-go/v11 v11.2.0 github.com/shoenig/test v1.13.2 github.com/spf13/cobra v1.10.2 ) @@ -27,7 +27,7 @@ require ( github.com/daixiang0/gci v0.14.0 // indirect github.com/ebitengine/purego v0.10.0 // indirect github.com/felixge/httpsnoop v1.1.0 // indirect - github.com/fxamacker/cbor/v2 v2.9.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.2 // indirect github.com/getsentry/sentry-go v0.43.0 // indirect github.com/go-logr/logr v1.4.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -65,6 +65,8 @@ require ( github.com/samber/slog-multi v1.7.1 // indirect github.com/shirou/gopsutil/v4 v4.26.2 // indirect github.com/spf13/pflag v1.0.10 // indirect + github.com/swaggest/jsonschema-go v0.3.79 // indirect + github.com/swaggest/refl v1.4.0 // indirect github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect github.com/x448/float16 v0.8.4 // indirect diff --git a/go.sum b/go.sum index a504b46..e186390 100644 --- a/go.sum +++ b/go.sum @@ -106,6 +106,10 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8 github.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk= github.com/aws/smithy-go v1.27.6 h1:0zjT8jgK3jbrTT7JJ3EE6JsMhX8JTrZ+f1sEndYDXrA= github.com/aws/smithy-go v1.27.6/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= +github.com/bool64/dev v0.2.43 h1:yQ7qiZVef6WtCl2vDYU0Y+qSq+0aBrQzY8KXkklk9cQ= +github.com/bool64/dev v0.2.43/go.mod h1:iJbh1y/HkunEPhgebWRNcs8wfGq7sjvJ6W5iabL8ACg= +github.com/bool64/shared v0.1.5 h1:fp3eUhBsrSjNCQPcSdQqZxxh9bBwrYiZ+zOKFkM0/2E= +github.com/bool64/shared v0.1.5/go.mod h1:081yz68YC9jeFB3+Bbmno2RFWvGKv1lPKkMP6MHJlPs= github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M= github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM= github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE= @@ -161,8 +165,8 @@ github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a h1:yDWHCSQ40h88yi github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a/go.mod h1:7Ga40egUymuWXxAe151lTNnCv97MddSOVsjpPPkityA= github.com/felixge/httpsnoop v1.1.0 h1:3YtUj32ZZkqZtt3sZZsClsymw/QDuVfpNhoA31zeORc= github.com/felixge/httpsnoop v1.1.0/go.mod h1:Zqxgdd+1Rkcz8euOqdr7lqgCRJztwr5hp9vDSi5UZCE= -github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= -github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= +github.com/fxamacker/cbor/v2 v2.9.2 h1:X4Ksno9+x3cz0TZv69ec1hxP/+tymuR8PXQJyDwfh78= +github.com/fxamacker/cbor/v2 v2.9.2/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/gabriel-vasile/mimetype v1.4.12 h1:e9hWvmLYvtp846tLHam2o++qitpguFiYCKbn0w9jyqw= github.com/gabriel-vasile/mimetype v1.4.12/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= github.com/getsentry/sentry-go v0.43.0 h1:XbXLpFicpo8HmBDaInk7dum18G9KSLcjZiyUKS+hLW4= @@ -212,8 +216,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= -github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= +github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f h1:16RtHeWGkJMc80Etb8RPCcKevXGldr57+LOyZt8zOlg= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f/go.mod h1:ijRvpgDJDI262hYq/IQVYgf8hd8IHUs93Ol0kvMBAx4= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= @@ -248,6 +252,8 @@ github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= 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/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= +github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= @@ -361,8 +367,8 @@ github.com/posthog/posthog-go v1.11.1 h1:P0MHlerMW9rNpjW+1szNsJ5HbdYJUv/9lF2DWZC github.com/posthog/posthog-go v1.11.1/go.mod h1:wB3/9Q7d9gGb1P/yf/Wri9VBlbP8oA8z++prRzL5OcY= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/primandproper/platform-go/v10 v10.0.0 h1:ohx0nK7z8hwbEJSVABbS0tfgTQKocrsL62/LijWJMOw= -github.com/primandproper/platform-go/v10 v10.0.0/go.mod h1:v0wFQes9fziHMz49kPqGKc/zX5dHxcXTH+Ed6IegP8E= +github.com/primandproper/platform-go/v11 v11.2.0 h1:dHtS98cXW40tiGYbUJGCEX2pYUanP3Tr2caRYx3o+/c= +github.com/primandproper/platform-go/v11 v11.2.0/go.mod h1:F+JIp4sO67E6l8cRY/mr5QNr6No5lOcTem124VdpEDE= github.com/pusher/pusher-http-go/v5 v5.1.1 h1:ZLUGdLA8yXMvByafIkS47nvuXOHrYmlh4bsQvuZnYVQ= github.com/pusher/pusher-http-go/v5 v5.1.1/go.mod h1:Ibji4SGoUDtOy7CVRhCiEpgy+n5Xv6hSL/QqYOhmWW8= github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8= @@ -409,6 +415,8 @@ github.com/sendgrid/rest v2.6.9+incompatible h1:1EyIcsNdn9KIisLW50MKwmSRSK+ekuei github.com/sendgrid/rest v2.6.9+incompatible/go.mod h1:kXX7q3jZtJXK5c5qK83bSGMdV6tsOE70KbHoqJls4lE= github.com/sendgrid/sendgrid-go v3.16.1+incompatible h1:zWhTmB0Y8XCDzeWIm2/BIt1GjJohAA0p6hVEaDtHWWs= github.com/sendgrid/sendgrid-go v3.16.1+incompatible/go.mod h1:QRQt+LX/NmgVEvmdRw0VT/QgUn499+iza2FnDca9fg8= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shirou/gopsutil/v4 v4.26.2 h1:X8i6sicvUFih4BmYIGT1m2wwgw2VG9YgrDTi7cIRGUI= github.com/shirou/gopsutil/v4 v4.26.2/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= github.com/shoenig/test v1.13.2 h1:SaGxHxg7xkRuKuNtuFmHf0LgNGaAgcBT7HN4WHCKfqU= @@ -430,6 +438,8 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/stripe/stripe-go/v81 v81.4.0 h1:AuD9XzdAvl193qUCSaLocf8H+nRopOouXhxqJUzCLbw= github.com/stripe/stripe-go/v81 v81.4.0/go.mod h1:C/F4jlmnGNacvYtBp/LUHCvVUJEZffFQCobkzwY1WOo= +github.com/swaggest/assertjson v1.9.0 h1:dKu0BfJkIxv/xe//mkCrK5yZbs79jL7OVf9Ija7o2xQ= +github.com/swaggest/assertjson v1.9.0/go.mod h1:b+ZKX2VRiUjxfUIal0HDN85W0nHPAYUbYH5WkkSsFsU= github.com/swaggest/jsonschema-go v0.3.79 h1:0TOShCbAJ9Xjt1e2W83l+QtMQSG2pbun2EkiYTyafCs= github.com/swaggest/jsonschema-go v0.3.79/go.mod h1:GqVmJ+XNLeUHhFIhHNKc+C68euxfrl3a3aoZH4vTRl0= github.com/swaggest/openapi-go v0.2.61 h1:psc+LE7pWhEjmJpmkti9tUmBPkkobdUNflBf5Ps6JSc= @@ -454,6 +464,10 @@ github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= diff --git a/internal/cli/root.go b/internal/cli/root.go index a9630c4..698563b 100644 --- a/internal/cli/root.go +++ b/internal/cli/root.go @@ -14,8 +14,8 @@ import ( "github.com/primandproper/template-go/internal/config" - "github.com/primandproper/platform-go/v10/observability" - "github.com/primandproper/platform-go/v10/observability/logging" + "github.com/primandproper/platform-go/v11/observability" + "github.com/primandproper/platform-go/v11/observability/logging" "github.com/spf13/cobra" ) diff --git a/internal/config/config.go b/internal/config/config.go index f78f748..178536d 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -26,13 +26,13 @@ import ( "log/slog" "strings" - platformconfig "github.com/primandproper/platform-go/v10/config" - "github.com/primandproper/platform-go/v10/observability" - "github.com/primandproper/platform-go/v10/observability/logging" - loggingcfg "github.com/primandproper/platform-go/v10/observability/logging/config" - metricsnoop "github.com/primandproper/platform-go/v10/observability/metrics/noop" - profilingnoop "github.com/primandproper/platform-go/v10/observability/profiling/noop" - tracingnoop "github.com/primandproper/platform-go/v10/observability/tracing/noop" + platformconfig "github.com/primandproper/platform-go/v11/config" + "github.com/primandproper/platform-go/v11/observability" + "github.com/primandproper/platform-go/v11/observability/logging" + loggingcfg "github.com/primandproper/platform-go/v11/observability/logging/config" + metricsnoop "github.com/primandproper/platform-go/v11/observability/metrics/noop" + profilingnoop "github.com/primandproper/platform-go/v11/observability/profiling/noop" + tracingnoop "github.com/primandproper/platform-go/v11/observability/tracing/noop" ) // DefaultServiceName is the service name reported by the observability suite diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 70f4409..e28f6a0 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -6,8 +6,8 @@ import ( "path/filepath" "testing" - "github.com/primandproper/platform-go/v10/observability/logging" - loggingcfg "github.com/primandproper/platform-go/v10/observability/logging/config" + "github.com/primandproper/platform-go/v11/observability/logging" + loggingcfg "github.com/primandproper/platform-go/v11/observability/logging/config" "github.com/shoenig/test" "github.com/shoenig/test/must" diff --git a/internal/config/render_test.go b/internal/config/render_test.go index d4c6c7b..41d100e 100644 --- a/internal/config/render_test.go +++ b/internal/config/render_test.go @@ -6,9 +6,9 @@ import ( "path/filepath" "testing" - "github.com/primandproper/platform-go/v10/observability" - "github.com/primandproper/platform-go/v10/observability/logging" - loggingcfg "github.com/primandproper/platform-go/v10/observability/logging/config" + "github.com/primandproper/platform-go/v11/observability" + "github.com/primandproper/platform-go/v11/observability/logging" + loggingcfg "github.com/primandproper/platform-go/v11/observability/logging/config" "github.com/shoenig/test" "github.com/shoenig/test/must"