Skip to content

Commit ac6a16e

Browse files
committed
Write conan_provider
1 parent 939f06b commit ac6a16e

File tree

5 files changed

+90
-26
lines changed

5 files changed

+90
-26
lines changed

cppython/plugins/conan/plugin.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from pathlib import Path
44
from typing import Any
55

6+
import requests
7+
68
from cppython.core.plugin_schema.generator import SyncConsumer
79
from cppython.core.plugin_schema.provider import Provider, ProviderPluginGroupData, SupportedProviderFeatures
810
from cppython.core.schema import CorePluginData, Information, SyncData
@@ -25,6 +27,15 @@ def __init__(
2527
self.core_data: CorePluginData = core_data
2628
self.data: ConanData = resolve_conan_data(configuration_data, core_data)
2729

30+
@staticmethod
31+
def _download_file(url: str, file: Path) -> None:
32+
"""Replaces the given file with the contents of the url"""
33+
file.parent.mkdir(parents=True, exist_ok=True)
34+
35+
with open(file, 'wb') as out_file:
36+
content = requests.get(url, stream=True).content
37+
out_file.write(content)
38+
2839
@staticmethod
2940
def features(directory: Path) -> SupportedProviderFeatures:
3041
"""Queries conan support
@@ -48,11 +59,21 @@ def information() -> Information:
4859

4960
def install(self) -> None:
5061
"""Installs the provider"""
51-
pass
62+
conan_provider = self.core_data.cppython_data.tool_path / 'conan' / 'conan_provider.cmake'
63+
64+
self._download_file(
65+
'https://raw.githubusercontent.com/conan-io/cmake-conan/refs/heads/develop2/conan_provider.cmake',
66+
conan_provider,
67+
)
5268

5369
def update(self) -> None:
5470
"""Updates the provider"""
55-
pass
71+
conan_provider = self.core_data.cppython_data.tool_path / 'conan' / 'conan_provider.cmake'
72+
73+
self._download_file(
74+
'https://raw.githubusercontent.com/conan-io/cmake-conan/refs/heads/develop2/conan_provider.cmake',
75+
conan_provider,
76+
)
5677

5778
@staticmethod
5879
def supported_sync_type(sync_type: type[SyncData]) -> bool:

cppython/plugins/conan/resolution.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from typing import Any
44

55
from cppython.core.schema import CorePluginData
6-
from cppython.plugins.conan.schema import ConanConfiguration, ConanData
6+
from cppython.plugins.conan.schema import ConanData
77

88

99
def resolve_conan_data(data: dict[str, Any], core_data: CorePluginData) -> ConanData:
@@ -16,13 +16,7 @@ def resolve_conan_data(data: dict[str, Any], core_data: CorePluginData) -> Conan
1616
Returns:
1717
The resolved conan data
1818
"""
19-
parsed_data = ConanConfiguration(**data)
20-
root_directory = core_data.project_data.pyproject_file.parent.absolute()
19+
# parsed_data = ConanConfiguration(**data)
20+
# root_directory = core_data.project_data.pyproject_file.parent.absolute()
2121

22-
modified_tool_directory = parsed_data.tool_directory
23-
24-
# Add the project location to all relative paths
25-
if not modified_tool_directory.is_absolute():
26-
modified_tool_directory = root_directory / modified_tool_directory
27-
28-
return ConanData(tool_directory=modified_tool_directory)
22+
return ConanData()

cppython/plugins/conan/schema.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,11 @@
11
"""TODO"""
22

3-
from pathlib import Path
4-
from typing import Annotated
5-
6-
from pydantic import Field
7-
from pydantic.types import DirectoryPath
8-
93
from cppython.core.schema import CPPythonModel
104

115

126
class ConanData(CPPythonModel):
137
"""Resolved conan data"""
148

15-
tool_directory: Annotated[DirectoryPath, Field()]
16-
179

1810
class ConanConfiguration(CPPythonModel):
1911
"""Raw conan data"""
20-
21-
tool_directory: Annotated[Path, Field(default=Path(), description='The directory to place the configuration files')]

pdm.lock

Lines changed: 61 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ dependencies = [
1717
"typer>=0.15.0",
1818
"pydantic>=2.10.3",
1919
"packaging>=24.1",
20+
"requests>=2.32.3",
21+
"types-requests>=2.32.0.20241016",
2022
]
2123

2224
[project.optional-dependencies]

0 commit comments

Comments
 (0)