func NewCompose(dockerHost, composeFilePath, projectName string) (*Compose, error) { ctx := project.Context{ ComposeFiles: []string{composeFilePath}, ProjectName: projectName, } ctx.ResourceLookup = &lookup.FileResourceLookup{} ctx.EnvironmentLookup = &lookup.ComposableEnvLookup{ Lookups: []config.EnvironmentLookup{ &lookup.OsEnvLookup{}, }, } prj := project.NewProject(&ctx, nil, nil) if err := prj.Parse(); err != nil { return nil, errors.Wrap(err, "Failed to parse docker-compose.yml.") } return &Compose{ ComposeFilePath: composeFilePath, ProjectName: projectName, dockerHost: dockerHost, project: prj, }, nil }
func Populate(context *project.Context, c *cli.Context) { context.ComposeFile = c.GlobalString("file") context.ProjectName = c.GlobalString("project-name") if c.Command.Name == "logs" { context.Log = true } else if c.Command.Name == "up" { context.Log = !c.Bool("d") } else if c.Command.Name == "stop" || c.Command.Name == "restart" { context.Timeout = c.Int("timeout") } }
// Populate updates the specified project context based on command line arguments and subcommands. func Populate(context *project.Context, c *cli.Context) { context.ComposeFiles = c.GlobalStringSlice("file") if len(context.ComposeFiles) == 0 { context.ComposeFiles = []string{"docker-compose.yml"} if _, err := os.Stat("docker-compose.override.yml"); err == nil { context.ComposeFiles = append(context.ComposeFiles, "docker-compose.override.yml") } } context.ProjectName = c.GlobalString("project-name") }
// Populate updates the specified project context based on command line arguments and subcommands. func Populate(context *project.Context, c *cli.Context) { // urfave/cli does not distinguish whether the first string in the slice comes from the envvar // or is from a flag. Worse off, it appends the flag values to the envvar value instead of // overriding it. To ensure the multifile envvar case is always handled, the first string // must always be split. It gives a more consistent behavior, then, to split each string in // the slice. for _, v := range c.GlobalStringSlice("file") { context.ComposeFiles = append(context.ComposeFiles, strings.Split(v, string(os.PathListSeparator))...) } if len(context.ComposeFiles) == 0 { context.ComposeFiles = []string{"docker-compose.yml"} if _, err := os.Stat("docker-compose.override.yml"); err == nil { context.ComposeFiles = append(context.ComposeFiles, "docker-compose.override.yml") } } context.ProjectName = c.GlobalString("project-name") }
// Populate updates the specified project context based on command line arguments and subcommands. func Populate(context *project.Context, c *cli.Context) { context.ComposeFile = c.GlobalString("file") context.ProjectName = c.GlobalString("project-name") if c.Command.Name == "logs" { context.Log = true } else if c.Command.Name == "up" { context.Log = !c.Bool("d") context.NoRecreate = c.Bool("no-recreate") context.ForceRecreate = c.Bool("force-recreate") } else if c.Command.Name == "stop" || c.Command.Name == "restart" || c.Command.Name == "scale" { context.Timeout = uint(c.Int("timeout")) } else if c.Command.Name == "kill" { context.Signal = c.Int("signal") } else if c.Command.Name == "rm" { context.Volume = c.Bool("v") } else if c.Command.Name == "build" { context.NoCache = c.Bool("no-cache") } }
// Populate updates the specified project context based on command line arguments and subcommands. func Populate(context *project.Context, c *cli.Context) { context.ComposeFiles = c.GlobalStringSlice("file") if len(context.ComposeFiles) == 0 { context.ComposeFiles = []string{"docker-compose.yml"} if _, err := os.Stat("docker-compose.override.yml"); err == nil { context.ComposeFiles = append(context.ComposeFiles, "docker-compose.override.yml") } } context.ProjectName = c.GlobalString("project-name") if c.Command.Name == "logs" { context.Log = true context.FollowLog = c.Bool("follow") } else if c.Command.Name == "up" || c.Command.Name == "create" { context.Log = !c.Bool("d") context.NoRecreate = c.Bool("no-recreate") context.ForceRecreate = c.Bool("force-recreate") context.NoBuild = c.Bool("no-build") } else if c.Command.Name == "stop" || c.Command.Name == "restart" || c.Command.Name == "scale" { context.Timeout = uint(c.Int("timeout")) } else if c.Command.Name == "kill" { context.Signal = c.String("signal") } else if c.Command.Name == "rm" { context.Volume = c.Bool("v") } else if c.Command.Name == "build" { context.NoCache = c.Bool("no-cache") } }