github.com/zhgqiang/libcompose@v0.4.1-0.20210112080336-bff7ba3690e1/project/project_create.go (about)

     1  package project
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"golang.org/x/net/context"
     7  
     8  	"github.com/zhgqiang/libcompose/project/events"
     9  	"github.com/zhgqiang/libcompose/project/options"
    10  )
    11  
    12  // Create creates the specified services (like docker create).
    13  func (p *Project) Create(ctx context.Context, options options.Create, services ...string) error {
    14  	if options.NoRecreate && options.ForceRecreate {
    15  		return fmt.Errorf("no-recreate and force-recreate cannot be combined")
    16  	}
    17  	if err := p.initialize(ctx); err != nil {
    18  		return err
    19  	}
    20  	return p.perform(events.ProjectCreateStart, events.ProjectCreateDone, services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {
    21  		wrapper.Do(wrappers, events.ServiceCreateStart, events.ServiceCreate, func(service Service) error {
    22  			return service.Create(ctx, options)
    23  		})
    24  	}), nil)
    25  }