context.go 801 B

12345678910111213141516171819202122232425262728293031
  1. package commands
  2. import (
  3. "fmt"
  4. "github.com/aws/aws-sdk-go/aws/awserr"
  5. "github.com/docker/cli/cli/command"
  6. amazon "github.com/docker/ecs-plugin/pkg/amazon/backend"
  7. "github.com/docker/ecs-plugin/pkg/docker"
  8. "github.com/spf13/cobra"
  9. )
  10. type ContextFunc func(ctx docker.AwsContext, backend *amazon.Backend, args []string) error
  11. func WithAwsContext(dockerCli command.Cli, f ContextFunc) func(cmd *cobra.Command, args []string) error {
  12. return func(cmd *cobra.Command, args []string) error {
  13. ctx, err := docker.GetAwsContext(dockerCli)
  14. if err != nil {
  15. return err
  16. }
  17. backend, err := amazon.NewBackend(ctx.Profile, ctx.Region)
  18. if err != nil {
  19. return err
  20. }
  21. err = f(*ctx, backend, args)
  22. if e, ok := err.(awserr.Error); ok {
  23. return fmt.Errorf(e.Message())
  24. }
  25. return err
  26. }
  27. }