from pathlib import Path from jinja2 import Template from conan.tools.env import VirtualRunEnv from conans.model import Generator class PyCharmRunEnv(Generator): run_xml = Template(r""" """) @property def filename(self): stem = Path(self.conanfile._um_data(self.conanfile.version)["runinfo"]["entrypoint"]).stem return str(Path(self.conanfile.source_folder).joinpath(".run", f"{stem}.run.xml")) @property def content(self): run_env = VirtualRunEnv(self.conanfile) env = run_env.environment() envvars = env.vars(self.conanfile, scope = "run") entrypoint = self.conanfile._um_data(self.conanfile.version)["runinfo"]["entrypoint"] return self.run_xml.render(name = entrypoint, envvars = envvars, entrypoint = entrypoint)