feat: add updater and previewer interfaces

This commit is contained in:
Dan Anglin 2021-07-03 08:39:45 +01:00
parent ed6afb94a1
commit c0fcf316b4
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
2 changed files with 63 additions and 11 deletions

View file

@ -75,7 +75,7 @@ func previewFunc(ctx context.Context, file, stack *string) clir.Action {
return fmt.Errorf("unable to get configuration...\n%v", err) 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 { if err != nil {
return err return err
} }
@ -99,10 +99,19 @@ func updateFunc(ctx context.Context, file, stack *string) clir.Action {
return err return err
} }
// parse json configuration (config package) c, err := config.NewConfig(*flagMap["file"])
// create the updater (interface in stacks) (all logic in stacks) if err != nil {
// run the previewer return fmt.Errorf("unable to get configuration...\n%v", err)
// return }
updater, err := stacks.NewUpdater(ctx, *stack, c)
if err != nil {
return err
}
if err := updater.Update(ctx); err != nil {
return err
}
return nil return nil
} }
@ -119,10 +128,19 @@ func destroyFunc(ctx context.Context, file, stack *string) clir.Action {
return err return err
} }
// parse json configuration (config package) c, err := config.NewConfig(*flagMap["file"])
// create the destroyer (interface in stacks) (all logic in stacks) if err != nil {
// run the previewer return fmt.Errorf("unable to get configuration...\n%v", err)
// return }
destroyer, err := stacks.NewDestroyer(ctx, *stack, c)
if err != nil {
return err
}
if err := destroyer.Destroy(ctx); err != nil {
return err
}
return nil return nil
} }

View file

@ -85,13 +85,13 @@ func workspaceOptions(projectName, stackName string) ([]auto.LocalWorkspaceOptio
return opts, nil 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 p Previewer
var err error var err error
switch stack { switch stack {
case dockerNetworkStackName: case dockerNetworkStackName:
p, err = newDockerNetworkStack(ctx, project, stack, c.Docker.Network) p, err = newDockerNetworkStack(ctx, c.ProjectName, stack, c.Docker.Network)
if err != nil { if err != nil {
return nil, fmt.Errorf("unable to initialise '%s' stack...\n%v", stack, err) 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 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
}