3
3
import os
4
4
import re
5
5
import platform
6
+ from conans .client import conan_api
6
7
from cpt .packager import ConanMultiPackager
7
8
from cpt .tools import split_colon_env
8
9
from cpt .remotes import RemotesManager
9
10
from bincrafters .build_paths import BINCRAFTERS_REPO_URL
10
11
11
-
12
12
def get_recipe_path (cwd = None ):
13
13
conanfile = os .getenv ("CONAN_CONANFILE" , "conanfile.py" )
14
14
if cwd is None :
@@ -31,15 +31,31 @@ def get_value_from_recipe(search_string, recipe=None):
31
31
return result
32
32
33
33
34
+ def inspect_value_from_recipe (attribute , recipe_path ):
35
+ try :
36
+ conan_instance , _ , _ = conan_api .Conan .factory ()
37
+ inspect_result = conan_instance .inspect (path = recipe_path , attributes = [attribute ])
38
+ return inspect_result .get (attribute )
39
+ except :
40
+ pass
41
+ return None
42
+
43
+
34
44
def get_name_from_recipe (recipe = None ):
35
- return get_value_from_recipe (r'''name\s*=\s*["'](\S*)["']''' , recipe = recipe ).groups ()[0 ]
45
+ name = inspect_value_from_recipe (attribute = "name" , recipe_path = get_recipe_path ())
46
+ return name or get_value_from_recipe (r'''name\s*=\s*["'](\S*)["']''' , recipe = recipe ).groups ()[0 ]
36
47
37
48
38
49
def get_version_from_recipe (recipe = None ):
39
- return get_value_from_recipe (r'''version\s*=\s*["'](\S*)["']''' , recipe = recipe ).groups ()[0 ]
50
+ version = inspect_value_from_recipe (attribute = "version" , recipe_path = get_recipe_path ())
51
+ return version or get_value_from_recipe (r'''version\s*=\s*["'](\S*)["']''' , recipe = recipe ).groups ()[0 ]
40
52
41
53
42
54
def is_shared (recipe = None ):
55
+ options = inspect_value_from_recipe (attribute = "options" , recipe_path = get_recipe_path ())
56
+ if options :
57
+ return "shared" in options
58
+
43
59
match = get_value_from_recipe (r'''options.*=([\s\S]*?)(?=}|$)''' , recipe = recipe )
44
60
if match is None :
45
61
return False
0 commit comments