mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-05-21 23:06:42 +00:00
rebase: bump the golang-dependencies group with 3 updates
Bumps the golang-dependencies group with 3 updates: [golang.org/x/crypto](https://github.com/golang/crypto), [golang.org/x/net](https://github.com/golang/net) and [golang.org/x/sys](https://github.com/golang/sys). Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0 - [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0) Updates `golang.org/x/net` from 0.39.0 to 0.40.0 - [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0) Updates `golang.org/x/sys` from 0.32.0 to 0.33.0 - [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.38.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: golang-dependencies - dependency-name: golang.org/x/net dependency-version: 0.40.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: golang-dependencies - dependency-name: golang.org/x/sys dependency-version: 0.33.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: golang-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
parent
bc8b1e792f
commit
05e3827a4f
12
go.mod
12
go.mod
@ -29,9 +29,9 @@ require (
|
|||||||
github.com/pkg/xattr v0.4.10
|
github.com/pkg/xattr v0.4.10
|
||||||
github.com/prometheus/client_golang v1.22.0
|
github.com/prometheus/client_golang v1.22.0
|
||||||
github.com/stretchr/testify v1.10.0
|
github.com/stretchr/testify v1.10.0
|
||||||
golang.org/x/crypto v0.37.0
|
golang.org/x/crypto v0.38.0
|
||||||
golang.org/x/net v0.39.0
|
golang.org/x/net v0.40.0
|
||||||
golang.org/x/sys v0.32.0
|
golang.org/x/sys v0.33.0
|
||||||
google.golang.org/grpc v1.72.0
|
google.golang.org/grpc v1.72.0
|
||||||
google.golang.org/protobuf v1.36.6
|
google.golang.org/protobuf v1.36.6
|
||||||
k8s.io/api v0.33.0
|
k8s.io/api v0.33.0
|
||||||
@ -144,9 +144,9 @@ require (
|
|||||||
go.uber.org/multierr v1.11.0 // indirect
|
go.uber.org/multierr v1.11.0 // indirect
|
||||||
go.uber.org/zap v1.27.0 // indirect
|
go.uber.org/zap v1.27.0 // indirect
|
||||||
golang.org/x/oauth2 v0.27.0 // indirect
|
golang.org/x/oauth2 v0.27.0 // indirect
|
||||||
golang.org/x/sync v0.13.0 // indirect
|
golang.org/x/sync v0.14.0 // indirect
|
||||||
golang.org/x/term v0.31.0 // indirect
|
golang.org/x/term v0.32.0 // indirect
|
||||||
golang.org/x/text v0.24.0 // indirect
|
golang.org/x/text v0.25.0 // indirect
|
||||||
golang.org/x/time v0.9.0 // indirect
|
golang.org/x/time v0.9.0 // indirect
|
||||||
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
|
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect
|
||||||
|
24
go.sum
24
go.sum
@ -707,8 +707,8 @@ golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/
|
|||||||
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
|
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
|
||||||
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
|
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
|
||||||
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
|
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
|
||||||
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
|
golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8=
|
||||||
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
|
golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
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-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-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||||
@ -833,8 +833,8 @@ golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
|
|||||||
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
|
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
|
||||||
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
|
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
|
||||||
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
||||||
golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
|
golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY=
|
||||||
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
|
golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
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-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-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
@ -878,8 +878,8 @@ golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
|||||||
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||||
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
|
golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
|
||||||
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
@ -982,8 +982,8 @@ golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
|||||||
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||||
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
|
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
|
||||||
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||||
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
||||||
golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0=
|
golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
@ -1010,8 +1010,8 @@ golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
|
|||||||
golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk=
|
golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk=
|
||||||
golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
|
golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
|
||||||
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
|
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
|
||||||
golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o=
|
golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
|
||||||
golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw=
|
golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
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.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.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
@ -1036,8 +1036,8 @@ golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
|||||||
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
||||||
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
||||||
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
|
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
|
||||||
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
|
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
|
||||||
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
|
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
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-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/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
107
vendor/golang.org/x/sync/errgroup/errgroup.go
generated
vendored
107
vendor/golang.org/x/sync/errgroup/errgroup.go
generated
vendored
@ -12,6 +12,8 @@ package errgroup
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"runtime"
|
||||||
|
"runtime/debug"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,6 +33,10 @@ type Group struct {
|
|||||||
|
|
||||||
errOnce sync.Once
|
errOnce sync.Once
|
||||||
err error
|
err error
|
||||||
|
|
||||||
|
mu sync.Mutex
|
||||||
|
panicValue any // = PanicError | PanicValue; non-nil if some Group.Go goroutine panicked.
|
||||||
|
abnormal bool // some Group.Go goroutine terminated abnormally (panic or goexit).
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Group) done() {
|
func (g *Group) done() {
|
||||||
@ -50,13 +56,22 @@ func WithContext(ctx context.Context) (*Group, context.Context) {
|
|||||||
return &Group{cancel: cancel}, ctx
|
return &Group{cancel: cancel}, ctx
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait blocks until all function calls from the Go method have returned, then
|
// Wait blocks until all function calls from the Go method have returned
|
||||||
// returns the first non-nil error (if any) from them.
|
// normally, then returns the first non-nil error (if any) from them.
|
||||||
|
//
|
||||||
|
// If any of the calls panics, Wait panics with a [PanicValue];
|
||||||
|
// and if any of them calls [runtime.Goexit], Wait calls runtime.Goexit.
|
||||||
func (g *Group) Wait() error {
|
func (g *Group) Wait() error {
|
||||||
g.wg.Wait()
|
g.wg.Wait()
|
||||||
if g.cancel != nil {
|
if g.cancel != nil {
|
||||||
g.cancel(g.err)
|
g.cancel(g.err)
|
||||||
}
|
}
|
||||||
|
if g.panicValue != nil {
|
||||||
|
panic(g.panicValue)
|
||||||
|
}
|
||||||
|
if g.abnormal {
|
||||||
|
runtime.Goexit()
|
||||||
|
}
|
||||||
return g.err
|
return g.err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,18 +80,56 @@ func (g *Group) Wait() error {
|
|||||||
// It blocks until the new goroutine can be added without the number of
|
// It blocks until the new goroutine can be added without the number of
|
||||||
// active goroutines in the group exceeding the configured limit.
|
// active goroutines in the group exceeding the configured limit.
|
||||||
//
|
//
|
||||||
// The first call to return a non-nil error cancels the group's context, if the
|
// It blocks until the new goroutine can be added without the number of
|
||||||
// group was created by calling WithContext. The error will be returned by Wait.
|
// goroutines in the group exceeding the configured limit.
|
||||||
|
//
|
||||||
|
// The first goroutine in the group that returns a non-nil error, panics, or
|
||||||
|
// invokes [runtime.Goexit] will cancel the associated Context, if any.
|
||||||
func (g *Group) Go(f func() error) {
|
func (g *Group) Go(f func() error) {
|
||||||
if g.sem != nil {
|
if g.sem != nil {
|
||||||
g.sem <- token{}
|
g.sem <- token{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g.add(f)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Group) add(f func() error) {
|
||||||
g.wg.Add(1)
|
g.wg.Add(1)
|
||||||
go func() {
|
go func() {
|
||||||
defer g.done()
|
defer g.done()
|
||||||
|
normalReturn := false
|
||||||
|
defer func() {
|
||||||
|
if normalReturn {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
v := recover()
|
||||||
|
g.mu.Lock()
|
||||||
|
defer g.mu.Unlock()
|
||||||
|
if !g.abnormal {
|
||||||
|
if g.cancel != nil {
|
||||||
|
g.cancel(g.err)
|
||||||
|
}
|
||||||
|
g.abnormal = true
|
||||||
|
}
|
||||||
|
if v != nil && g.panicValue == nil {
|
||||||
|
switch v := v.(type) {
|
||||||
|
case error:
|
||||||
|
g.panicValue = PanicError{
|
||||||
|
Recovered: v,
|
||||||
|
Stack: debug.Stack(),
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
g.panicValue = PanicValue{
|
||||||
|
Recovered: v,
|
||||||
|
Stack: debug.Stack(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
if err := f(); err != nil {
|
err := f()
|
||||||
|
normalReturn = true
|
||||||
|
if err != nil {
|
||||||
g.errOnce.Do(func() {
|
g.errOnce.Do(func() {
|
||||||
g.err = err
|
g.err = err
|
||||||
if g.cancel != nil {
|
if g.cancel != nil {
|
||||||
@ -101,19 +154,7 @@ func (g *Group) TryGo(f func() error) bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g.wg.Add(1)
|
g.add(f)
|
||||||
go func() {
|
|
||||||
defer g.done()
|
|
||||||
|
|
||||||
if err := f(); err != nil {
|
|
||||||
g.errOnce.Do(func() {
|
|
||||||
g.err = err
|
|
||||||
if g.cancel != nil {
|
|
||||||
g.cancel(g.err)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,3 +176,33 @@ func (g *Group) SetLimit(n int) {
|
|||||||
}
|
}
|
||||||
g.sem = make(chan token, n)
|
g.sem = make(chan token, n)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PanicError wraps an error recovered from an unhandled panic
|
||||||
|
// when calling a function passed to Go or TryGo.
|
||||||
|
type PanicError struct {
|
||||||
|
Recovered error
|
||||||
|
Stack []byte // result of call to [debug.Stack]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p PanicError) Error() string {
|
||||||
|
// A Go Error method conventionally does not include a stack dump, so omit it
|
||||||
|
// here. (Callers who care can extract it from the Stack field.)
|
||||||
|
return fmt.Sprintf("recovered from errgroup.Group: %v", p.Recovered)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p PanicError) Unwrap() error { return p.Recovered }
|
||||||
|
|
||||||
|
// PanicValue wraps a value that does not implement the error interface,
|
||||||
|
// recovered from an unhandled panic when calling a function passed to Go or
|
||||||
|
// TryGo.
|
||||||
|
type PanicValue struct {
|
||||||
|
Recovered any
|
||||||
|
Stack []byte // result of call to [debug.Stack]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p PanicValue) String() string {
|
||||||
|
if len(p.Stack) > 0 {
|
||||||
|
return fmt.Sprintf("recovered from errgroup.Group: %v\n%s", p.Recovered, p.Stack)
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("recovered from errgroup.Group: %v", p.Recovered)
|
||||||
|
}
|
||||||
|
11
vendor/golang.org/x/sys/cpu/cpu.go
generated
vendored
11
vendor/golang.org/x/sys/cpu/cpu.go
generated
vendored
@ -232,6 +232,17 @@ var RISCV64 struct {
|
|||||||
HasZba bool // Address generation instructions extension
|
HasZba bool // Address generation instructions extension
|
||||||
HasZbb bool // Basic bit-manipulation extension
|
HasZbb bool // Basic bit-manipulation extension
|
||||||
HasZbs bool // Single-bit instructions extension
|
HasZbs bool // Single-bit instructions extension
|
||||||
|
HasZvbb bool // Vector Basic Bit-manipulation
|
||||||
|
HasZvbc bool // Vector Carryless Multiplication
|
||||||
|
HasZvkb bool // Vector Cryptography Bit-manipulation
|
||||||
|
HasZvkt bool // Vector Data-Independent Execution Latency
|
||||||
|
HasZvkg bool // Vector GCM/GMAC
|
||||||
|
HasZvkn bool // NIST Algorithm Suite (AES/SHA256/SHA512)
|
||||||
|
HasZvknc bool // NIST Algorithm Suite with carryless multiply
|
||||||
|
HasZvkng bool // NIST Algorithm Suite with GCM
|
||||||
|
HasZvks bool // ShangMi Algorithm Suite
|
||||||
|
HasZvksc bool // ShangMi Algorithm Suite with carryless multiplication
|
||||||
|
HasZvksg bool // ShangMi Algorithm Suite with GCM
|
||||||
_ CacheLinePad
|
_ CacheLinePad
|
||||||
}
|
}
|
||||||
|
|
||||||
|
23
vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go
generated
vendored
23
vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go
generated
vendored
@ -58,6 +58,15 @@ const (
|
|||||||
riscv_HWPROBE_EXT_ZBA = 0x8
|
riscv_HWPROBE_EXT_ZBA = 0x8
|
||||||
riscv_HWPROBE_EXT_ZBB = 0x10
|
riscv_HWPROBE_EXT_ZBB = 0x10
|
||||||
riscv_HWPROBE_EXT_ZBS = 0x20
|
riscv_HWPROBE_EXT_ZBS = 0x20
|
||||||
|
riscv_HWPROBE_EXT_ZVBB = 0x20000
|
||||||
|
riscv_HWPROBE_EXT_ZVBC = 0x40000
|
||||||
|
riscv_HWPROBE_EXT_ZVKB = 0x80000
|
||||||
|
riscv_HWPROBE_EXT_ZVKG = 0x100000
|
||||||
|
riscv_HWPROBE_EXT_ZVKNED = 0x200000
|
||||||
|
riscv_HWPROBE_EXT_ZVKNHB = 0x800000
|
||||||
|
riscv_HWPROBE_EXT_ZVKSED = 0x1000000
|
||||||
|
riscv_HWPROBE_EXT_ZVKSH = 0x2000000
|
||||||
|
riscv_HWPROBE_EXT_ZVKT = 0x4000000
|
||||||
riscv_HWPROBE_KEY_CPUPERF_0 = 0x5
|
riscv_HWPROBE_KEY_CPUPERF_0 = 0x5
|
||||||
riscv_HWPROBE_MISALIGNED_FAST = 0x3
|
riscv_HWPROBE_MISALIGNED_FAST = 0x3
|
||||||
riscv_HWPROBE_MISALIGNED_MASK = 0x7
|
riscv_HWPROBE_MISALIGNED_MASK = 0x7
|
||||||
@ -99,6 +108,20 @@ func doinit() {
|
|||||||
RISCV64.HasZba = isSet(v, riscv_HWPROBE_EXT_ZBA)
|
RISCV64.HasZba = isSet(v, riscv_HWPROBE_EXT_ZBA)
|
||||||
RISCV64.HasZbb = isSet(v, riscv_HWPROBE_EXT_ZBB)
|
RISCV64.HasZbb = isSet(v, riscv_HWPROBE_EXT_ZBB)
|
||||||
RISCV64.HasZbs = isSet(v, riscv_HWPROBE_EXT_ZBS)
|
RISCV64.HasZbs = isSet(v, riscv_HWPROBE_EXT_ZBS)
|
||||||
|
RISCV64.HasZvbb = isSet(v, riscv_HWPROBE_EXT_ZVBB)
|
||||||
|
RISCV64.HasZvbc = isSet(v, riscv_HWPROBE_EXT_ZVBC)
|
||||||
|
RISCV64.HasZvkb = isSet(v, riscv_HWPROBE_EXT_ZVKB)
|
||||||
|
RISCV64.HasZvkg = isSet(v, riscv_HWPROBE_EXT_ZVKG)
|
||||||
|
RISCV64.HasZvkt = isSet(v, riscv_HWPROBE_EXT_ZVKT)
|
||||||
|
// Cryptography shorthand extensions
|
||||||
|
RISCV64.HasZvkn = isSet(v, riscv_HWPROBE_EXT_ZVKNED) &&
|
||||||
|
isSet(v, riscv_HWPROBE_EXT_ZVKNHB) && RISCV64.HasZvkb && RISCV64.HasZvkt
|
||||||
|
RISCV64.HasZvknc = RISCV64.HasZvkn && RISCV64.HasZvbc
|
||||||
|
RISCV64.HasZvkng = RISCV64.HasZvkn && RISCV64.HasZvkg
|
||||||
|
RISCV64.HasZvks = isSet(v, riscv_HWPROBE_EXT_ZVKSED) &&
|
||||||
|
isSet(v, riscv_HWPROBE_EXT_ZVKSH) && RISCV64.HasZvkb && RISCV64.HasZvkt
|
||||||
|
RISCV64.HasZvksc = RISCV64.HasZvks && RISCV64.HasZvbc
|
||||||
|
RISCV64.HasZvksg = RISCV64.HasZvks && RISCV64.HasZvkg
|
||||||
}
|
}
|
||||||
if pairs[1].key != -1 {
|
if pairs[1].key != -1 {
|
||||||
v := pairs[1].value & riscv_HWPROBE_MISALIGNED_MASK
|
v := pairs[1].value & riscv_HWPROBE_MISALIGNED_MASK
|
||||||
|
12
vendor/golang.org/x/sys/cpu/cpu_riscv64.go
generated
vendored
12
vendor/golang.org/x/sys/cpu/cpu_riscv64.go
generated
vendored
@ -16,5 +16,17 @@ func initOptions() {
|
|||||||
{Name: "zba", Feature: &RISCV64.HasZba},
|
{Name: "zba", Feature: &RISCV64.HasZba},
|
||||||
{Name: "zbb", Feature: &RISCV64.HasZbb},
|
{Name: "zbb", Feature: &RISCV64.HasZbb},
|
||||||
{Name: "zbs", Feature: &RISCV64.HasZbs},
|
{Name: "zbs", Feature: &RISCV64.HasZbs},
|
||||||
|
// RISC-V Cryptography Extensions
|
||||||
|
{Name: "zvbb", Feature: &RISCV64.HasZvbb},
|
||||||
|
{Name: "zvbc", Feature: &RISCV64.HasZvbc},
|
||||||
|
{Name: "zvkb", Feature: &RISCV64.HasZvkb},
|
||||||
|
{Name: "zvkg", Feature: &RISCV64.HasZvkg},
|
||||||
|
{Name: "zvkt", Feature: &RISCV64.HasZvkt},
|
||||||
|
{Name: "zvkn", Feature: &RISCV64.HasZvkn},
|
||||||
|
{Name: "zvknc", Feature: &RISCV64.HasZvknc},
|
||||||
|
{Name: "zvkng", Feature: &RISCV64.HasZvkng},
|
||||||
|
{Name: "zvks", Feature: &RISCV64.HasZvks},
|
||||||
|
{Name: "zvksc", Feature: &RISCV64.HasZvksc},
|
||||||
|
{Name: "zvksg", Feature: &RISCV64.HasZvksg},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
49
vendor/golang.org/x/sys/windows/security_windows.go
generated
vendored
49
vendor/golang.org/x/sys/windows/security_windows.go
generated
vendored
@ -1303,7 +1303,10 @@ func (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DE
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if absoluteSDSize > 0 {
|
if absoluteSDSize > 0 {
|
||||||
absoluteSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, absoluteSDSize)[0]))
|
absoluteSD = new(SECURITY_DESCRIPTOR)
|
||||||
|
if unsafe.Sizeof(*absoluteSD) < uintptr(absoluteSDSize) {
|
||||||
|
panic("sizeof(SECURITY_DESCRIPTOR) too small")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
var (
|
var (
|
||||||
dacl *ACL
|
dacl *ACL
|
||||||
@ -1312,19 +1315,55 @@ func (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DE
|
|||||||
group *SID
|
group *SID
|
||||||
)
|
)
|
||||||
if daclSize > 0 {
|
if daclSize > 0 {
|
||||||
dacl = (*ACL)(unsafe.Pointer(&make([]byte, daclSize)[0]))
|
dacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, daclSize))))
|
||||||
}
|
}
|
||||||
if saclSize > 0 {
|
if saclSize > 0 {
|
||||||
sacl = (*ACL)(unsafe.Pointer(&make([]byte, saclSize)[0]))
|
sacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, saclSize))))
|
||||||
}
|
}
|
||||||
if ownerSize > 0 {
|
if ownerSize > 0 {
|
||||||
owner = (*SID)(unsafe.Pointer(&make([]byte, ownerSize)[0]))
|
owner = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, ownerSize))))
|
||||||
}
|
}
|
||||||
if groupSize > 0 {
|
if groupSize > 0 {
|
||||||
group = (*SID)(unsafe.Pointer(&make([]byte, groupSize)[0]))
|
group = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, groupSize))))
|
||||||
}
|
}
|
||||||
|
// We call into Windows via makeAbsoluteSD, which sets up
|
||||||
|
// pointers within absoluteSD that point to other chunks of memory
|
||||||
|
// we pass into makeAbsoluteSD, and that happens outside the view of the GC.
|
||||||
|
// We therefore take some care here to then verify the pointers are as we expect
|
||||||
|
// and set them explicitly in view of the GC. See https://go.dev/issue/73199.
|
||||||
|
// TODO: consider weak pointers once Go 1.24 is appropriate. See suggestion in https://go.dev/cl/663575.
|
||||||
err = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize,
|
err = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize,
|
||||||
dacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize)
|
dacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize)
|
||||||
|
if err != nil {
|
||||||
|
// Don't return absoluteSD, which might be partially initialized.
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
// Before using any fields, verify absoluteSD is in the format we expect according to Windows.
|
||||||
|
// See https://learn.microsoft.com/en-us/windows/win32/secauthz/absolute-and-self-relative-security-descriptors
|
||||||
|
absControl, _, err := absoluteSD.Control()
|
||||||
|
if err != nil {
|
||||||
|
panic("absoluteSD: " + err.Error())
|
||||||
|
}
|
||||||
|
if absControl&SE_SELF_RELATIVE != 0 {
|
||||||
|
panic("absoluteSD not in absolute format")
|
||||||
|
}
|
||||||
|
if absoluteSD.dacl != dacl {
|
||||||
|
panic("dacl pointer mismatch")
|
||||||
|
}
|
||||||
|
if absoluteSD.sacl != sacl {
|
||||||
|
panic("sacl pointer mismatch")
|
||||||
|
}
|
||||||
|
if absoluteSD.owner != owner {
|
||||||
|
panic("owner pointer mismatch")
|
||||||
|
}
|
||||||
|
if absoluteSD.group != group {
|
||||||
|
panic("group pointer mismatch")
|
||||||
|
}
|
||||||
|
absoluteSD.dacl = dacl
|
||||||
|
absoluteSD.sacl = sacl
|
||||||
|
absoluteSD.owner = owner
|
||||||
|
absoluteSD.group = group
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
6
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
6
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
@ -870,6 +870,7 @@ const socket_error = uintptr(^uint32(0))
|
|||||||
//sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom
|
//sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom
|
||||||
//sys WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo
|
//sys WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo
|
||||||
//sys WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.WSASocketW
|
//sys WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.WSASocketW
|
||||||
|
//sys WSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) [failretval!=0] = ws2_32.WSADuplicateSocketW
|
||||||
//sys GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname
|
//sys GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname
|
||||||
//sys GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname
|
//sys GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname
|
||||||
//sys Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs
|
//sys Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs
|
||||||
@ -1698,8 +1699,9 @@ func NewNTUnicodeString(s string) (*NTUnicodeString, error) {
|
|||||||
|
|
||||||
// Slice returns a uint16 slice that aliases the data in the NTUnicodeString.
|
// Slice returns a uint16 slice that aliases the data in the NTUnicodeString.
|
||||||
func (s *NTUnicodeString) Slice() []uint16 {
|
func (s *NTUnicodeString) Slice() []uint16 {
|
||||||
slice := unsafe.Slice(s.Buffer, s.MaximumLength)
|
// Note: this rounds the length down, if it happens
|
||||||
return slice[:s.Length]
|
// to (incorrectly) be odd. Probably safer than rounding up.
|
||||||
|
return unsafe.Slice(s.Buffer, s.MaximumLength/2)[:s.Length/2]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *NTUnicodeString) String() string {
|
func (s *NTUnicodeString) String() string {
|
||||||
|
212
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
212
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
@ -2700,6 +2700,8 @@ type CommTimeouts struct {
|
|||||||
|
|
||||||
// NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING.
|
// NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING.
|
||||||
type NTUnicodeString struct {
|
type NTUnicodeString struct {
|
||||||
|
// Note: Length and MaximumLength are in *bytes*, not uint16s.
|
||||||
|
// They should always be even.
|
||||||
Length uint16
|
Length uint16
|
||||||
MaximumLength uint16
|
MaximumLength uint16
|
||||||
Buffer *uint16
|
Buffer *uint16
|
||||||
@ -3628,3 +3630,213 @@ const (
|
|||||||
KLF_NOTELLSHELL = 0x00000080
|
KLF_NOTELLSHELL = 0x00000080
|
||||||
KLF_SETFORPROCESS = 0x00000100
|
KLF_SETFORPROCESS = 0x00000100
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Virtual Key codes
|
||||||
|
// https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
||||||
|
const (
|
||||||
|
VK_LBUTTON = 0x01
|
||||||
|
VK_RBUTTON = 0x02
|
||||||
|
VK_CANCEL = 0x03
|
||||||
|
VK_MBUTTON = 0x04
|
||||||
|
VK_XBUTTON1 = 0x05
|
||||||
|
VK_XBUTTON2 = 0x06
|
||||||
|
VK_BACK = 0x08
|
||||||
|
VK_TAB = 0x09
|
||||||
|
VK_CLEAR = 0x0C
|
||||||
|
VK_RETURN = 0x0D
|
||||||
|
VK_SHIFT = 0x10
|
||||||
|
VK_CONTROL = 0x11
|
||||||
|
VK_MENU = 0x12
|
||||||
|
VK_PAUSE = 0x13
|
||||||
|
VK_CAPITAL = 0x14
|
||||||
|
VK_KANA = 0x15
|
||||||
|
VK_HANGEUL = 0x15
|
||||||
|
VK_HANGUL = 0x15
|
||||||
|
VK_IME_ON = 0x16
|
||||||
|
VK_JUNJA = 0x17
|
||||||
|
VK_FINAL = 0x18
|
||||||
|
VK_HANJA = 0x19
|
||||||
|
VK_KANJI = 0x19
|
||||||
|
VK_IME_OFF = 0x1A
|
||||||
|
VK_ESCAPE = 0x1B
|
||||||
|
VK_CONVERT = 0x1C
|
||||||
|
VK_NONCONVERT = 0x1D
|
||||||
|
VK_ACCEPT = 0x1E
|
||||||
|
VK_MODECHANGE = 0x1F
|
||||||
|
VK_SPACE = 0x20
|
||||||
|
VK_PRIOR = 0x21
|
||||||
|
VK_NEXT = 0x22
|
||||||
|
VK_END = 0x23
|
||||||
|
VK_HOME = 0x24
|
||||||
|
VK_LEFT = 0x25
|
||||||
|
VK_UP = 0x26
|
||||||
|
VK_RIGHT = 0x27
|
||||||
|
VK_DOWN = 0x28
|
||||||
|
VK_SELECT = 0x29
|
||||||
|
VK_PRINT = 0x2A
|
||||||
|
VK_EXECUTE = 0x2B
|
||||||
|
VK_SNAPSHOT = 0x2C
|
||||||
|
VK_INSERT = 0x2D
|
||||||
|
VK_DELETE = 0x2E
|
||||||
|
VK_HELP = 0x2F
|
||||||
|
VK_LWIN = 0x5B
|
||||||
|
VK_RWIN = 0x5C
|
||||||
|
VK_APPS = 0x5D
|
||||||
|
VK_SLEEP = 0x5F
|
||||||
|
VK_NUMPAD0 = 0x60
|
||||||
|
VK_NUMPAD1 = 0x61
|
||||||
|
VK_NUMPAD2 = 0x62
|
||||||
|
VK_NUMPAD3 = 0x63
|
||||||
|
VK_NUMPAD4 = 0x64
|
||||||
|
VK_NUMPAD5 = 0x65
|
||||||
|
VK_NUMPAD6 = 0x66
|
||||||
|
VK_NUMPAD7 = 0x67
|
||||||
|
VK_NUMPAD8 = 0x68
|
||||||
|
VK_NUMPAD9 = 0x69
|
||||||
|
VK_MULTIPLY = 0x6A
|
||||||
|
VK_ADD = 0x6B
|
||||||
|
VK_SEPARATOR = 0x6C
|
||||||
|
VK_SUBTRACT = 0x6D
|
||||||
|
VK_DECIMAL = 0x6E
|
||||||
|
VK_DIVIDE = 0x6F
|
||||||
|
VK_F1 = 0x70
|
||||||
|
VK_F2 = 0x71
|
||||||
|
VK_F3 = 0x72
|
||||||
|
VK_F4 = 0x73
|
||||||
|
VK_F5 = 0x74
|
||||||
|
VK_F6 = 0x75
|
||||||
|
VK_F7 = 0x76
|
||||||
|
VK_F8 = 0x77
|
||||||
|
VK_F9 = 0x78
|
||||||
|
VK_F10 = 0x79
|
||||||
|
VK_F11 = 0x7A
|
||||||
|
VK_F12 = 0x7B
|
||||||
|
VK_F13 = 0x7C
|
||||||
|
VK_F14 = 0x7D
|
||||||
|
VK_F15 = 0x7E
|
||||||
|
VK_F16 = 0x7F
|
||||||
|
VK_F17 = 0x80
|
||||||
|
VK_F18 = 0x81
|
||||||
|
VK_F19 = 0x82
|
||||||
|
VK_F20 = 0x83
|
||||||
|
VK_F21 = 0x84
|
||||||
|
VK_F22 = 0x85
|
||||||
|
VK_F23 = 0x86
|
||||||
|
VK_F24 = 0x87
|
||||||
|
VK_NUMLOCK = 0x90
|
||||||
|
VK_SCROLL = 0x91
|
||||||
|
VK_OEM_NEC_EQUAL = 0x92
|
||||||
|
VK_OEM_FJ_JISHO = 0x92
|
||||||
|
VK_OEM_FJ_MASSHOU = 0x93
|
||||||
|
VK_OEM_FJ_TOUROKU = 0x94
|
||||||
|
VK_OEM_FJ_LOYA = 0x95
|
||||||
|
VK_OEM_FJ_ROYA = 0x96
|
||||||
|
VK_LSHIFT = 0xA0
|
||||||
|
VK_RSHIFT = 0xA1
|
||||||
|
VK_LCONTROL = 0xA2
|
||||||
|
VK_RCONTROL = 0xA3
|
||||||
|
VK_LMENU = 0xA4
|
||||||
|
VK_RMENU = 0xA5
|
||||||
|
VK_BROWSER_BACK = 0xA6
|
||||||
|
VK_BROWSER_FORWARD = 0xA7
|
||||||
|
VK_BROWSER_REFRESH = 0xA8
|
||||||
|
VK_BROWSER_STOP = 0xA9
|
||||||
|
VK_BROWSER_SEARCH = 0xAA
|
||||||
|
VK_BROWSER_FAVORITES = 0xAB
|
||||||
|
VK_BROWSER_HOME = 0xAC
|
||||||
|
VK_VOLUME_MUTE = 0xAD
|
||||||
|
VK_VOLUME_DOWN = 0xAE
|
||||||
|
VK_VOLUME_UP = 0xAF
|
||||||
|
VK_MEDIA_NEXT_TRACK = 0xB0
|
||||||
|
VK_MEDIA_PREV_TRACK = 0xB1
|
||||||
|
VK_MEDIA_STOP = 0xB2
|
||||||
|
VK_MEDIA_PLAY_PAUSE = 0xB3
|
||||||
|
VK_LAUNCH_MAIL = 0xB4
|
||||||
|
VK_LAUNCH_MEDIA_SELECT = 0xB5
|
||||||
|
VK_LAUNCH_APP1 = 0xB6
|
||||||
|
VK_LAUNCH_APP2 = 0xB7
|
||||||
|
VK_OEM_1 = 0xBA
|
||||||
|
VK_OEM_PLUS = 0xBB
|
||||||
|
VK_OEM_COMMA = 0xBC
|
||||||
|
VK_OEM_MINUS = 0xBD
|
||||||
|
VK_OEM_PERIOD = 0xBE
|
||||||
|
VK_OEM_2 = 0xBF
|
||||||
|
VK_OEM_3 = 0xC0
|
||||||
|
VK_OEM_4 = 0xDB
|
||||||
|
VK_OEM_5 = 0xDC
|
||||||
|
VK_OEM_6 = 0xDD
|
||||||
|
VK_OEM_7 = 0xDE
|
||||||
|
VK_OEM_8 = 0xDF
|
||||||
|
VK_OEM_AX = 0xE1
|
||||||
|
VK_OEM_102 = 0xE2
|
||||||
|
VK_ICO_HELP = 0xE3
|
||||||
|
VK_ICO_00 = 0xE4
|
||||||
|
VK_PROCESSKEY = 0xE5
|
||||||
|
VK_ICO_CLEAR = 0xE6
|
||||||
|
VK_OEM_RESET = 0xE9
|
||||||
|
VK_OEM_JUMP = 0xEA
|
||||||
|
VK_OEM_PA1 = 0xEB
|
||||||
|
VK_OEM_PA2 = 0xEC
|
||||||
|
VK_OEM_PA3 = 0xED
|
||||||
|
VK_OEM_WSCTRL = 0xEE
|
||||||
|
VK_OEM_CUSEL = 0xEF
|
||||||
|
VK_OEM_ATTN = 0xF0
|
||||||
|
VK_OEM_FINISH = 0xF1
|
||||||
|
VK_OEM_COPY = 0xF2
|
||||||
|
VK_OEM_AUTO = 0xF3
|
||||||
|
VK_OEM_ENLW = 0xF4
|
||||||
|
VK_OEM_BACKTAB = 0xF5
|
||||||
|
VK_ATTN = 0xF6
|
||||||
|
VK_CRSEL = 0xF7
|
||||||
|
VK_EXSEL = 0xF8
|
||||||
|
VK_EREOF = 0xF9
|
||||||
|
VK_PLAY = 0xFA
|
||||||
|
VK_ZOOM = 0xFB
|
||||||
|
VK_NONAME = 0xFC
|
||||||
|
VK_PA1 = 0xFD
|
||||||
|
VK_OEM_CLEAR = 0xFE
|
||||||
|
)
|
||||||
|
|
||||||
|
// Mouse button constants.
|
||||||
|
// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str
|
||||||
|
const (
|
||||||
|
FROM_LEFT_1ST_BUTTON_PRESSED = 0x0001
|
||||||
|
RIGHTMOST_BUTTON_PRESSED = 0x0002
|
||||||
|
FROM_LEFT_2ND_BUTTON_PRESSED = 0x0004
|
||||||
|
FROM_LEFT_3RD_BUTTON_PRESSED = 0x0008
|
||||||
|
FROM_LEFT_4TH_BUTTON_PRESSED = 0x0010
|
||||||
|
)
|
||||||
|
|
||||||
|
// Control key state constaints.
|
||||||
|
// https://docs.microsoft.com/en-us/windows/console/key-event-record-str
|
||||||
|
// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str
|
||||||
|
const (
|
||||||
|
CAPSLOCK_ON = 0x0080
|
||||||
|
ENHANCED_KEY = 0x0100
|
||||||
|
LEFT_ALT_PRESSED = 0x0002
|
||||||
|
LEFT_CTRL_PRESSED = 0x0008
|
||||||
|
NUMLOCK_ON = 0x0020
|
||||||
|
RIGHT_ALT_PRESSED = 0x0001
|
||||||
|
RIGHT_CTRL_PRESSED = 0x0004
|
||||||
|
SCROLLLOCK_ON = 0x0040
|
||||||
|
SHIFT_PRESSED = 0x0010
|
||||||
|
)
|
||||||
|
|
||||||
|
// Mouse event record event flags.
|
||||||
|
// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str
|
||||||
|
const (
|
||||||
|
MOUSE_MOVED = 0x0001
|
||||||
|
DOUBLE_CLICK = 0x0002
|
||||||
|
MOUSE_WHEELED = 0x0004
|
||||||
|
MOUSE_HWHEELED = 0x0008
|
||||||
|
)
|
||||||
|
|
||||||
|
// Input Record Event Types
|
||||||
|
// https://learn.microsoft.com/en-us/windows/console/input-record-str
|
||||||
|
const (
|
||||||
|
FOCUS_EVENT = 0x0010
|
||||||
|
KEY_EVENT = 0x0001
|
||||||
|
MENU_EVENT = 0x0008
|
||||||
|
MOUSE_EVENT = 0x0002
|
||||||
|
WINDOW_BUFFER_SIZE_EVENT = 0x0004
|
||||||
|
)
|
||||||
|
9
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
9
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
@ -511,6 +511,7 @@ var (
|
|||||||
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
||||||
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
||||||
procWSACleanup = modws2_32.NewProc("WSACleanup")
|
procWSACleanup = modws2_32.NewProc("WSACleanup")
|
||||||
|
procWSADuplicateSocketW = modws2_32.NewProc("WSADuplicateSocketW")
|
||||||
procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW")
|
procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW")
|
||||||
procWSAGetOverlappedResult = modws2_32.NewProc("WSAGetOverlappedResult")
|
procWSAGetOverlappedResult = modws2_32.NewProc("WSAGetOverlappedResult")
|
||||||
procWSAIoctl = modws2_32.NewProc("WSAIoctl")
|
procWSAIoctl = modws2_32.NewProc("WSAIoctl")
|
||||||
@ -4391,6 +4392,14 @@ func WSACleanup() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procWSADuplicateSocketW.Addr(), 3, uintptr(s), uintptr(processID), uintptr(unsafe.Pointer(info)))
|
||||||
|
if r1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
|
func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
|
||||||
r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
|
r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
|
||||||
n = int32(r0)
|
n = int32(r0)
|
||||||
|
68
vendor/golang.org/x/term/terminal.go
generated
vendored
68
vendor/golang.org/x/term/terminal.go
generated
vendored
@ -6,6 +6,7 @@ package term
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -36,6 +37,26 @@ var vt100EscapeCodes = EscapeCodes{
|
|||||||
Reset: []byte{keyEscape, '[', '0', 'm'},
|
Reset: []byte{keyEscape, '[', '0', 'm'},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A History provides a (possibly bounded) queue of input lines read by [Terminal.ReadLine].
|
||||||
|
type History interface {
|
||||||
|
// Add will be called by [Terminal.ReadLine] to add
|
||||||
|
// a new, most recent entry to the history.
|
||||||
|
// It is allowed to drop any entry, including
|
||||||
|
// the entry being added (e.g., if it's deemed an invalid entry),
|
||||||
|
// the least-recent entry (e.g., to keep the history bounded),
|
||||||
|
// or any other entry.
|
||||||
|
Add(entry string)
|
||||||
|
|
||||||
|
// Len returns the number of entries in the history.
|
||||||
|
Len() int
|
||||||
|
|
||||||
|
// At returns an entry from the history.
|
||||||
|
// Index 0 is the most-recently added entry and
|
||||||
|
// index Len()-1 is the least-recently added entry.
|
||||||
|
// If index is < 0 or >= Len(), it panics.
|
||||||
|
At(idx int) string
|
||||||
|
}
|
||||||
|
|
||||||
// Terminal contains the state for running a VT100 terminal that is capable of
|
// Terminal contains the state for running a VT100 terminal that is capable of
|
||||||
// reading lines of input.
|
// reading lines of input.
|
||||||
type Terminal struct {
|
type Terminal struct {
|
||||||
@ -86,9 +107,14 @@ type Terminal struct {
|
|||||||
remainder []byte
|
remainder []byte
|
||||||
inBuf [256]byte
|
inBuf [256]byte
|
||||||
|
|
||||||
// history contains previously entered commands so that they can be
|
// History records and retrieves lines of input read by [ReadLine] which
|
||||||
// accessed with the up and down keys.
|
// a user can retrieve and navigate using the up and down arrow keys.
|
||||||
history stRingBuffer
|
//
|
||||||
|
// It is not safe to call ReadLine concurrently with any methods on History.
|
||||||
|
//
|
||||||
|
// [NewTerminal] sets this to a default implementation that records the
|
||||||
|
// last 100 lines of input.
|
||||||
|
History History
|
||||||
// historyIndex stores the currently accessed history entry, where zero
|
// historyIndex stores the currently accessed history entry, where zero
|
||||||
// means the immediately previous entry.
|
// means the immediately previous entry.
|
||||||
historyIndex int
|
historyIndex int
|
||||||
@ -111,6 +137,7 @@ func NewTerminal(c io.ReadWriter, prompt string) *Terminal {
|
|||||||
termHeight: 24,
|
termHeight: 24,
|
||||||
echo: true,
|
echo: true,
|
||||||
historyIndex: -1,
|
historyIndex: -1,
|
||||||
|
History: &stRingBuffer{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -450,6 +477,23 @@ func visualLength(runes []rune) int {
|
|||||||
return length
|
return length
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// histroryAt unlocks the terminal and relocks it while calling History.At.
|
||||||
|
func (t *Terminal) historyAt(idx int) (string, bool) {
|
||||||
|
t.lock.Unlock() // Unlock to avoid deadlock if History methods use the output writer.
|
||||||
|
defer t.lock.Lock() // panic in At (or Len) protection.
|
||||||
|
if idx < 0 || idx >= t.History.Len() {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
return t.History.At(idx), true
|
||||||
|
}
|
||||||
|
|
||||||
|
// historyAdd unlocks the terminal and relocks it while calling History.Add.
|
||||||
|
func (t *Terminal) historyAdd(entry string) {
|
||||||
|
t.lock.Unlock() // Unlock to avoid deadlock if History methods use the output writer.
|
||||||
|
defer t.lock.Lock() // panic in Add protection.
|
||||||
|
t.History.Add(entry)
|
||||||
|
}
|
||||||
|
|
||||||
// handleKey processes the given key and, optionally, returns a line of text
|
// handleKey processes the given key and, optionally, returns a line of text
|
||||||
// that the user has entered.
|
// that the user has entered.
|
||||||
func (t *Terminal) handleKey(key rune) (line string, ok bool) {
|
func (t *Terminal) handleKey(key rune) (line string, ok bool) {
|
||||||
@ -497,7 +541,7 @@ func (t *Terminal) handleKey(key rune) (line string, ok bool) {
|
|||||||
t.pos = len(t.line)
|
t.pos = len(t.line)
|
||||||
t.moveCursorToPos(t.pos)
|
t.moveCursorToPos(t.pos)
|
||||||
case keyUp:
|
case keyUp:
|
||||||
entry, ok := t.history.NthPreviousEntry(t.historyIndex + 1)
|
entry, ok := t.historyAt(t.historyIndex + 1)
|
||||||
if !ok {
|
if !ok {
|
||||||
return "", false
|
return "", false
|
||||||
}
|
}
|
||||||
@ -516,7 +560,7 @@ func (t *Terminal) handleKey(key rune) (line string, ok bool) {
|
|||||||
t.setLine(runes, len(runes))
|
t.setLine(runes, len(runes))
|
||||||
t.historyIndex--
|
t.historyIndex--
|
||||||
default:
|
default:
|
||||||
entry, ok := t.history.NthPreviousEntry(t.historyIndex - 1)
|
entry, ok := t.historyAt(t.historyIndex - 1)
|
||||||
if ok {
|
if ok {
|
||||||
t.historyIndex--
|
t.historyIndex--
|
||||||
runes := []rune(entry)
|
runes := []rune(entry)
|
||||||
@ -781,7 +825,7 @@ func (t *Terminal) readLine() (line string, err error) {
|
|||||||
if lineOk {
|
if lineOk {
|
||||||
if t.echo {
|
if t.echo {
|
||||||
t.historyIndex = -1
|
t.historyIndex = -1
|
||||||
t.history.Add(line)
|
t.historyAdd(line)
|
||||||
}
|
}
|
||||||
if lineIsPasted {
|
if lineIsPasted {
|
||||||
err = ErrPasteIndicator
|
err = ErrPasteIndicator
|
||||||
@ -938,19 +982,23 @@ func (s *stRingBuffer) Add(a string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NthPreviousEntry returns the value passed to the nth previous call to Add.
|
func (s *stRingBuffer) Len() int {
|
||||||
|
return s.size
|
||||||
|
}
|
||||||
|
|
||||||
|
// At returns the value passed to the nth previous call to Add.
|
||||||
// If n is zero then the immediately prior value is returned, if one, then the
|
// If n is zero then the immediately prior value is returned, if one, then the
|
||||||
// next most recent, and so on. If such an element doesn't exist then ok is
|
// next most recent, and so on. If such an element doesn't exist then ok is
|
||||||
// false.
|
// false.
|
||||||
func (s *stRingBuffer) NthPreviousEntry(n int) (value string, ok bool) {
|
func (s *stRingBuffer) At(n int) string {
|
||||||
if n < 0 || n >= s.size {
|
if n < 0 || n >= s.size {
|
||||||
return "", false
|
panic(fmt.Sprintf("term: history index [%d] out of range [0,%d)", n, s.size))
|
||||||
}
|
}
|
||||||
index := s.head - n
|
index := s.head - n
|
||||||
if index < 0 {
|
if index < 0 {
|
||||||
index += s.max
|
index += s.max
|
||||||
}
|
}
|
||||||
return s.entries[index], true
|
return s.entries[index]
|
||||||
}
|
}
|
||||||
|
|
||||||
// readPasswordLine reads from reader until it finds \n or io.EOF.
|
// readPasswordLine reads from reader until it finds \n or io.EOF.
|
||||||
|
12
vendor/modules.txt
vendored
12
vendor/modules.txt
vendored
@ -532,7 +532,7 @@ go.uber.org/zap/internal/exit
|
|||||||
go.uber.org/zap/internal/pool
|
go.uber.org/zap/internal/pool
|
||||||
go.uber.org/zap/internal/stacktrace
|
go.uber.org/zap/internal/stacktrace
|
||||||
go.uber.org/zap/zapcore
|
go.uber.org/zap/zapcore
|
||||||
# golang.org/x/crypto v0.37.0
|
# golang.org/x/crypto v0.38.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/crypto/argon2
|
golang.org/x/crypto/argon2
|
||||||
golang.org/x/crypto/blake2b
|
golang.org/x/crypto/blake2b
|
||||||
@ -541,7 +541,7 @@ golang.org/x/crypto/pbkdf2
|
|||||||
golang.org/x/crypto/pkcs12
|
golang.org/x/crypto/pkcs12
|
||||||
golang.org/x/crypto/pkcs12/internal/rc2
|
golang.org/x/crypto/pkcs12/internal/rc2
|
||||||
golang.org/x/crypto/scrypt
|
golang.org/x/crypto/scrypt
|
||||||
# golang.org/x/net v0.39.0
|
# golang.org/x/net v0.40.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/net/context
|
golang.org/x/net/context
|
||||||
golang.org/x/net/http/httpguts
|
golang.org/x/net/http/httpguts
|
||||||
@ -555,19 +555,19 @@ golang.org/x/net/trace
|
|||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/oauth2
|
golang.org/x/oauth2
|
||||||
golang.org/x/oauth2/internal
|
golang.org/x/oauth2/internal
|
||||||
# golang.org/x/sync v0.13.0
|
# golang.org/x/sync v0.14.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/sync/errgroup
|
golang.org/x/sync/errgroup
|
||||||
# golang.org/x/sys v0.32.0
|
# golang.org/x/sys v0.33.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/sys/cpu
|
golang.org/x/sys/cpu
|
||||||
golang.org/x/sys/plan9
|
golang.org/x/sys/plan9
|
||||||
golang.org/x/sys/unix
|
golang.org/x/sys/unix
|
||||||
golang.org/x/sys/windows
|
golang.org/x/sys/windows
|
||||||
# golang.org/x/term v0.31.0
|
# golang.org/x/term v0.32.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/term
|
golang.org/x/term
|
||||||
# golang.org/x/text v0.24.0
|
# golang.org/x/text v0.25.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/text/cases
|
golang.org/x/text/cases
|
||||||
golang.org/x/text/internal
|
golang.org/x/text/internal
|
||||||
|
Loading…
x
Reference in New Issue
Block a user