Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit aeac305

Browse files
authored
feat: added exit codes for CLI daemon command errors (#2400)
* Added error code for daemon failing to listen to TCP port * Better handling of daemon random port selection
1 parent cc3396f commit aeac305

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

‎internal/cli/daemon/daemon.go‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -121,33 +121,33 @@ func runDaemonCommand(cmd *cobra.Command, args []string) {
121121
// Invalid port, such as "Foo"
122122
var dnsError *net.DNSError
123123
if errors.As(err, &dnsError) {
124-
feedback.Fatal(tr("Failed to listen on TCP port: %[1]s. %[2]s is unknown name.", port, dnsError.Name), feedback.ErrCoreConfig)
124+
feedback.Fatal(tr("Failed to listen on TCP port: %[1]s. %[2]s is unknown name.", port, dnsError.Name), feedback.ErrBadTCPPortArgument)
125125
}
126126
// Invalid port number, such as -1
127127
var addrError *net.AddrError
128128
if errors.As(err, &addrError) {
129-
feedback.Fatal(tr("Failed to listen on TCP port: %[1]s. %[2]s is an invalid port.", port, addrError.Addr), feedback.ErrCoreConfig)
129+
feedback.Fatal(tr("Failed to listen on TCP port: %[1]s. %[2]s is an invalid port.", port, addrError.Addr), feedback.ErrBadTCPPortArgument)
130130
}
131131
// Port is already in use
132132
var syscallErr *os.SyscallError
133133
if errors.As(err, &syscallErr) && errors.Is(syscallErr.Err, syscall.EADDRINUSE) {
134-
feedback.Fatal(tr("Failed to listen on TCP port: %s. Address already in use.", port), feedback.ErrNetwork)
134+
feedback.Fatal(tr("Failed to listen on TCP port: %s. Address already in use.", port), feedback.ErrFailedToListenToTCPPort)
135135
}
136-
feedback.Fatal(tr("Failed to listen on TCP port: %[1]s. Unexpected error: %[2]v", port, err), feedback.ErrGeneric)
136+
feedback.Fatal(tr("Failed to listen on TCP port: %[1]s. Unexpected error: %[2]v", port, err), feedback.ErrFailedToListenToTCPPort)
137137
}
138138

139-
// We need to parse the port used only if the user let
140-
// us choose it randomly, in all other cases we already
141-
// know which is used.
139+
// We need to retrieve the port used only if the user did not specify it
140+
// and let the OS choose it randomly, in all other cases we already know
141+
// which port is used.
142142
if port == "0" {
143143
address := lis.Addr()
144144
split := strings.Split(address.String(), ":")
145145

146-
if len(split) ==0 {
147-
feedback.Fatal(tr("Invalid TCP address: port is missing"), feedback.ErrBadArgument)
146+
if len(split) <=1 {
147+
feedback.Fatal(tr("Invalid TCP address: port is missing"), feedback.ErrBadTCPPortArgument)
148148
}
149149

150-
port = split[len(split)-1]
150+
port = split[1]
151151
}
152152

153153
feedback.PrintResult(daemonResult{
@@ -156,7 +156,7 @@ func runDaemonCommand(cmd *cobra.Command, args []string) {
156156
})
157157

158158
if err := s.Serve(lis); err != nil {
159-
logrus.Fatalf("Failed to serve: %v", err)
159+
feedback.Fatal(fmt.Sprintf("Failed to serve: %v", err), feedback.ErrFailedToListenToTCPPort)
160160
}
161161
}
162162

‎internal/cli/feedback/errorcodes.go‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,11 @@ const (
4242

4343
// ErrBadArgument is returned when the arguments are not valid (7)
4444
ErrBadArgument
45+
46+
// ErrFailedToListenToTCPPort is returned if the CLI failed to open a TCP port
47+
// to listen for incoming connections (8)
48+
ErrFailedToListenToTCPPort
49+
50+
// ErrBadTCPPortArgument is returned if the TCP port argument is not valid (9)
51+
ErrBadTCPPortArgument
4552
)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /