Skip to content

Commit

Permalink
add conan-version to jinja templates
Browse files Browse the repository at this point in the history
  • Loading branch information
memsharded committed Mar 8, 2023
1 parent 9763fb2 commit 06997d3
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 4 deletions.
4 changes: 3 additions & 1 deletion conans/client/cache/cache.py
Expand Up @@ -5,6 +5,7 @@

from jinja2 import Environment, select_autoescape, FileSystemLoader, ChoiceLoader, Template

from conan import conan_version
from conans.assets.templates import dict_loader
from conans.client.cache.editable import EditablePackages
from conans.client.cache.remote_registry import RemoteRegistry
Expand Down Expand Up @@ -173,7 +174,8 @@ def new_config(self):
distro = None
if platform.system() in ["Linux", "FreeBSD"]:
import distro
content = Template(text).render({"platform": platform, "os": os, "distro": distro})
content = Template(text).render({"platform": platform, "os": os, "distro": distro,
"conan_version": conan_version})
self._new_config.loads(content)
return self._new_config

Expand Down
4 changes: 3 additions & 1 deletion conans/client/profile_loader.py
Expand Up @@ -4,6 +4,7 @@

from jinja2 import Environment, FileSystemLoader

from conan import conan_version
from conan.tools.env.environment import ProfileEnvironment
from conans.errors import ConanException, ConanV2Exception
from conans.model.conf import ConfDefinition
Expand Down Expand Up @@ -124,7 +125,8 @@ def read_profile(profile_name, cwd, default_folder):
base_path = os.path.dirname(profile_path)
context = {"platform": platform,
"os": os,
"profile_dir": base_path}
"profile_dir": base_path,
"conan_version": conan_version}
rtemplate = Environment(loader=FileSystemLoader(base_path)).from_string(text)
text = rtemplate.render(context)

Expand Down
6 changes: 4 additions & 2 deletions conans/test/integration/configuration/conf/test_conf.py
Expand Up @@ -3,9 +3,9 @@
import textwrap

import pytest
import six
from mock import patch

from conan import conan_version
from conans.errors import ConanException
from conans.util.files import save
from conans.test.utils.tools import TestClient
Expand Down Expand Up @@ -180,10 +180,12 @@ def test_composition_conan_conf_different_data_types_by_cli_arg(client):
def test_jinja_global_conf(client):
save(client.cache.new_config_path, "user.mycompany:parallel = {{os.cpu_count()/2}}\n"
"user.mycompany:other = {{platform.system()}}\n"
"user.mycompany:dist = {{distro.id() if distro else '42'}}\n")
"user.mycompany:dist = {{distro.id() if distro else '42'}}\n"
"user.conan:version = {{conan_version}}-{{conan_version>0.1}}")
client.run("install .")
assert "user.mycompany:parallel={}".format(os.cpu_count()/2) in client.out
assert "user.mycompany:other={}".format(platform.system()) in client.out
assert f"user.conan:version={conan_version}-True" in client.out
if platform.system() == "Linux":
import distro
assert "user.mycompany:dist={}".format(distro.id()) in client.out
Expand Down
17 changes: 17 additions & 0 deletions conans/test/integration/configuration/test_profile_jinja.py
@@ -1,6 +1,7 @@
import platform
import textwrap

from conan import conan_version
from conans.client.tools import environment_append
from conans.test.assets.genconanfile import GenConanfile
from conans.test.utils.tools import TestClient
Expand Down Expand Up @@ -71,3 +72,19 @@ def generate(self):
"anysubfolder/toolchain.cmake": "MyToolchainCMake!!!"})
client.run("install . -pr=anysubfolder/profile1.jinja")
assert "conanfile.py: CONTENT: MyToolchainCMake!!!" in client.out


def test_profile_version():
client = TestClient()
tpl1 = textwrap.dedent("""
[options]
*:myoption={{conan_version}}
*:myoption2={{conan_version<13 and conan_version>1.0}}
""")

client.save({"conanfile.py": GenConanfile(),
"profile1.jinja": tpl1})
client.run("install . -pr=profile1.jinja")
assert f"*:myoption={conan_version}" in client.out
assert "*:myoption2=True" in client.out

0 comments on commit 06997d3

Please sign in to comment.