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 }