MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / DockerComposeCommand

Class DockerComposeCommand

misc/python/materialize/cli/mzcompose.py:646–742  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

644
645
646class DockerComposeCommand(Command):
647 add_help = False
648 allow_unknown_arguments = True
649
650 def __init__(
651 self,
652 name: str,
653 help: str,
654 help_epilog: str | None = None,
655 runs_containers: bool = False,
656 resolve_image_specs: bool = True,
657 ):
658 self.name = name
659 self.help = help
660 self.help_epilog = help_epilog
661 self.runs_containers = runs_containers
662 self.resolve_image_specs = resolve_image_specs
663
664 def configure(self, parser: argparse.ArgumentParser) -> None:
665 parser.add_argument("-h", "--help", action="store_true")
666
667 def run(self, args: argparse.Namespace) -> None:
668 if args.help:
669 output = self.capture(
670 ["docker", "compose", self.name, "--help"], stderr=subprocess.STDOUT
671 )
672 output = output.replace("docker compose", "./mzcompose")
673 output += "\nThis command is a wrapper around Docker Compose."
674 if self.help_epilog:
675 output += "\n"
676 output += self.help_epilog
677 print(output, file=sys.stderr)
678 return
679
680 composition = load_composition(
681 args, resolve_image_specs=self.resolve_image_specs
682 )
683 if (
684 args.coverage
685 or not ui.env_is_truthy("CI")
686 or ui.env_is_truthy("CI_ALLOW_LOCAL_BUILD")
687 ):
688 dependencies = list(composition.dependencies)
689 if dependencies:
690 ui.section("Collecting mzbuild images")
691 for d in dependencies:
692 ui.say(d.spec())
693
694 if self.runs_containers:
695 if args.coverage:
696 # If the user has requested coverage information, create the
697 # coverage directory as the current user, so Docker doesn't create
698 # it as root.
699 (composition.path / "coverage").mkdir(exist_ok=True)
700 # Need materialize user to be able to write to coverage
701 os.chmod(composition.path / "coverage", 0o777)
702 self.check_docker_resource_limits()
703 composition.dependencies.acquire()

Callers 1

mzcompose.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected