Skip to content

Commit

Permalink
Merge pull request #444 from kayac/render-args
Browse files Browse the repository at this point in the history
render command accepts args instead of flags.
  • Loading branch information
fujiwara authored Oct 14, 2022
2 parents 43a0991 + f125c4c commit 101855d
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 32 deletions.
8 changes: 5 additions & 3 deletions cmd/ecspresso/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,9 +170,11 @@ func _main() int {

render := kingpin.Command("render", "render config, service definition or task definition file to stdout")
renderOption := ecspresso.RenderOption{
ServiceDefinition: render.Flag("service-definition", "render service definition").Bool(),
TaskDefinition: render.Flag("task-definition", "render task definition").Bool(),
ConfigFile: render.Flag("config-file", "render config file").Bool(),
Targets: render.Arg("targets", "render targets (config, servicedef, taskdef)").Required().Enums(
"config",
"servicedef", "service-definition",
"taskdef", "task-definition",
),
}

tasks := kingpin.Command("tasks", "list tasks that are in a service or having the same family")
Expand Down
4 changes: 1 addition & 3 deletions init.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ func (d *App) Init(ctx context.Context, opt InitOption) error {
return nil
}

func treatmentServiceDefinition(sv *Service) *Service {
func treatmentServiceDefinition(sv *Service) {
sv.ClusterArn = nil
sv.CreatedAt = nil
sv.CreatedBy = nil
Expand All @@ -136,8 +136,6 @@ func treatmentServiceDefinition(sv *Service) *Service {
if sv.PropagateTags != types.PropagateTagsService && sv.PropagateTags != types.PropagateTagsTaskDefinition {
sv.PropagateTags = types.PropagateTagsNone
}

return sv
}

func (d *App) saveFile(path string, b []byte, mode os.FileMode, force bool) error {
Expand Down
54 changes: 28 additions & 26 deletions render.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,47 @@ package ecspresso
import (
"bufio"
"context"
"fmt"
"os"

"github.com/aws/aws-sdk-go-v2/aws"
"gopkg.in/yaml.v2"
)

type RenderOption struct {
ConfigFile *bool
ServiceDefinition *bool
TaskDefinition *bool
Targets *[]string
}

func (d *App) Render(ctx context.Context, opt RenderOption) error {
out := bufio.NewWriter(os.Stdout)
defer out.Flush()

if aws.ToBool(opt.ConfigFile) {
return yaml.NewEncoder(out).Encode(d.config)
}

if aws.ToBool(opt.ServiceDefinition) {
sv, err := d.LoadServiceDefinition(d.config.ServiceDefinitionPath)
if err != nil {
return err
}
b, _ := MarshalJSONForAPI(sv)
_, err = out.Write(b)
return err
}

if aws.ToBool(opt.TaskDefinition) {
td, err := d.LoadTaskDefinition(d.config.TaskDefinitionPath)
if err != nil {
return err
for _, target := range *opt.Targets {
switch target {
case "config":
if err := yaml.NewEncoder(out).Encode(d.config); err != nil {
return err
}
case "service-definition", "servicedef":
sv, err := d.LoadServiceDefinition(d.config.ServiceDefinitionPath)
if err != nil {
return err
}
b, _ := MarshalJSONForAPI(sv)
if _, err = out.Write(b); err != nil {
return err
}
case "task-definition", "taskdef":
td, err := d.LoadTaskDefinition(d.config.TaskDefinitionPath)
if err != nil {
return err
}
b, _ := MarshalJSONForAPI(td)
if _, err := out.Write(b); err != nil {
return err
}
default:
return fmt.Errorf("unknown target: %s", target)
}
b, _ := MarshalJSONForAPI(td)
_, err = out.Write(b)
return err
}

return nil
}

0 comments on commit 101855d

Please sign in to comment.