diff --git a/cmd/cli/purge/purge.go b/cmd/cli/purge/purge.go index ae288c4..da7d09b 100644 --- a/cmd/cli/purge/purge.go +++ b/cmd/cli/purge/purge.go @@ -19,6 +19,8 @@ and usage of using your command. For example: Cobra is a CLI library for Go that empowers applications. This application is a tool to generate the needed files to quickly create a Cobra application.`, + SilenceUsage: true, + SilenceErrors: true, PreRunE: func(cmd *cobra.Command, args []string) error { if len(args) > 0 { return utils.ErrTooManyArgs @@ -37,7 +39,7 @@ to quickly create a Cobra application.`, if err != nil { logger.Error().Str("command", cmd.Name()).Err(err).Msg(constants.FailedToProcessCommand) - return &utils.CommandError{Err: err, Code: 10} + return &utils.CommandError{Err: err, Code: 12} } logger.Info(). diff --git a/internal/constants/errors.go b/internal/constants/errors.go index ad132f2..e180ea4 100644 --- a/internal/constants/errors.go +++ b/internal/constants/errors.go @@ -23,4 +23,5 @@ const ( FailedToInitializeIPC = "failed to initialize IPC" FailedToRemoveRouteEntry = "failed to remove RouteEntry from state" EntryAlreadyExists = "route entry already exists in state" + NoRoutesToPurge = "no routes to purge" ) diff --git a/internal/ipc/ipc.go b/internal/ipc/ipc.go index 1fab5e7..c1f8595 100644 --- a/internal/ipc/ipc.go +++ b/internal/ipc/ipc.go @@ -192,6 +192,20 @@ func handleAddCommand(logger zerolog.Logger, gw string, domains []string, conn n func handlePurgeCommand(logger zerolog.Logger, conn net.Conn, st *state.State) { logger = logger.With().Str("operation", "purge").Logger() + if len(st.Entries) == 0 { + if err := writeResponse(&DaemonResponse{ + Success: false, + Response: "", + Error: errors.New(constants.NoRoutesToPurge).Error(), + }, conn); err != nil { + logger.Error(). + Err(err). + Msg(constants.FailedToWriteToUnixDomainSocket) + } + + return + } + for _, entry := range st.Entries { for _, ip := range entry.ResolvedIPs { if err := utils.RemoveRoute(ip); err != nil {