123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- package command
- import (
- "github.com/codegangsta/cli"
- "github.com/docker/libcompose/cli/app"
- )
- // CreateCommand defines the libcompose create subcommand.
- func CreateCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "create",
- Usage: "Create all services but do not start",
- Action: app.WithProject(factory, app.ProjectCreate),
- Flags: []cli.Flag{
- cli.BoolFlag{
- Name: "no-recreate",
- Usage: "If containers already exist, don't recreate them. Incompatible with --force-recreate.",
- },
- cli.BoolFlag{
- Name: "force-recreate",
- Usage: "Recreate containers even if their configuration and image haven't changed. Incompatible with --no-recreate.",
- },
- cli.BoolFlag{
- Name: "no-build",
- Usage: "Don't build an image, even if it's missing.",
- },
- },
- }
- }
- // BuildCommand defines the libcompose build subcommand.
- func BuildCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "build",
- Usage: "Build or rebuild services.",
- Action: app.WithProject(factory, app.ProjectBuild),
- Flags: []cli.Flag{
- cli.BoolFlag{
- Name: "no-cache",
- Usage: "Do not use cache when building the image",
- },
- cli.BoolFlag{
- Name: "force-rm",
- Usage: "Always remove intermediate containers",
- },
- cli.BoolFlag{
- Name: "pull",
- Usage: "Always attempt to pull a newer version of the image",
- },
- },
- }
- }
- // PsCommand defines the libcompose ps subcommand.
- func PsCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "ps",
- Usage: "List containers",
- Action: app.WithProject(factory, app.ProjectPs),
- Flags: []cli.Flag{
- cli.BoolFlag{
- Name: "q",
- Usage: "Only display IDs",
- },
- },
- }
- }
- // PortCommand defines the libcompose port subcommand.
- func PortCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "port",
- Usage: "Print the public port for a port binding",
- Action: app.WithProject(factory, app.ProjectPort),
- Flags: []cli.Flag{
- cli.StringFlag{
- Name: "protocol",
- Usage: "tcp or udp ",
- Value: "tcp",
- },
- cli.IntFlag{
- Name: "index",
- Usage: "index of the container if there are multiple instances of a service",
- Value: 1,
- },
- },
- }
- }
- // UpCommand defines the libcompose up subcommand.
- func UpCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "up",
- Usage: "Bring all services up",
- Action: app.WithProject(factory, app.ProjectUp),
- Flags: []cli.Flag{
- cli.BoolFlag{
- Name: "d",
- Usage: "Do not block and log",
- },
- cli.BoolFlag{
- Name: "no-build",
- Usage: "Don't build an image, even if it's missing.",
- },
- cli.BoolFlag{
- Name: "no-recreate",
- Usage: "If containers already exist, don't recreate them. Incompatible with --force-recreate.",
- },
- cli.BoolFlag{
- Name: "force-recreate",
- Usage: "Recreate containers even if their configuration and image haven't changed. Incompatible with --no-recreate.",
- },
- },
- }
- }
- // StartCommand defines the libcompose start subcommand.
- func StartCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "start",
- Usage: "Start services",
- Action: app.WithProject(factory, app.ProjectStart),
- Flags: []cli.Flag{
- cli.BoolTFlag{
- Name: "d",
- Usage: "Do not block and log",
- },
- },
- }
- }
- // RunCommand defines the libcompose run subcommand.
- func RunCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "run",
- Usage: "Run a one-off command",
- Action: app.WithProject(factory, app.ProjectRun),
- Flags: []cli.Flag{},
- }
- }
- // PullCommand defines the libcompose pull subcommand.
- func PullCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "pull",
- Usage: "Pulls images for services",
- Action: app.WithProject(factory, app.ProjectPull),
- Flags: []cli.Flag{
- cli.BoolFlag{
- Name: "ignore-pull-failures",
- Usage: "Pull what it can and ignores images with pull failures.",
- },
- },
- }
- }
- // LogsCommand defines the libcompose logs subcommand.
- func LogsCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "logs",
- Usage: "Get service logs",
- Action: app.WithProject(factory, app.ProjectLog),
- Flags: []cli.Flag{
- cli.IntFlag{
- Name: "lines",
- Usage: "number of lines to tail",
- Value: 100,
- },
- cli.BoolFlag{
- Name: "follow",
- Usage: "Follow log output.",
- },
- },
- }
- }
- // RestartCommand defines the libcompose restart subcommand.
- func RestartCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "restart",
- Usage: "Restart services",
- Action: app.WithProject(factory, app.ProjectRestart),
- Flags: []cli.Flag{
- cli.IntFlag{
- Name: "timeout,t",
- Usage: "Specify a shutdown timeout in seconds.",
- Value: 10,
- },
- },
- }
- }
- // StopCommand defines the libcompose stop subcommand.
- func StopCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "stop",
- Usage: "Stop services",
- Action: app.WithProject(factory, app.ProjectStop),
- Flags: []cli.Flag{
- cli.IntFlag{
- Name: "timeout,t",
- Usage: "Specify a shutdown timeout in seconds.",
- Value: 10,
- },
- },
- }
- }
- // DownCommand defines the libcompose stop subcommand.
- func DownCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "down",
- Usage: "Stop and remove containers, networks, images, and volumes",
- Action: app.WithProject(factory, app.ProjectDown),
- Flags: []cli.Flag{
- cli.BoolFlag{
- Name: "volumes,v",
- Usage: "Remove data volumes",
- },
- cli.StringFlag{
- Name: "rmi",
- Usage: "Remove images, type may be one of: 'all' to remove all images, or 'local' to remove only images that don't have an custom name set by the `image` field",
- },
- cli.BoolFlag{
- Name: "remove-orphans",
- Usage: "Remove containers for services not defined in the Compose file",
- },
- },
- }
- }
- // ScaleCommand defines the libcompose scale subcommand.
- func ScaleCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "scale",
- Usage: "Scale services",
- Action: app.WithProject(factory, app.ProjectScale),
- Flags: []cli.Flag{
- cli.IntFlag{
- Name: "timeout,t",
- Usage: "Specify a shutdown timeout in seconds.",
- Value: 10,
- },
- },
- }
- }
- // RmCommand defines the libcompose rm subcommand.
- func RmCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "rm",
- Usage: "Delete services",
- Action: app.WithProject(factory, app.ProjectDelete),
- Flags: []cli.Flag{
- cli.BoolFlag{
- Name: "force,f",
- Usage: "Allow deletion of all services",
- },
- cli.BoolFlag{
- Name: "v",
- Usage: "Remove volumes associated with containers",
- },
- },
- }
- }
- // KillCommand defines the libcompose kill subcommand.
- func KillCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "kill",
- Usage: "Force stop service containers",
- Action: app.WithProject(factory, app.ProjectKill),
- Flags: []cli.Flag{
- cli.StringFlag{
- Name: "signal,s",
- Usage: "SIGNAL to send to the container",
- Value: "SIGKILL",
- },
- },
- }
- }
- // PauseCommand defines the libcompose pause subcommand.
- func PauseCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "pause",
- Usage: "Pause services.",
- // ArgsUsage: "[SERVICE...]",
- Action: app.WithProject(factory, app.ProjectPause),
- }
- }
- // UnpauseCommand defines the libcompose unpause subcommand.
- func UnpauseCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "unpause",
- Usage: "Unpause services.",
- // ArgsUsage: "[SERVICE...]",
- Action: app.WithProject(factory, app.ProjectUnpause),
- }
- }
- // VersionCommand defines the libcompose version subcommand.
- func VersionCommand(factory app.ProjectFactory) cli.Command {
- return cli.Command{
- Name: "version",
- Usage: "Show version informations",
- Action: app.Version,
- Flags: []cli.Flag{
- cli.BoolFlag{
- Name: "short",
- Usage: "Shows only Compose's version number.",
- },
- },
- }
- }
- // CommonFlags defines the flags that are in common for all subcommands.
- func CommonFlags() []cli.Flag {
- return []cli.Flag{
- cli.BoolFlag{
- Name: "verbose,debug",
- },
- cli.StringSliceFlag{
- Name: "file,f",
- Usage: "Specify one or more alternate compose files (default: docker-compose.yml)",
- Value: &cli.StringSlice{},
- EnvVar: "COMPOSE_FILE",
- },
- cli.StringFlag{
- Name: "project-name,p",
- Usage: "Specify an alternate project name (default: directory name)",
- EnvVar: "COMPOSE_PROJECT_NAME",
- },
- }
- }
|