podman-compose/CONTRIBUTING.md
2021-04-29 19:10:55 +03:00

2.5 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 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