From e25c59f1ab3b4821cab05b649224fccd7cb39262 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 22 Sep 2015 11:17:15 -0700 Subject: [PATCH] Create `ros compose` command --- cmd/control/cli.go | 1 + cmd/control/compose.go | 57 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 cmd/control/compose.go diff --git a/cmd/control/cli.go b/cmd/control/cli.go index 4b33118a..2e85c52a 100644 --- a/cmd/control/cli.go +++ b/cmd/control/cli.go @@ -60,6 +60,7 @@ func Main() { Subcommands: tlsConfCommands(), }, installCommand, + composeCommand(), } app.Run(os.Args) diff --git a/cmd/control/compose.go b/cmd/control/compose.go new file mode 100644 index 00000000..82d36ba5 --- /dev/null +++ b/cmd/control/compose.go @@ -0,0 +1,57 @@ +package control + +import ( + "github.com/Sirupsen/logrus" + "github.com/codegangsta/cli" + "github.com/docker/libcompose/cli/command" + dockerApp "github.com/docker/libcompose/cli/docker/app" + "github.com/docker/libcompose/project" + "github.com/rancherio/os/compose" + "github.com/rancherio/os/config" +) + +type projectFactory struct { +} + +func (p *projectFactory) Create(c *cli.Context) (*project.Project, error) { + cfg, err := config.LoadConfig() + if err != nil { + return nil, err + } + + return compose.GetProject(cfg) +} + +func beforeApp(c *cli.Context) error { + if c.GlobalBool("verbose") { + logrus.SetLevel(logrus.DebugLevel) + } + return nil +} + +func composeCommand() cli.Command { + factory := &projectFactory{} + + app := cli.Command{} + app.Name = "compose" + app.Usage = "Command line interface for libcompose." + app.Before = beforeApp + app.Flags = append(command.CommonFlags(), dockerApp.DockerClientFlags()...) + app.Subcommands = []cli.Command{ + command.BuildCommand(factory), + command.CreateCommand(factory), + command.UpCommand(factory), + command.StartCommand(factory), + command.LogsCommand(factory), + command.RestartCommand(factory), + command.StopCommand(factory), + command.ScaleCommand(factory), + command.RmCommand(factory), + command.PullCommand(factory), + command.KillCommand(factory), + command.PortCommand(factory), + command.PsCommand(factory), + } + + return app +}