package deploy

import (
	"context"
)

type Result struct {
	fromTask string
	skipped  bool
	reason   string
	error    error
}

func FromError(err error) Result {
	return Result{error: err}
}

func Skip(reason string) Result {
	return Result{skipped: true, reason: reason}
}

func (r Result) WithName(name string) Result {
	r.fromTask = name
	return r
}

type Task interface {
	Name() string

	Create(context.Context) Result
	PostCreate(context.Context) Result

	Delete(context.Context) Result
	PostDelete(context.Context) Result
}
