We should not be exiting with exit(1)

There is cleanup code that will never get run.
This code will print out all errors and then return the last error.
This should allow for proper cleanup.

Also cleanup help to switch usage and description.
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
Daniel J Walsh 2017-09-14 13:56:33 +00:00
parent b82bf55404
commit a001b177d6

View file

@ -6,7 +6,6 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/urfave/cli" "github.com/urfave/cli"
"os"
) )
var ( var (
@ -18,15 +17,21 @@ var (
Value: defaultTimeout, Value: defaultTimeout,
}, },
} }
stopDescription = "Stop one or more containers" stopDescription = `
stopCommand = cli.Command{ kpod stop
Name: "stop",
Usage: "Stops one or more running containers. The container name or ID can be used. A timeout to forcibly" + Stops one or more running containers. The container name or ID can be used.
" stop the container can also be set but defaults to 10 seconds otherwise.", A timeout to forcibly stop the container can also be set but defaults to 10
seconds otherwise.
`
stopCommand = cli.Command{
Name: "stop",
Usage: "Stop one or more containers",
Description: stopDescription, Description: stopDescription,
Flags: stopFlags, Flags: stopFlags,
Action: stopCmd, Action: stopCmd,
ArgsUsage: "CONTAINER-NAME", ArgsUsage: "CONTAINER-NAME [CONTAINER-NAME ...]",
} }
) )
@ -50,19 +55,18 @@ func stopCmd(c *cli.Context) error {
if err != nil { if err != nil {
return errors.Wrapf(err, "could not update list of containers") return errors.Wrapf(err, "could not update list of containers")
} }
hadError := false var lastError error
for _, container := range c.Args() { for _, container := range c.Args() {
cid, err := server.ContainerStop(container, stopTimeout) cid, err := server.ContainerStop(container, stopTimeout)
if err != nil { if err != nil {
hadError = true if lastError != nil {
logrus.Error(err) logrus.Error(lastError)
}
lastError = errors.Wrapf(err, "failed to stop %v", container)
} else { } else {
fmt.Println(cid) fmt.Println(cid)
} }
} }
if hadError { return lastError
os.Exit(1)
}
return nil
} }