logs.go 783 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package cmd
  2. import (
  3. "context"
  4. "os"
  5. "github.com/docker/api/client"
  6. "github.com/pkg/errors"
  7. "github.com/spf13/cobra"
  8. )
  9. type logsOpts struct {
  10. Follow bool
  11. }
  12. func LogsCommand() *cobra.Command {
  13. var opts logsOpts
  14. cmd := &cobra.Command{
  15. Use: "logs",
  16. Short: "Fetch the logs of a container",
  17. Args: cobra.ExactArgs(1),
  18. RunE: func(cmd *cobra.Command, args []string) error {
  19. return runLogs(cmd.Context(), args[0], opts)
  20. },
  21. }
  22. cmd.Flags().BoolVarP(&opts.Follow, "follow", "f", false, "Follow log outut")
  23. return cmd
  24. }
  25. func runLogs(ctx context.Context, name string, opts logsOpts) error {
  26. c, err := client.New(ctx)
  27. if err != nil {
  28. return errors.Wrap(err, "cannot connect to backend")
  29. }
  30. return c.ContainerService().Logs(ctx, name, os.Stdout, opts.Follow)
  31. }