// NewProject creates a Project with the specified context. func NewProject(context *ctx.Context, parseOptions *config.ParseOptions) (project.APIProject, error) { if context.AuthLookup == nil { context.AuthLookup = auth.NewConfigLookup(context.ConfigFile) } if context.ServiceFactory == nil { context.ServiceFactory = service.NewFactory(context) } if context.ClientFactory == nil { factory, err := client.NewDefaultFactory(client.Options{}) if err != nil { return nil, err } context.ClientFactory = factory } if context.NetworksFactory == nil { networksFactory := &network.DockerFactory{ ClientFactory: context.ClientFactory, } context.NetworksFactory = networksFactory } if context.VolumesFactory == nil { volumesFactory := &volume.DockerFactory{ ClientFactory: context.ClientFactory, } context.VolumesFactory = volumesFactory } // FIXME(vdemeester) Remove the context duplication ? runtime := &Project{ clientFactory: context.ClientFactory, } p := project.NewProject(&context.Context, runtime, parseOptions) err := p.Parse() if err != nil { return nil, err } if err = context.LookupConfig(); err != nil { logrus.Errorf("Failed to open project %s: %v", p.Name, err) return nil, err } return p, err }
// NewProject creates a Project with the specified context. func NewProject(context *Context, parseOptions *config.ParseOptions) (project.APIProject, error) { if context.ResourceLookup == nil { context.ResourceLookup = &lookup.FileResourceLookup{} } if context.EnvironmentLookup == nil { cwd, err := os.Getwd() if err != nil { return nil, err } context.EnvironmentLookup = &lookup.ComposableEnvLookup{ Lookups: []config.EnvironmentLookup{ &lookup.EnvfileLookup{ Path: filepath.Join(cwd, ".env"), }, &lookup.OsEnvLookup{}, }, } } if context.AuthLookup == nil { context.AuthLookup = auth.NewConfigLookup(context.ConfigFile) } if context.ServiceFactory == nil { context.ServiceFactory = &ServiceFactory{ context: context, } } if context.ClientFactory == nil { factory, err := client.NewDefaultFactory(client.Options{}) if err != nil { return nil, err } context.ClientFactory = factory } if context.NetworksFactory == nil { networksFactory := &network.DockerFactory{ ClientFactory: context.ClientFactory, } context.NetworksFactory = networksFactory } if context.VolumesFactory == nil { volumesFactory := &volume.DockerFactory{ ClientFactory: context.ClientFactory, } context.VolumesFactory = volumesFactory } // FIXME(vdemeester) Remove the context duplication ? runtime := &Project{ clientFactory: context.ClientFactory, } p := project.NewProject(&context.Context, runtime, parseOptions) err := p.Parse() if err != nil { return nil, err } if err = context.open(); err != nil { logrus.Errorf("Failed to open project %s: %v", p.Name, err) return nil, err } return p, err }