-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommand.go
More file actions
72 lines (66 loc) · 1.73 KB
/
Copy pathcommand.go
File metadata and controls
72 lines (66 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package commands
import (
"context"
"fmt"
"github.com/aws/aws-sdk-go-v2/service/ecs"
"github.com/loilo-inc/canarycage/v6/cli/cage/cageapp"
"github.com/loilo-inc/canarycage/v6/env"
"github.com/loilo-inc/canarycage/v6/types"
"github.com/urfave/cli/v3"
)
type CageCommands struct {
cageCliProvider cageapp.CageCmdProvider
}
func NewCageCommands(
cageCliProvider cageapp.CageCmdProvider,
) *CageCommands {
cmds := &CageCommands{cageCliProvider: cageCliProvider}
return cmds
}
func RequireArgs(
cmd *cli.Command,
minArgs int,
maxArgs int,
) (dir string, rest []string, err error) {
if cmd.NArg() < minArgs {
return "", nil, fmt.Errorf("invalid number of arguments. expected at least %d", minArgs)
} else if cmd.NArg() > maxArgs {
return "", nil, fmt.Errorf("invalid number of arguments. expected at most %d", maxArgs)
}
dir = cmd.Args().First()
rest = cmd.Args().Tail()
return
}
func (c *CageCommands) setupCage(
input *cageapp.CageCmdInput,
dir string,
) (types.Cage, error) {
var service *ecs.CreateServiceInput
var taskDefinition *ecs.RegisterTaskDefinitionInput
if srv, err := env.LoadServiceDefinition(dir); err != nil {
return nil, err
} else {
service = srv
}
if input.TaskDefinitionArn == "" {
if td, err := env.LoadTaskDefinition(dir); err != nil {
return nil, err
} else {
taskDefinition = td
}
}
env.MergeEnvars(input.Envars, &env.Envars{
Cluster: *service.Cluster,
Service: *service.ServiceName,
TaskDefinitionInput: taskDefinition,
ServiceDefinitionInput: service,
})
if err := env.EnsureEnvars(input.Envars); err != nil {
return nil, err
}
cagecli, err := c.cageCliProvider(context.TODO(), input)
if err != nil {
return nil, err
}
return cagecli, nil
}