fix: exit 0 when gracefully shutting down (#5555)
parent
d01493106d
commit
5de4099cba
14
cmd/root.go
14
cmd/root.go
|
|
@ -26,7 +26,6 @@ import (
|
|||
|
||||
"github.com/filebrowser/filebrowser/v2/auth"
|
||||
"github.com/filebrowser/filebrowser/v2/diskcache"
|
||||
fbErrors "github.com/filebrowser/filebrowser/v2/errors"
|
||||
"github.com/filebrowser/filebrowser/v2/frontend"
|
||||
fbhttp "github.com/filebrowser/filebrowser/v2/http"
|
||||
"github.com/filebrowser/filebrowser/v2/img"
|
||||
|
|
@ -241,18 +240,7 @@ user created with the credentials from options "username" and "password".`,
|
|||
}
|
||||
log.Println("Graceful shutdown complete.")
|
||||
|
||||
switch sig {
|
||||
case syscall.SIGHUP:
|
||||
d.err = fbErrors.ErrSighup
|
||||
case syscall.SIGINT:
|
||||
d.err = fbErrors.ErrSigint
|
||||
case syscall.SIGQUIT:
|
||||
d.err = fbErrors.ErrSigquit
|
||||
case syscall.SIGTERM:
|
||||
d.err = fbErrors.ErrSigTerm
|
||||
}
|
||||
|
||||
return d.err
|
||||
return nil
|
||||
}, pythonConfig{allowNoDB: true}),
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,6 @@ type pythonConfig struct {
|
|||
type pythonData struct {
|
||||
hadDB bool
|
||||
store *storage.Storage
|
||||
err error
|
||||
}
|
||||
|
||||
func dbExists(path string) (bool, error) {
|
||||
|
|
|
|||
|
|
@ -3,15 +3,6 @@ package errors
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
const (
|
||||
ExitCodeSigTerm = 128 + int(syscall.SIGTERM)
|
||||
ExitCodeSighup = 128 + int(syscall.SIGHUP)
|
||||
ExitCodeSigint = 128 + int(syscall.SIGINT)
|
||||
ExitCodeSigquit = 128 + int(syscall.SIGQUIT)
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
@ -31,10 +22,6 @@ var (
|
|||
ErrInvalidRequestParams = errors.New("invalid request params")
|
||||
ErrSourceIsParent = errors.New("source is parent")
|
||||
ErrRootUserDeletion = errors.New("user with id 1 can't be deleted")
|
||||
ErrSigTerm = errors.New("exit on signal: sigterm")
|
||||
ErrSighup = errors.New("exit on signal: sighup")
|
||||
ErrSigint = errors.New("exit on signal: sigint")
|
||||
ErrSigquit = errors.New("exit on signal: sigquit")
|
||||
)
|
||||
|
||||
type ErrShortPassword struct {
|
||||
|
|
@ -44,44 +31,3 @@ type ErrShortPassword struct {
|
|||
func (e ErrShortPassword) Error() string {
|
||||
return fmt.Sprintf("password is too short, minimum length is %d", e.MinimumLength)
|
||||
}
|
||||
|
||||
// GetExitCode returns the exit code for a given error.
|
||||
func GetExitCode(err error) int {
|
||||
if err == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
exitCodeMap := map[error]int{
|
||||
ErrSigTerm: ExitCodeSigTerm,
|
||||
ErrSighup: ExitCodeSighup,
|
||||
ErrSigint: ExitCodeSigint,
|
||||
ErrSigquit: ExitCodeSigquit,
|
||||
}
|
||||
|
||||
for e, code := range exitCodeMap {
|
||||
if errors.Is(err, e) {
|
||||
return code
|
||||
}
|
||||
}
|
||||
|
||||
if exitErr, ok := err.(interface{ ExitCode() int }); ok {
|
||||
return exitErr.ExitCode()
|
||||
}
|
||||
|
||||
var pathErr *os.PathError
|
||||
if errors.As(err, &pathErr) {
|
||||
return 1
|
||||
}
|
||||
|
||||
var syscallErr *os.SyscallError
|
||||
if errors.As(err, &syscallErr) {
|
||||
return 1
|
||||
}
|
||||
|
||||
var errno syscall.Errno
|
||||
if errors.As(err, &errno) {
|
||||
return 1
|
||||
}
|
||||
|
||||
return 1
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue