from .inspect import InspectContainer, Size
from .state import SaveContainer
from .env import EnvLoad, EnvHost, EnvSave
from .history import History
from .cp import Copy
# Based functions provided by paks
# These are currently all for docker and podman
# lookup of named commands and settings
docker_commands = {
"#save": SaveContainer,
"#inspect": InspectContainer,
"#envload": EnvLoad,
"#envhost": EnvHost,
"#envsave": EnvSave,
"#cp": Copy,
"#size": Size,
}
[docs]class DockerCommands:
# Required kwargs for any docker/podman command to run
required = ["container_name", "name"]
def __init__(self, container_tech):
self.command = container_tech
self.lookup = docker_commands
[docs] def parse_name(self, cmd):
parts = cmd.split(" ")
return parts.pop(0).replace("\n", "").replace("\r", "").strip()
[docs] def has_command(self, name):
name, _ = self.parse_name(name)
return name in self.lookup
@property
def history(self):
return History(self.command)
[docs] def get_executor(self, name, out=None):
"""
Backend is required to update history
"""
name = self.parse_name(name)
if name in self.lookup:
return self.lookup[name](self.command, required=self.required, out=out)