podman-compose/CONTRIBUTING.md
2019-08-09 16:31:56 +03:00

2.6 KiB

Contributing to podman-compose

Adding new commands

To add a command you need to add a function that is decorated with @cmd_run passing the compose instance, command name and description. the wrapped function should accept two arguments the compose instance and the command-specific arguments (resulted from python's argparse package) inside that command you can run PodMan like this compose.podman.run(['inspect', 'something']) and inside that function you can access compose.pods and compose.containers ...etc. Here is an example

@cmd_run(podman_compose, 'build', 'build images defined in the stack')
def compose_build(compose, args):
    compose.podman.run(['build', 'something'])

Command arguments parsing

Add a function that accept parser which is an instance from argparse. In side that function you can call parser.add_argument(). The function decorated with @cmd_parse accepting the compose instance, and command names (as a list or as a string). You can do this multiple times.

Here is an example

@cmd_parse(podman_compose, 'build')
def compose_build_parse(parser):
    parser.add_argument("--pull",
        help="attempt to pull a newer version of the image", action='store_true')
    parser.add_argument("--pull-always",
        help="attempt to pull a newer version of the image, Raise an error even if the image is present locally.", action='store_true')

NOTE: @cmd_parse should be after @cmd_run

Calling a command from inside another

If you need to call podman-compose down from inside podman-compose up do something like:

@cmd_run(podman_compose, 'up', 'up desc')
def compose_up(compose, args):
    compose.commands['down'](compose, args)
    # or
    compose.commands['down'](argparse.Namespace(foo=123))

Missing Commands (help needed)

bundle Generate a Docker bundle from the Compose file config Validate and view the Compose file create Create services events Receive real time events from containers exec Execute a command in a running container images List images kill Kill containers logs View output from containers pause Pause services port Print the public port for a port binding ps List containers rm Remove stopped containers run Run a one-off command scale Set number of containers for a service top Display the running processes unpause Unpause services version Show the Docker-Compose version information