diff --git a/cmd/helix/main.go b/cmd/helix/main.go index eeaf0c2..b6e3098 100644 --- a/cmd/helix/main.go +++ b/cmd/helix/main.go @@ -75,7 +75,7 @@ func previewFunc(ctx context.Context, file, stack *string) clir.Action { return fmt.Errorf("unable to get configuration...\n%v", err) } - previewer, err := stacks.NewPreviewer(ctx, c.ProjectName, *stack, c) + previewer, err := stacks.NewPreviewer(ctx, *stack, c) if err != nil { return err } @@ -99,10 +99,19 @@ func updateFunc(ctx context.Context, file, stack *string) clir.Action { return err } - // parse json configuration (config package) - // create the updater (interface in stacks) (all logic in stacks) - // run the previewer - // return + c, err := config.NewConfig(*flagMap["file"]) + if err != nil { + return fmt.Errorf("unable to get configuration...\n%v", err) + } + + updater, err := stacks.NewUpdater(ctx, *stack, c) + if err != nil { + return err + } + + if err := updater.Update(ctx); err != nil { + return err + } return nil } @@ -119,10 +128,19 @@ func destroyFunc(ctx context.Context, file, stack *string) clir.Action { return err } - // parse json configuration (config package) - // create the destroyer (interface in stacks) (all logic in stacks) - // run the previewer - // return + c, err := config.NewConfig(*flagMap["file"]) + if err != nil { + return fmt.Errorf("unable to get configuration...\n%v", err) + } + + destroyer, err := stacks.NewDestroyer(ctx, *stack, c) + if err != nil { + return err + } + + if err := destroyer.Destroy(ctx); err != nil { + return err + } return nil } diff --git a/internal/stacks/manage.go b/internal/stacks/manage.go index ac21856..ffdfbc8 100644 --- a/internal/stacks/manage.go +++ b/internal/stacks/manage.go @@ -85,13 +85,13 @@ func workspaceOptions(projectName, stackName string) ([]auto.LocalWorkspaceOptio return opts, nil } -func NewPreviewer(ctx context.Context, project, stack string, c config.Config) (Previewer, error) { +func NewPreviewer(ctx context.Context, stack string, c config.Config) (Previewer, error) { var p Previewer var err error switch stack { case dockerNetworkStackName: - p, err = newDockerNetworkStack(ctx, project, stack, c.Docker.Network) + p, err = newDockerNetworkStack(ctx, c.ProjectName, stack, c.Docker.Network) if err != nil { return nil, fmt.Errorf("unable to initialise '%s' stack...\n%v", stack, err) } @@ -101,3 +101,37 @@ func NewPreviewer(ctx context.Context, project, stack string, c config.Config) ( return p, nil } + +func NewUpdater(ctx context.Context, stack string, c config.Config) (Updater, error) { + var u Updater + var err error + + switch stack { + case dockerNetworkStackName: + u, err = newDockerNetworkStack(ctx, c.ProjectName, stack, c.Docker.Network) + if err != nil { + return nil, fmt.Errorf("unable to initialise '%s' stack...\n%v", stack, err) + } + default: + return nil, fmt.Errorf("unknown stack name '%s'", stack) + } + + return u, nil +} + +func NewDestroyer(ctx context.Context, stack string, c config.Config) (Destroyer, error) { + var d Destroyer + var err error + + switch stack { + case dockerNetworkStackName: + d, err = newDockerNetworkStack(ctx, c.ProjectName, stack, c.Docker.Network) + if err != nil { + return nil, fmt.Errorf("unable to initialise '%s' stack...\n%v", stack, err) + } + default: + return nil, fmt.Errorf("unknown stack name '%s'", stack) + } + + return d, nil +}