// NewProject creates a Project with the specified context. func NewProject(context *Context, parseOptions *config.ParseOptions) (*project.Project, error) { if context.ResourceLookup == nil { context.ResourceLookup = &lookup.FileConfigLookup{} } 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 = NewConfigAuthLookup(context) } if context.ServiceFactory == nil { context.ServiceFactory = &ServiceFactory{ context: context, } } if context.ClientFactory == nil { factory, err := project.NewDefaultClientFactory(client.Options{}) if err != nil { return nil, err } context.ClientFactory = factory } // FIXME(vdemeester) Remove the context duplication ? p := project.NewProject(context.ClientFactory, &context.Context, 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 }
// Populate updates the specified docker context based on command line arguments and subcommands. func Populate(context *docker.Context, c *cli.Context) { context.ConfigDir = c.String("configdir") opts := client.Options{} opts.TLS = c.GlobalBool("tls") opts.TLSVerify = c.GlobalBool("tlsverify") opts.TLSOptions.CAFile = c.GlobalString("tlscacert") opts.TLSOptions.CertFile = c.GlobalString("tlscert") opts.TLSOptions.KeyFile = c.GlobalString("tlskey") clientFactory, err := project.NewDefaultClientFactory(opts) if err != nil { logrus.Fatalf("Failed to construct Docker client: %v", err) } context.ClientFactory = clientFactory }