Skip to content

Commit 1d3e2ff

Browse files
committed
Merge branch 'main' of gitlab.com:gitlab-community/gitlab-shell into 782-lfs-lint
2 parents 31af9b1 + c2d73ce commit 1d3e2ff

File tree

29 files changed

+274
-306
lines changed

29 files changed

+274
-306
lines changed

.tool-versions

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
ruby 3.3.4
2-
golang 1.23.0
1+
ruby 3.3.5
2+
golang 1.23.1

cmd/gitlab-shell-authorized-principals-check/command/command.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// Package command handles command creation and initialization in GitLab Shell.
12
package command
23

34
import (
@@ -9,6 +10,7 @@ import (
910
"gitlab.com/gitlab-org/gitlab-shell/v14/internal/config"
1011
)
1112

13+
// New creates a new command based on provided arguments, config, and I/O.
1214
func New(arguments []string, config *config.Config, readWriter *readwriter.ReadWriter) (command.Command, error) {
1315
args, err := Parse(arguments)
1416
if err != nil {
@@ -22,6 +24,7 @@ func New(arguments []string, config *config.Config, readWriter *readwriter.ReadW
2224
return nil, disallowedcommand.Error
2325
}
2426

27+
// Parse parses command-line arguments into a CommandArgs structure.
2528
func Parse(arguments []string) (*commandargs.AuthorizedPrincipals, error) {
2629
args := &commandargs.AuthorizedPrincipals{Arguments: arguments}
2730

cmd/gitlab-shell-authorized-principals-check/main.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// Package main is the entry point for the GitLab Shell authorized principals check command.
12
package main
23

34
import (
@@ -21,6 +22,10 @@ var (
2122
)
2223

2324
func main() {
25+
os.Exit(run())
26+
}
27+
28+
func run() int {
2429
command.CheckForVersionFlag(os.Args, Version, BuildTime)
2530

2631
readWriter := &readwriter.ReadWriter{
@@ -31,32 +36,33 @@ func main() {
3136

3237
executable, err := executable.New(executable.AuthorizedPrincipalsCheck)
3338
if err != nil {
34-
fmt.Fprintln(readWriter.ErrOut, "Failed to determine executable, exiting")
35-
os.Exit(1)
39+
_, _ = fmt.Fprintln(readWriter.ErrOut, "Failed to determine executable, exiting")
40+
return 1
3641
}
3742

3843
config, err := config.NewFromDirExternal(executable.RootDir)
3944
if err != nil {
40-
fmt.Fprintln(readWriter.ErrOut, "Failed to read config, exiting")
41-
os.Exit(1)
45+
_, _ = fmt.Fprintln(readWriter.ErrOut, "Failed to read config, exiting")
46+
return 1
4247
}
4348

4449
logCloser := logger.Configure(config)
45-
defer logCloser.Close()
50+
defer logCloser.Close() //nolint:errcheck
4651

4752
cmd, err := cmd.New(os.Args[1:], config, readWriter)
4853
if err != nil {
4954
// For now this could happen if `SSH_CONNECTION` is not set on
5055
// the environment
51-
fmt.Fprintf(readWriter.ErrOut, "%v\n", err)
52-
os.Exit(1)
56+
_, _ = fmt.Fprintf(readWriter.ErrOut, "%v\n", err)
57+
return 1
5358
}
5459

5560
ctx, finished := command.Setup(executable.Name, config)
5661
defer finished()
5762

58-
if ctx, err = cmd.Execute(ctx); err != nil {
63+
if _, err = cmd.Execute(ctx); err != nil {
5964
console.DisplayWarningMessage(err.Error(), readWriter.ErrOut)
60-
os.Exit(1)
65+
return 1
6166
}
67+
return 0
6268
}

cmd/gitlab-shell-check/main.go

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// Package main is the entry point for the GitLab Shell health check command.
12
package main
23

34
import (
@@ -20,6 +21,10 @@ var (
2021
)
2122

2223
func main() {
24+
os.Exit(run())
25+
}
26+
27+
func run() int {
2328
command.CheckForVersionFlag(os.Args, Version, BuildTime)
2429

2530
readWriter := &readwriter.ReadWriter{
@@ -28,32 +33,38 @@ func main() {
2833
ErrOut: os.Stderr,
2934
}
3035

36+
exitOnError := func(err error, message string) int {
37+
if err != nil {
38+
_, _ = fmt.Fprintf(readWriter.ErrOut, "%s: %v\n", message, err)
39+
return 1
40+
}
41+
return 0
42+
}
43+
3144
executable, err := executable.New(executable.Healthcheck)
32-
if err != nil {
33-
fmt.Fprintln(readWriter.ErrOut, "Failed to determine executable, exiting")
34-
os.Exit(1)
45+
if code := exitOnError(err, "Failed to determine executable, exiting"); code != 0 {
46+
return code
3547
}
3648

3749
config, err := config.NewFromDirExternal(executable.RootDir)
38-
if err != nil {
39-
fmt.Fprintln(readWriter.ErrOut, "Failed to read config, exiting")
40-
os.Exit(1)
50+
if code := exitOnError(err, "Failed to read config, exiting"); code != 0 {
51+
return code
4152
}
4253

4354
logCloser := logger.Configure(config)
44-
defer logCloser.Close()
55+
defer logCloser.Close() //nolint:errcheck
4556

4657
cmd, err := checkCmd.New(config, readWriter)
47-
if err != nil {
48-
fmt.Fprintf(readWriter.ErrOut, "%v\n", err)
49-
os.Exit(1)
58+
if code := exitOnError(err, "Failed to create command"); code != 0 {
59+
return code
5060
}
5161

5262
ctx, finished := command.Setup(executable.Name, config)
5363
defer finished()
5464

55-
if ctx, err = cmd.Execute(ctx); err != nil {
56-
fmt.Fprintf(readWriter.ErrOut, "%v\n", err)
57-
os.Exit(1)
65+
if _, err = cmd.Execute(ctx); err != nil {
66+
_, _ = fmt.Fprintf(readWriter.ErrOut, "%v\n", err)
67+
return 1
5868
}
69+
return 0
5970
}

config.yml.example

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,10 @@ sshd:
121121
lfs:
122122
# https://gitlab.com/groups/gitlab-org/-/epics/11872, disabled by default.
123123
pure_ssh_protocol: false
124+
125+
# https://docs.gitlab.com/ee/development/gitlab_shell/features.html#personal-access-token
126+
pat:
127+
# Enable/disable creation of personal access tokens using SSH key
128+
enabled: true
129+
# Configure which PAT scopes are allowable to generate using an SSH key
130+
# allowed_scopes: [read_repository]

go.mod

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ require (
1515
github.com/openshift/gssapi v0.0.0-20161010215902-5fb4217df13b
1616
github.com/otiai10/copy v1.14.0
1717
github.com/pires/go-proxyproto v0.7.0
18-
github.com/prometheus/client_golang v1.20.1
18+
github.com/prometheus/client_golang v1.20.3
1919
github.com/sirupsen/logrus v1.9.3
2020
github.com/stretchr/testify v1.9.0
2121
gitlab.com/gitlab-org/gitaly/v16 v16.11.8
2222
gitlab.com/gitlab-org/labkit v1.21.0
23-
golang.org/x/crypto v0.26.0
23+
golang.org/x/crypto v0.27.0
2424
golang.org/x/sync v0.8.0
25-
google.golang.org/grpc v1.65.0
25+
google.golang.org/grpc v1.66.0
2626
google.golang.org/protobuf v1.34.2
2727
gopkg.in/yaml.v3 v3.0.1
2828
)
@@ -98,15 +98,15 @@ require (
9898
golang.org/x/mod v0.17.0 // indirect
9999
golang.org/x/net v0.26.0 // indirect
100100
golang.org/x/oauth2 v0.21.0 // indirect
101-
golang.org/x/sys v0.24.0 // indirect
102-
golang.org/x/text v0.17.0 // indirect
101+
golang.org/x/sys v0.25.0 // indirect
102+
golang.org/x/text v0.18.0 // indirect
103103
golang.org/x/time v0.5.0 // indirect
104104
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
105105
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
106106
google.golang.org/api v0.169.0 // indirect
107107
google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect
108-
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect
109-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect
108+
google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect
109+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect
110110
gopkg.in/DataDog/dd-trace-go.v1 v1.32.0 // indirect
111111
)
112112

go.sum

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -324,8 +324,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
324324
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
325325
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
326326
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
327-
github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8=
328-
github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
327+
github.com/prometheus/client_golang v1.20.3 h1:oPksm4K8B+Vt35tUhw6GbSNSgVlVSBH0qELP/7u83l4=
328+
github.com/prometheus/client_golang v1.20.3/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
329329
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
330330
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
331331
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
@@ -422,8 +422,8 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U
422422
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
423423
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
424424
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
425-
golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
426-
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
425+
golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
426+
golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
427427
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
428428
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
429429
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -587,11 +587,11 @@ golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBc
587587
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
588588
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
589589
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
590-
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
591-
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
590+
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
591+
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
592592
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
593-
golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU=
594-
golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk=
593+
golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM=
594+
golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8=
595595
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
596596
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
597597
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -600,8 +600,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
600600
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
601601
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
602602
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
603-
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
604-
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
603+
golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
604+
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
605605
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
606606
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
607607
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -759,10 +759,10 @@ google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKr
759759
google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w=
760760
google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 h1:ImUcDPHjTrAqNhlOkSocDLfG9rrNHH7w7uoKWPaWZ8s=
761761
google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7/go.mod h1:/3XmxOjePkvmKrHuBy4zNFw7IzxJXtAgdpXi8Ll990U=
762-
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw=
763-
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU=
764-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8=
765-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
762+
google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU=
763+
google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo=
764+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU=
765+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
766766
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
767767
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
768768
google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@@ -788,8 +788,8 @@ google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ
788788
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
789789
google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
790790
google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
791-
google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
792-
google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
791+
google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c=
792+
google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
793793
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
794794
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
795795
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=

internal/command/authorizedkeys/authorized_keys.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// Package authorizedkeys handles fetching and printing authorized SSH keys.
12
package authorizedkeys
23

34
import (
@@ -12,12 +13,14 @@ import (
1213
"gitlab.com/gitlab-org/gitlab-shell/v14/internal/keyline"
1314
)
1415

16+
// Command contains the configuration, arguments, and I/O interfaces.
1517
type Command struct {
1618
Config *config.Config
1719
Args *commandargs.AuthorizedKeys
1820
ReadWriter *readwriter.ReadWriter
1921
}
2022

23+
// Execute runs the command to fetch and print the authorized SSH key.
2124
func (c *Command) Execute(ctx context.Context) (context.Context, error) {
2225
// Do and return nothing when the expected and actual user don't match.
2326
// This can happen when the user in sshd_config doesn't match the user
@@ -38,7 +41,7 @@ func (c *Command) Execute(ctx context.Context) (context.Context, error) {
3841
func (c *Command) printKeyLine(ctx context.Context) error {
3942
response, err := c.getAuthorizedKey(ctx)
4043
if err != nil {
41-
fmt.Fprintln(c.ReadWriter.Out, fmt.Sprintf("# No key was found for %s", c.Args.Key))
44+
_, _ = fmt.Fprintf(c.ReadWriter.Out, "# No key was found for %s\n", c.Args.Key)
4245
return nil
4346
}
4447

@@ -47,7 +50,7 @@ func (c *Command) printKeyLine(ctx context.Context) error {
4750
return err
4851
}
4952

50-
fmt.Fprintln(c.ReadWriter.Out, keyLine.ToString())
53+
_, _ = fmt.Fprintln(c.ReadWriter.Out, keyLine.ToString())
5154

5255
return nil
5356
}

internal/command/authorizedprincipals/authorized_principals.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// Package authorizedprincipals handles printing authorized principals in GitLab Shell.
12
package authorizedprincipals
23

34
import (
@@ -10,12 +11,14 @@ import (
1011
"gitlab.com/gitlab-org/gitlab-shell/v14/internal/keyline"
1112
)
1213

14+
// Command contains the configuration, arguments, and I/O interfaces.
1315
type Command struct {
1416
Config *config.Config
1517
Args *commandargs.AuthorizedPrincipals
1618
ReadWriter *readwriter.ReadWriter
1719
}
1820

21+
// Execute runs the command to print authorized principals.
1922
func (c *Command) Execute(ctx context.Context) (context.Context, error) {
2023
if err := c.printPrincipalLines(); err != nil {
2124
return ctx, err
@@ -42,7 +45,7 @@ func (c *Command) printPrincipalLine(principal string) error {
4245
return err
4346
}
4447

45-
fmt.Fprintln(c.ReadWriter.Out, principalKeyLine.ToString())
48+
_, _ = fmt.Fprintln(c.ReadWriter.Out, principalKeyLine.ToString())
4649

4750
return nil
4851
}

0 commit comments

Comments
 (0)