You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

48 lines
2.0 KiB

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"""<component name="ProjectRunConfigurationManager">
<configuration default="false" name="{{ name }}" type="PythonConfigurationType" factoryName="Python" nameIsGenerated="true">
<module name="{{ name }}" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />{% for key, value in envvars.items() %}
<env name="{{ key }}" value="{{ value }}" />{% endfor %}
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/{{ entrypoint }}" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
</component> """)
@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)