Skip to content

Commit

Permalink
- provide Path accesssors
Browse files Browse the repository at this point in the history
Signed-off-by: SSE4 <tomskside@gmail.com>
  • Loading branch information
SSE4 committed Jul 7, 2022
1 parent b20b72b commit 5531884
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 1 deletion.
41 changes: 41 additions & 0 deletions conans/model/conan_file.py
@@ -1,6 +1,7 @@
import os
import platform
from contextlib import contextmanager
from pathlib import Path

import six
from six import string_types
Expand Down Expand Up @@ -258,39 +259,79 @@ def new_cpp_info(self):
def source_folder(self):
return self.folders.source_folder

@property
def source_path(self) -> Path:
assert self.source_folder is not None, "`source_folder` is `None`"
return Path(self.source_folder)

@property
def export_sources_folder(self):
"""points to the base source folder when calling source() and to the cache export sources
folder while calling the exports_sources() method. Prepared in case we want to introduce a
'no_copy_export_sources' and point to the right location always."""
return self.folders.base_export_sources

@property
def export_sources_path(self) -> Path:
assert self.export_sources_folder is not None, "`export_sources_folder` is `None`"
return Path(self.export_sources_folder)

@property
def export_folder(self):
return self.folders.base_export

@property
def export_path(self) -> Path:
assert self.export_folder is not None, "`export_folder` is `None`"
return Path(self.export_folder)

@property
def build_folder(self):
return self.folders.build_folder

@property
def build_path(self) -> Path:
assert self.build_folder is not None, "`build_folder` is `None`"
return Path(self.build_folder)

@property
def package_folder(self):
return self.folders.base_package

@property
def package_path(self) -> Path:
assert self.package_folder is not None, "`package_folder` is `None`"
return Path(self.package_folder)

@property
def install_folder(self):
# FIXME: Remove in 2.0, no self.install_folder
return self.folders.base_install

@property
def install_path(self) -> Path:
assert self.install_folder is not None, "`install_folder` is `None`"
return Path(self.install_folder)

@property
def generators_folder(self):
# FIXME: Remove in 2.0, no self.install_folder
return self.folders.generators_folder if self.folders.generators else self.install_folder

@property
def generators_path(self) -> Path:
assert self.generators_folder is not None, "`generators_folder` is `None`"
return Path(self.generators_folder)

@property
def imports_folder(self):
return self.folders.imports_folder

@property
def imports_path(self) -> Path:
assert self.imports_folder is not None, "`imports_folder` is `None`"
return Path(self.imports_folder)

@property
def env(self):
"""Apply the self.deps_env_info into a copy of self._conan_env_values (will prioritize the
Expand Down
6 changes: 6 additions & 0 deletions conans/model/conanfile_interface.py
@@ -1,3 +1,4 @@
from pathlib import Path
from conans.client.graph.graph import CONTEXT_BUILD


Expand Down Expand Up @@ -29,6 +30,11 @@ def __ne__(self, other):
def package_folder(self):
return self._conanfile.package_folder

@property
def package_path(self) -> Path:
assert self.package_folder is not None, "`package_folder` is `None`"
return Path(self.package_folder)

@property
def ref(self):
return self._conanfile.ref
Expand Down
27 changes: 26 additions & 1 deletion conans/model/layout.py
@@ -1,7 +1,7 @@
import os

from conans.model.new_build_info import NewCppInfo

from pathlib import Path

class Infos(object):

Expand Down Expand Up @@ -68,6 +68,11 @@ def source_folder(self):

return os.path.join(self._base_source, self.source)

@property
def source_path(self) -> Path:
assert self.source_folder is not None, "`source_folder` is `None`"
return Path(self.source_folder)

@property
def base_source(self):
return self._base_source
Expand All @@ -83,6 +88,11 @@ def build_folder(self):
return self._base_build
return os.path.join(self._base_build, self.build)

@property
def build_path(self) -> Path:
assert self.build_folder is not None, "`build_folder` is `None`"
return Path(self.build_folder)

@property
def base_build(self):
return self._base_build
Expand All @@ -109,6 +119,11 @@ def package_folder(self):
"""For the cache, the package folder is only the base"""
return self._base_package

@property
def package_path(self) -> Path:
assert self.package_folder is not None, "`package_folder` is `None`"
return Path(self.package_folder)

@property
def generators_folder(self):
if self._base_generators is None:
Expand All @@ -117,6 +132,11 @@ def generators_folder(self):
return self._base_generators
return os.path.join(self._base_generators, self.generators)

@property
def generators_path(self) -> Path:
assert self.generators_folder is not None, "`generators_folder` is `None`"
return Path(self.generators_folder)

def set_base_generators(self, folder):
self._base_generators = folder

Expand All @@ -129,6 +149,11 @@ def imports_folder(self):

return os.path.join(self._base_imports, self.imports)

@property
def imports_path(self) -> Path:
assert self.imports_folder is not None, "`imports_folder` is `None`"
return Path(self.imports_folder)

@property
def base_imports(self):
return self._base_imports
Expand Down

0 comments on commit 5531884

Please sign in to comment.