예제 #1
0
    def use_default_builder(self):
        self.builder = DOCKER

        self._variables = [
            self._get_default_variables(),
            self._get_default_image_variables()
        ]

        self.scripts = Namespace(
            build=Script(
                "$(DOCKER_BUILD) -f $(DOCKER_BUILD_FILE) $(DOCKER_BUILD_OPTIONS) -t $(DOCKER_IMAGE):$(DOCKER_TAG) .",
                doc="Build a docker image.",
            ),
            push=Script(
                "$(DOCKER_PUSH) $(DOCKER_PUSH_OPTIONS) $(DOCKER_IMAGE):$(DOCKER_TAG)",
                doc="Push docker image to remote registry.",
            ),
            run=Script(
                "$(DOCKER_RUN) $(DOCKER_RUN_OPTIONS) --interactive --tty --rm --name=$(DOCKER_RUN_NAME) $(DOCKER_RUN_PORTS) $(DOCKER_IMAGE):$(DOCKER_TAG) $(DOCKER_RUN_COMMAND)",
                doc=
                "Run the default entry point in a container based on our docker image.",
            ),
            shell=Script(
                'DOCKER_RUN_COMMAND="/bin/bash" $(MAKE) docker-run',
                doc="Run bash in a container based on our docker image.",
            ),
        )
예제 #2
0
    def use_default_builder(self):
        self.builder = DOCKER

        self._variables = [
            self._get_default_variables(),
            self._get_default_image_variables(),
        ]

        self.scripts = Namespace(
            build=Script('$(DOCKER_BUILD) $(DOCKER_BUILD_OPTIONS) -t $(DOCKER_IMAGE):$(DOCKER_TAG) .'),
            push=Script('$(DOCKER_PUSH) $(DOCKER_PUSH_OPTIONS) $(DOCKER_IMAGE):$(DOCKER_TAG)'),
            run=Script(
                '$(DOCKER_RUN) $(DOCKER_RUN_OPTIONS) --interactive --tty --rm --name=$(PACKAGE)_run -p 8000:8000 $(DOCKER_IMAGE):$(DOCKER_TAG) $(DOCKER_RUN_COMMAND)'
            ),
            shell=Script('DOCKER_RUN_COMMAND="/bin/bash" $(MAKE) docker-run'),
        )
예제 #3
0
파일: yapf.py 프로젝트: sei-nicolas/medikit
 def on_make_generate(self, event):
     makefile = event.makefile
     makefile["YAPF"] = "$(PYTHON) -m yapf"
     makefile["YAPF_OPTIONS"] = "-rip"
     makefile.add_target(
         "format",
         Script("\n".join([
             "$(YAPF) $(YAPF_OPTIONS) .",
             "$(YAPF) $(YAPF_OPTIONS) Projectfile"
         ])),
         deps=("install-dev", ),
         phony=True,
         doc="Reformats the whole python codebase using yapf.",
     )
예제 #4
0
    def on_start(self, event):
        """
        :param ProjectEvent event:
        """

        for k in event.variables:
            self.makefile[k.upper()] = event.variables[k]

        self.makefile.updateleft(("QUICK", ""))

        self.makefile.add_install_target()

        for extra in event.config["make"].extras:
            self.makefile.add_install_target(extra)

        self.makefile.add_target("quick",
                                 Script('@printf ""'),
                                 phony=True,
                                 hidden=True)

        self.dispatcher.dispatch(
            MakeConfig.on_generate,
            MakefileEvent(event.config.package_name, self.makefile,
                          event.config))

        if event.config["make"].include_medikit_targets:
            self.add_medikit_targets(event.config["make"])

        if event.config["make"].includes:
            self.add_includes(event.config["make"].includes)

        # Recipe courtesy of https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
        self.makefile.add_target(
            "help",
            r"""
            @echo "Available commands:"
            @echo
            @grep -E '^[a-zA-Z_-]+:.*?##[\s]?.*$$' --no-filename $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?##"}; {printf "    make \033[36m%-30s\033[0m %s\n", $$1, $$2}'
            @echo
            """,
            phony=True,
            doc="Shows available commands.",
        )

        # Actual rendering of the Makefile
        self.render_file_inline("Makefile",
                                self.makefile.__str__(),
                                override=True)
예제 #5
0
    def add_target(self, target, rule, *, deps=None, phony=False, first=False, doc=None, hidden=False):
        if target in self._target_order:
            raise RuntimeError("Duplicate definition for make target «{}».".format(target))

        if isinstance(rule, str):
            rule = Script(rule)

        self._target_values[target] = MakefileTarget(
            deps=tuple(deps) if deps else tuple(), rule=rule, doc=textwrap.dedent(doc or "").strip()
        )

        self._target_order.appendleft(target) if first else self._target_order.append(target)

        if phony:
            self.phony.add(target)

        if hidden:
            self.hidden.add(target)
예제 #6
0
    def on_make_generate(self, event):
        config = self.get_config(event)  # type: FormatConfig
        makefile = event.makefile

        if "yapf" in config.active_tools and "black" in config.active_tools:
            raise RuntimeError(
                'Using both "black" and "yapf" does not make sense, choose one.'
            )

        format_script = []

        if "black" in config.active_tools:
            makefile["BLACK"] = which("black")
            makefile["BLACK_OPTIONS"] = "--line-length " + str(
                LINE_LENGTH)  # TODO line length global option
            format_script += ["$(BLACK) $(BLACK_OPTIONS) . Projectfile"]

        if "yapf" in config.active_tools:
            makefile["YAPF"] = "$(PYTHON) -m yapf"
            makefile["YAPF_OPTIONS"] = "-rip"
            format_script += ["$(YAPF) $(YAPF_OPTIONS) . Projectfile"]

        if "isort" in config.active_tools:
            makefile["ISORT"] = "$(PYTHON) -m isort"
            makefile["ISORT_OPTIONS"] = ""
            format_script += ["$(ISORT) $(ISORT_OPTIONS) . Projectfile"]

        if "prettier" in config.active_tools:
            makefile["PRETTIER"] = which("prettier")
            makefile["PRETTIER_OPTIONS"] = "--write"
            makefile[
                "PRETTIER_PATTERNS"] = "**/*.\{j,t\}s **/*.\{j,t\}sx \!docs/**"
            format_script += [
                "$(PRETTIER) $(PRETTIER_OPTIONS) $(PRETTIER_PATTERNS)"
            ]

        makefile.add_target(
            "format",
            Script("\n".join(format_script)),
            deps=("install-dev", ),
            phony=True,
            doc="Reformats the codebase (with " +
            ", ".join(sorted(config.active_tools)) + ").",
        )
예제 #7
0
    def add_target(self,
                   target,
                   rule,
                   deps=None,
                   phony=False,
                   first=False,
                   doc=None):
        if target in self._target_order:
            raise RuntimeError(
                'Duplicate definition for make target «{}».'.format(target))

        if isinstance(rule, str):
            rule = Script(rule)

        self._target_values[target] = (
            deps or list(),
            rule,
            textwrap.dedent(doc or '').strip(),
        )
        self._target_order.appendleft(
            target) if first else self._target_order.append(target)

        if phony:
            self.phony.add(target)