conan 2.12.2__tar.gz → 2.14.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. {conan-2.12.2/conan.egg-info → conan-2.14.0}/PKG-INFO +1 -1
  2. {conan-2.12.2 → conan-2.14.0}/conan/__init__.py +2 -1
  3. {conan-2.12.2 → conan-2.14.0}/conan/api/conan_api.py +9 -0
  4. {conan-2.12.2 → conan-2.14.0}/conan/api/model/list.py +0 -8
  5. {conan-2.12.2 → conan-2.14.0}/conan/api/model/refs.py +0 -16
  6. {conan-2.12.2 → conan-2.14.0}/conan/api/output.py +5 -13
  7. conan-2.14.0/conan/api/subapi/audit.py +159 -0
  8. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/config.py +3 -0
  9. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/export.py +2 -4
  10. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/install.py +7 -6
  11. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/local.py +2 -4
  12. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/new.py +2 -2
  13. conan-2.14.0/conan/api/subapi/workspace.py +263 -0
  14. conan-2.14.0/conan/cli/commands/audit.py +195 -0
  15. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/lock.py +62 -0
  16. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/new.py +4 -0
  17. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/remote.py +2 -2
  18. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/workspace.py +64 -9
  19. conan-2.14.0/conan/cli/formatters/audit/vulnerabilities.py +271 -0
  20. {conan-2.12.2 → conan-2.14.0}/conan/cps/cps.py +7 -1
  21. conan-2.14.0/conan/internal/api/audit/providers.py +208 -0
  22. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/install/generators.py +1 -0
  23. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/cmake_lib.py +1 -1
  24. conan-2.14.0/conan/internal/api/new/workspace.py +85 -0
  25. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/profile/profile_loader.py +1 -1
  26. {conan-2.12.2 → conan-2.14.0}/conan/internal/conan_app.py +22 -1
  27. {conan-2.12.2 → conan-2.14.0}/conan/internal/default_settings.py +3 -2
  28. {conan-2.12.2 → conan-2.14.0}/conan/internal/deploy.py +12 -3
  29. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/conanfile_interface.py +4 -0
  30. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/conf.py +1 -0
  31. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/cpp_info.py +37 -22
  32. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/requires.py +1 -1
  33. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/version.py +6 -0
  34. conan-2.14.0/conan/internal/model/workspace.py +94 -0
  35. conan-2.14.0/conan/internal/runner/docker.py +333 -0
  36. conan-2.14.0/conan/internal/runner/output.py +12 -0
  37. {conan-2.12.2 → conan-2.14.0}/conan/test/assets/visual_project_files.py +2 -40
  38. {conan-2.12.2 → conan-2.14.0}/conan/test/utils/file_server.py +2 -0
  39. {conan-2.12.2 → conan-2.14.0}/conan/test/utils/mocks.py +0 -32
  40. conan-2.14.0/conan/test/utils/profiles.py +18 -0
  41. {conan-2.12.2 → conan-2.14.0}/conan/test/utils/tools.py +20 -86
  42. conan-2.14.0/conan/tools/cmake/__init__.py +31 -0
  43. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmake.py +1 -1
  44. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/cmakedeps.py +1 -1
  45. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/config.py +7 -0
  46. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/target_configuration.py +6 -18
  47. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps2/cmakedeps.py +67 -43
  48. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps2/target_configuration.py +84 -24
  49. {conan-2.12.2 → conan-2.14.0}/conan/tools/cps/cps_deps.py +1 -1
  50. {conan-2.12.2 → conan-2.14.0}/conan/tools/env/environment.py +15 -5
  51. {conan-2.12.2 → conan-2.14.0}/conan/tools/files/files.py +25 -21
  52. {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/autotoolstoolchain.py +1 -1
  53. {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/gnutoolchain.py +1 -1
  54. {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/msbuilddeps.py +2 -2
  55. {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/visual.py +1 -1
  56. conan-2.14.0/conan/tools/premake/premake.py +40 -0
  57. {conan-2.12.2 → conan-2.14.0}/conan/tools/qbs/qbsprofile.py +0 -2
  58. {conan-2.12.2 → conan-2.14.0}/conan/tools/sbom/cyclonedx.py +1 -1
  59. {conan-2.12.2 → conan-2.14.0}/conan/tools/scm/git.py +5 -2
  60. {conan-2.12.2 → conan-2.14.0/conan.egg-info}/PKG-INFO +1 -1
  61. {conan-2.12.2 → conan-2.14.0}/conan.egg-info/SOURCES.txt +8 -2
  62. {conan-2.12.2 → conan-2.14.0}/conan.egg-info/requires.txt +3 -1
  63. conan-2.14.0/conans/client/graph/__init__.py +0 -0
  64. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/compatibility.py +1 -1
  65. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/compute_pid.py +7 -3
  66. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/graph_binaries.py +3 -2
  67. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/graph_builder.py +17 -6
  68. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/graph_error.py +5 -2
  69. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/install_graph.py +13 -1
  70. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/profile_node_definer.py +1 -0
  71. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/proxy.py +22 -1
  72. {conan-2.12.2 → conan-2.14.0}/conans/client/hook_manager.py +1 -0
  73. {conan-2.12.2 → conan-2.14.0}/conans/client/installer.py +2 -4
  74. {conan-2.12.2 → conan-2.14.0}/conans/client/rest/file_uploader.py +1 -1
  75. {conan-2.12.2 → conan-2.14.0}/conans/client/rest/rest_client_v2.py +0 -21
  76. {conan-2.12.2 → conan-2.14.0}/conans/client/rest/rest_routes.py +0 -12
  77. {conan-2.12.2 → conan-2.14.0}/conans/client/rest_client_local_recipe_index.py +7 -7
  78. conan-2.14.0/conans/model/__init__.py +0 -0
  79. {conan-2.12.2 → conan-2.14.0}/conans/requirements.txt +1 -1
  80. {conan-2.12.2 → conan-2.14.0}/conans/requirements_dev.txt +1 -0
  81. conan-2.14.0/conans/util/__init__.py +0 -0
  82. {conan-2.12.2 → conan-2.14.0}/setup.cfg +3 -0
  83. conan-2.12.2/conan/api/subapi/workspace.py +0 -109
  84. conan-2.12.2/conan/internal/api/new/workspace.py +0 -33
  85. conan-2.12.2/conan/internal/runner/docker.py +0 -273
  86. conan-2.12.2/conan/internal/workspace.py +0 -181
  87. conan-2.12.2/conan/test/assets/__init__.py +0 -16
  88. conan-2.12.2/conan/test/assets/pkg_cmake.py +0 -156
  89. conan-2.12.2/conan/test/utils/profiles.py +0 -36
  90. conan-2.12.2/conan/tools/cmake/__init__.py +0 -14
  91. conan-2.12.2/conan/tools/premake/premake.py +0 -17
  92. {conan-2.12.2 → conan-2.14.0}/LICENSE.md +0 -0
  93. {conan-2.12.2 → conan-2.14.0}/MANIFEST.in +0 -0
  94. {conan-2.12.2 → conan-2.14.0}/README.md +0 -0
  95. {conan-2.12.2 → conan-2.14.0}/conan/api/__init__.py +0 -0
  96. {conan-2.12.2 → conan-2.14.0}/conan/api/input.py +0 -0
  97. {conan-2.12.2 → conan-2.14.0}/conan/api/model/__init__.py +0 -0
  98. {conan-2.12.2 → conan-2.14.0}/conan/api/model/remote.py +0 -0
  99. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/__init__.py +0 -0
  100. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/cache.py +0 -0
  101. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/command.py +0 -0
  102. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/download.py +0 -0
  103. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/graph.py +0 -0
  104. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/list.py +0 -0
  105. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/lockfile.py +0 -0
  106. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/profiles.py +0 -0
  107. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/remotes.py +0 -0
  108. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/remove.py +0 -0
  109. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/search.py +0 -0
  110. {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/upload.py +0 -0
  111. {conan-2.12.2 → conan-2.14.0}/conan/cli/__init__.py +0 -0
  112. {conan-2.12.2 → conan-2.14.0}/conan/cli/args.py +0 -0
  113. {conan-2.12.2 → conan-2.14.0}/conan/cli/cli.py +0 -0
  114. {conan-2.12.2 → conan-2.14.0}/conan/cli/command.py +0 -0
  115. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/__init__.py +0 -0
  116. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/build.py +0 -0
  117. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/cache.py +0 -0
  118. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/config.py +0 -0
  119. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/create.py +0 -0
  120. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/download.py +0 -0
  121. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/editable.py +0 -0
  122. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/export.py +0 -0
  123. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/export_pkg.py +0 -0
  124. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/graph.py +0 -0
  125. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/inspect.py +0 -0
  126. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/install.py +0 -0
  127. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/list.py +0 -0
  128. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/pkglist.py +0 -0
  129. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/profile.py +0 -0
  130. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/remove.py +0 -0
  131. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/search.py +0 -0
  132. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/source.py +0 -0
  133. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/test.py +0 -0
  134. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/upload.py +0 -0
  135. {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/version.py +0 -0
  136. {conan-2.12.2 → conan-2.14.0}/conan/cli/exit_codes.py +0 -0
  137. {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/__init__.py +0 -0
  138. {conan-2.12.2/conan/internal/api → conan-2.14.0/conan/cli/formatters/audit}/__init__.py +0 -0
  139. {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/__init__.py +0 -0
  140. {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/build_order_html.py +0 -0
  141. {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/graph.py +0 -0
  142. {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/graph_info_text.py +0 -0
  143. {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/info_graph_dot.py +0 -0
  144. {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/info_graph_html.py +0 -0
  145. {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/list/__init__.py +0 -0
  146. {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/list/list.py +0 -0
  147. {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/list/search_table_html.py +0 -0
  148. {conan-2.12.2 → conan-2.14.0}/conan/cli/printers/__init__.py +0 -0
  149. {conan-2.12.2 → conan-2.14.0}/conan/cli/printers/graph.py +0 -0
  150. {conan-2.12.2 → conan-2.14.0}/conan/cps/__init__.py +0 -0
  151. {conan-2.12.2 → conan-2.14.0}/conan/errors.py +0 -0
  152. {conan-2.12.2 → conan-2.14.0}/conan/internal/__init__.py +0 -0
  153. {conan-2.12.2/conan/internal/api/config → conan-2.14.0/conan/internal/api}/__init__.py +0 -0
  154. {conan-2.12.2/conan/internal/api/detect → conan-2.14.0/conan/internal/api/audit}/__init__.py +0 -0
  155. {conan-2.12.2/conan/internal/api/install → conan-2.14.0/conan/internal/api/config}/__init__.py +0 -0
  156. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/config/config_installer.py +0 -0
  157. {conan-2.12.2/conan/internal/api/list → conan-2.14.0/conan/internal/api/detect}/__init__.py +0 -0
  158. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/detect/detect_api.py +0 -0
  159. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/detect/detect_vs.py +0 -0
  160. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/export.py +0 -0
  161. {conan-2.12.2/conan/internal/api/local → conan-2.14.0/conan/internal/api/install}/__init__.py +0 -0
  162. {conan-2.12.2/conan/internal/api/new → conan-2.14.0/conan/internal/api/list}/__init__.py +0 -0
  163. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/list/query_parse.py +0 -0
  164. {conan-2.12.2/conan/internal/api/profile → conan-2.14.0/conan/internal/api/local}/__init__.py +0 -0
  165. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/local/editable.py +0 -0
  166. {conan-2.12.2/conan/internal/api/remotes → conan-2.14.0/conan/internal/api/new}/__init__.py +0 -0
  167. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/alias_new.py +0 -0
  168. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/autoools_exe.py +0 -0
  169. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/autotools_lib.py +0 -0
  170. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/basic.py +0 -0
  171. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/bazel_7_exe.py +0 -0
  172. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/bazel_7_lib.py +0 -0
  173. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/bazel_exe.py +0 -0
  174. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/bazel_lib.py +0 -0
  175. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/cmake_exe.py +0 -0
  176. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/local_recipes_index.py +0 -0
  177. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/meson_exe.py +0 -0
  178. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/meson_lib.py +0 -0
  179. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/msbuild_exe.py +0 -0
  180. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/msbuild_lib.py +0 -0
  181. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/qbs_lib.py +0 -0
  182. {conan-2.12.2/conan/internal/cache → conan-2.14.0/conan/internal/api/profile}/__init__.py +0 -0
  183. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/profile/detect.py +0 -0
  184. {conan-2.12.2/conan/internal/cache/db → conan-2.14.0/conan/internal/api/remotes}/__init__.py +0 -0
  185. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/remotes/encrypt.py +0 -0
  186. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/remotes/localdb.py +0 -0
  187. {conan-2.12.2 → conan-2.14.0}/conan/internal/api/uploader.py +0 -0
  188. {conan-2.12.2/conan/internal/model → conan-2.14.0/conan/internal/cache}/__init__.py +0 -0
  189. {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/cache.py +0 -0
  190. {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/conan_reference_layout.py +0 -0
  191. {conan-2.12.2/conan/test → conan-2.14.0/conan/internal/cache/db}/__init__.py +0 -0
  192. {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/db/cache_database.py +0 -0
  193. {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/db/packages_table.py +0 -0
  194. {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/db/recipes_table.py +0 -0
  195. {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/db/table.py +0 -0
  196. {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/home_paths.py +0 -0
  197. {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/integrity_check.py +0 -0
  198. {conan-2.12.2 → conan-2.14.0}/conan/internal/errors.py +0 -0
  199. {conan-2.12.2 → conan-2.14.0}/conan/internal/internal_tools.py +0 -0
  200. {conan-2.12.2 → conan-2.14.0}/conan/internal/methods.py +0 -0
  201. {conan-2.12.2/conan/test/utils → conan-2.14.0/conan/internal/model}/__init__.py +0 -0
  202. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/conan_file.py +0 -0
  203. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/dependencies.py +0 -0
  204. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/info.py +0 -0
  205. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/layout.py +0 -0
  206. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/lockfile.py +0 -0
  207. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/manifest.py +0 -0
  208. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/options.py +0 -0
  209. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/pkg_type.py +0 -0
  210. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/profile.py +0 -0
  211. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/recipe_ref.py +0 -0
  212. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/settings.py +0 -0
  213. {conan-2.12.2 → conan-2.14.0}/conan/internal/model/version_range.py +0 -0
  214. {conan-2.12.2 → conan-2.14.0}/conan/internal/paths.py +0 -0
  215. {conan-2.12.2 → conan-2.14.0}/conan/internal/runner/__init__.py +0 -0
  216. {conan-2.12.2 → conan-2.14.0}/conan/internal/runner/ssh.py +0 -0
  217. {conan-2.12.2 → conan-2.14.0}/conan/internal/runner/wsl.py +0 -0
  218. {conan-2.12.2/conan/tools/cmake/cmakedeps2 → conan-2.14.0/conan/test}/__init__.py +0 -0
  219. {conan-2.12.2/conan/tools/system → conan-2.14.0/conan/test/assets}/__init__.py +0 -0
  220. {conan-2.12.2 → conan-2.14.0}/conan/test/assets/autotools.py +0 -0
  221. {conan-2.12.2 → conan-2.14.0}/conan/test/assets/cmake.py +0 -0
  222. {conan-2.12.2 → conan-2.14.0}/conan/test/assets/genconanfile.py +0 -0
  223. {conan-2.12.2 → conan-2.14.0}/conan/test/assets/sources.py +0 -0
  224. {conan-2.12.2/conans → conan-2.14.0/conan/test/utils}/__init__.py +0 -0
  225. {conan-2.12.2 → conan-2.14.0}/conan/test/utils/artifactory.py +0 -0
  226. {conan-2.12.2 → conan-2.14.0}/conan/test/utils/env.py +0 -0
  227. {conan-2.12.2 → conan-2.14.0}/conan/test/utils/scm.py +0 -0
  228. {conan-2.12.2 → conan-2.14.0}/conan/test/utils/server_launcher.py +0 -0
  229. {conan-2.12.2 → conan-2.14.0}/conan/test/utils/test_files.py +0 -0
  230. {conan-2.12.2 → conan-2.14.0}/conan/tools/__init__.py +0 -0
  231. {conan-2.12.2 → conan-2.14.0}/conan/tools/android/__init__.py +0 -0
  232. {conan-2.12.2 → conan-2.14.0}/conan/tools/android/utils.py +0 -0
  233. {conan-2.12.2 → conan-2.14.0}/conan/tools/apple/__init__.py +0 -0
  234. {conan-2.12.2 → conan-2.14.0}/conan/tools/apple/apple.py +0 -0
  235. {conan-2.12.2 → conan-2.14.0}/conan/tools/apple/xcodebuild.py +0 -0
  236. {conan-2.12.2 → conan-2.14.0}/conan/tools/apple/xcodedeps.py +0 -0
  237. {conan-2.12.2 → conan-2.14.0}/conan/tools/apple/xcodetoolchain.py +0 -0
  238. {conan-2.12.2 → conan-2.14.0}/conan/tools/build/__init__.py +0 -0
  239. {conan-2.12.2 → conan-2.14.0}/conan/tools/build/cppstd.py +0 -0
  240. {conan-2.12.2 → conan-2.14.0}/conan/tools/build/cpu.py +0 -0
  241. {conan-2.12.2 → conan-2.14.0}/conan/tools/build/cross_building.py +0 -0
  242. {conan-2.12.2 → conan-2.14.0}/conan/tools/build/cstd.py +0 -0
  243. {conan-2.12.2 → conan-2.14.0}/conan/tools/build/flags.py +0 -0
  244. {conan-2.12.2 → conan-2.14.0}/conan/tools/build/stdcpp_library.py +0 -0
  245. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/__init__.py +0 -0
  246. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/__init__.py +0 -0
  247. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/config_version.py +0 -0
  248. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/macros.py +0 -0
  249. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/target_data.py +0 -0
  250. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/targets.py +0 -0
  251. {conan-2.12.2/conans/client → conan-2.14.0/conan/tools/cmake/cmakedeps2}/__init__.py +0 -0
  252. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps2/config.py +0 -0
  253. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps2/config_version.py +0 -0
  254. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps2/targets.py +0 -0
  255. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/layout.py +0 -0
  256. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/presets.py +0 -0
  257. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/toolchain/__init__.py +0 -0
  258. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/toolchain/blocks.py +0 -0
  259. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/toolchain/toolchain.py +0 -0
  260. {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/utils.py +0 -0
  261. {conan-2.12.2 → conan-2.14.0}/conan/tools/cps/__init__.py +0 -0
  262. {conan-2.12.2 → conan-2.14.0}/conan/tools/env/__init__.py +0 -0
  263. {conan-2.12.2 → conan-2.14.0}/conan/tools/env/virtualbuildenv.py +0 -0
  264. {conan-2.12.2 → conan-2.14.0}/conan/tools/env/virtualrunenv.py +0 -0
  265. {conan-2.12.2 → conan-2.14.0}/conan/tools/files/__init__.py +0 -0
  266. {conan-2.12.2 → conan-2.14.0}/conan/tools/files/conandata.py +0 -0
  267. {conan-2.12.2 → conan-2.14.0}/conan/tools/files/copy_pattern.py +0 -0
  268. {conan-2.12.2 → conan-2.14.0}/conan/tools/files/packager.py +0 -0
  269. {conan-2.12.2 → conan-2.14.0}/conan/tools/files/patches.py +0 -0
  270. {conan-2.12.2 → conan-2.14.0}/conan/tools/files/symlinks/__init__.py +0 -0
  271. {conan-2.12.2 → conan-2.14.0}/conan/tools/files/symlinks/symlinks.py +0 -0
  272. {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/__init__.py +0 -0
  273. {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/autotools.py +0 -0
  274. {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/autotoolsdeps.py +0 -0
  275. {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/get_gnu_triplet.py +0 -0
  276. {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/gnudeps_flags.py +0 -0
  277. {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/makedeps.py +0 -0
  278. {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/pkgconfig.py +0 -0
  279. {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/pkgconfigdeps.py +0 -0
  280. {conan-2.12.2 → conan-2.14.0}/conan/tools/google/__init__.py +0 -0
  281. {conan-2.12.2 → conan-2.14.0}/conan/tools/google/bazel.py +0 -0
  282. {conan-2.12.2 → conan-2.14.0}/conan/tools/google/bazeldeps.py +0 -0
  283. {conan-2.12.2 → conan-2.14.0}/conan/tools/google/layout.py +0 -0
  284. {conan-2.12.2 → conan-2.14.0}/conan/tools/google/toolchain.py +0 -0
  285. {conan-2.12.2 → conan-2.14.0}/conan/tools/intel/__init__.py +0 -0
  286. {conan-2.12.2 → conan-2.14.0}/conan/tools/intel/intel_cc.py +0 -0
  287. {conan-2.12.2 → conan-2.14.0}/conan/tools/layout/__init__.py +0 -0
  288. {conan-2.12.2 → conan-2.14.0}/conan/tools/meson/__init__.py +0 -0
  289. {conan-2.12.2 → conan-2.14.0}/conan/tools/meson/helpers.py +0 -0
  290. {conan-2.12.2 → conan-2.14.0}/conan/tools/meson/meson.py +0 -0
  291. {conan-2.12.2 → conan-2.14.0}/conan/tools/meson/toolchain.py +0 -0
  292. {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/__init__.py +0 -0
  293. {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/layout.py +0 -0
  294. {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/msbuild.py +0 -0
  295. {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/nmakedeps.py +0 -0
  296. {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/nmaketoolchain.py +0 -0
  297. {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/subsystems.py +0 -0
  298. {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/toolchain.py +0 -0
  299. {conan-2.12.2 → conan-2.14.0}/conan/tools/premake/__init__.py +0 -0
  300. {conan-2.12.2 → conan-2.14.0}/conan/tools/premake/premakedeps.py +0 -0
  301. {conan-2.12.2 → conan-2.14.0}/conan/tools/qbs/__init__.py +0 -0
  302. {conan-2.12.2 → conan-2.14.0}/conan/tools/qbs/common.py +0 -0
  303. {conan-2.12.2 → conan-2.14.0}/conan/tools/qbs/qbs.py +0 -0
  304. {conan-2.12.2 → conan-2.14.0}/conan/tools/qbs/qbsdeps.py +0 -0
  305. {conan-2.12.2 → conan-2.14.0}/conan/tools/ros/__init__.py +0 -0
  306. {conan-2.12.2 → conan-2.14.0}/conan/tools/ros/rosenv.py +0 -0
  307. {conan-2.12.2 → conan-2.14.0}/conan/tools/sbom/__init__.py +0 -0
  308. {conan-2.12.2 → conan-2.14.0}/conan/tools/scm/__init__.py +0 -0
  309. {conan-2.12.2 → conan-2.14.0}/conan/tools/scons/__init__.py +0 -0
  310. {conan-2.12.2 → conan-2.14.0}/conan/tools/scons/sconsdeps.py +0 -0
  311. {conan-2.12.2/conans/client/downloaders → conan-2.14.0/conan/tools/system}/__init__.py +0 -0
  312. {conan-2.12.2 → conan-2.14.0}/conan/tools/system/package_manager.py +0 -0
  313. {conan-2.12.2 → conan-2.14.0}/conan.egg-info/dependency_links.txt +0 -0
  314. {conan-2.12.2 → conan-2.14.0}/conan.egg-info/entry_points.txt +0 -0
  315. {conan-2.12.2 → conan-2.14.0}/conan.egg-info/top_level.txt +0 -0
  316. {conan-2.12.2/conans/client/graph → conan-2.14.0/conans}/__init__.py +0 -0
  317. {conan-2.12.2/conans/model → conan-2.14.0/conans/client}/__init__.py +0 -0
  318. {conan-2.12.2/conans/util → conan-2.14.0/conans/client/downloaders}/__init__.py +0 -0
  319. {conan-2.12.2 → conan-2.14.0}/conans/client/downloaders/caching_file_downloader.py +0 -0
  320. {conan-2.12.2 → conan-2.14.0}/conans/client/downloaders/download_cache.py +0 -0
  321. {conan-2.12.2 → conan-2.14.0}/conans/client/downloaders/file_downloader.py +0 -0
  322. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/build_mode.py +0 -0
  323. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/graph.py +0 -0
  324. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/provides.py +0 -0
  325. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/python_requires.py +0 -0
  326. {conan-2.12.2 → conan-2.14.0}/conans/client/graph/range_resolver.py +0 -0
  327. {conan-2.12.2 → conan-2.14.0}/conans/client/loader.py +0 -0
  328. {conan-2.12.2 → conan-2.14.0}/conans/client/loader_txt.py +0 -0
  329. {conan-2.12.2 → conan-2.14.0}/conans/client/migrations.py +0 -0
  330. {conan-2.12.2 → conan-2.14.0}/conans/client/pkg_sign.py +0 -0
  331. {conan-2.12.2 → conan-2.14.0}/conans/client/remote_manager.py +0 -0
  332. {conan-2.12.2 → conan-2.14.0}/conans/client/rest/__init__.py +0 -0
  333. {conan-2.12.2 → conan-2.14.0}/conans/client/rest/auth_manager.py +0 -0
  334. {conan-2.12.2 → conan-2.14.0}/conans/client/rest/client_routes.py +0 -0
  335. {conan-2.12.2 → conan-2.14.0}/conans/client/rest/conan_requester.py +0 -0
  336. {conan-2.12.2 → conan-2.14.0}/conans/client/rest/remote_credentials.py +0 -0
  337. {conan-2.12.2 → conan-2.14.0}/conans/client/rest/rest_client.py +0 -0
  338. {conan-2.12.2 → conan-2.14.0}/conans/client/source.py +0 -0
  339. {conan-2.12.2 → conan-2.14.0}/conans/client/subsystems.py +0 -0
  340. {conan-2.12.2 → conan-2.14.0}/conans/conan.py +0 -0
  341. {conan-2.12.2 → conan-2.14.0}/conans/conan_server.py +0 -0
  342. {conan-2.12.2 → conan-2.14.0}/conans/migrations.py +0 -0
  343. {conan-2.12.2 → conan-2.14.0}/conans/model/package_ref.py +0 -0
  344. {conan-2.12.2 → conan-2.14.0}/conans/model/recipe_ref.py +0 -0
  345. {conan-2.12.2 → conan-2.14.0}/conans/requirements_runner.txt +0 -0
  346. {conan-2.12.2 → conan-2.14.0}/conans/requirements_server.txt +0 -0
  347. {conan-2.12.2 → conan-2.14.0}/conans/util/config_parser.py +0 -0
  348. {conan-2.12.2 → conan-2.14.0}/conans/util/dates.py +0 -0
  349. {conan-2.12.2 → conan-2.14.0}/conans/util/files.py +0 -0
  350. {conan-2.12.2 → conan-2.14.0}/conans/util/locks.py +0 -0
  351. {conan-2.12.2 → conan-2.14.0}/conans/util/runners.py +0 -0
  352. {conan-2.12.2 → conan-2.14.0}/conans/util/thread.py +0 -0
  353. {conan-2.12.2 → conan-2.14.0}/pyproject.toml +0 -0
  354. {conan-2.12.2 → conan-2.14.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: conan
3
- Version: 2.12.2
3
+ Version: 2.14.0
4
4
  Summary: Conan C/C++ package manager
5
5
  Home-page: https://conan.io
6
6
  Author: JFrog LTD
@@ -1,5 +1,6 @@
1
1
  from conan.internal.model.conan_file import ConanFile
2
+ from conan.internal.model.workspace import Workspace
2
3
  from conan.internal.model.version import Version
3
4
 
4
- __version__ = '2.12.2'
5
+ __version__ = '2.14.0'
5
6
  conan_version = Version(__version__)
@@ -1,6 +1,8 @@
1
+ import os
1
2
  import sys
2
3
 
3
4
  from conan.api.output import init_colorama
5
+ from conan.api.subapi.audit import AuditAPI
4
6
  from conan.api.subapi.cache import CacheAPI
5
7
  from conan.api.subapi.command import CommandAPI
6
8
  from conan.api.subapi.local import LocalAPI
@@ -31,10 +33,16 @@ class ConanAPI:
31
33
  not be created directly.
32
34
  """
33
35
  def __init__(self, cache_folder=None):
36
+ """
37
+ :param cache_folder: Conan cache/home folder. It will have less priority than the
38
+ "home_folder" defined in a Workspace.
39
+ """
34
40
 
35
41
  version = sys.version_info
36
42
  if version.major == 2 or version.minor < 6:
37
43
  raise ConanException("Conan needs Python >= 3.6")
44
+ if cache_folder is not None and not os.path.isabs(cache_folder):
45
+ raise ConanException("cache_folder has to be an absolute path")
38
46
 
39
47
  init_colorama(sys.stderr)
40
48
  self.workspace = WorkspaceAPI(self)
@@ -62,6 +70,7 @@ class ConanAPI:
62
70
  self.cache = CacheAPI(self)
63
71
  self.lockfile = LockfileAPI(self)
64
72
  self.local = LocalAPI(self)
73
+ self.audit = AuditAPI(self)
65
74
 
66
75
  _check_conan_version(self)
67
76
 
@@ -16,9 +16,6 @@ class MultiPackagesList:
16
16
  def __init__(self):
17
17
  self.lists = {}
18
18
 
19
- def setdefault(self, key, default):
20
- return self.lists.setdefault(key, default)
21
-
22
19
  def __getitem__(self, name):
23
20
  try:
24
21
  return self.lists[name]
@@ -57,11 +54,6 @@ class MultiPackagesList:
57
54
  pkglist.lists = result
58
55
  return pkglist
59
56
 
60
- @staticmethod
61
- def from_graph(graph, graph_recipes=None, graph_binaries=None):
62
- graph = {"graph": graph.serialize()}
63
- return MultiPackagesList._define_graph(graph, graph_recipes, graph_binaries)
64
-
65
57
  @staticmethod
66
58
  def load_graph(graphfile, graph_recipes=None, graph_binaries=None):
67
59
  if not os.path.isfile(graphfile):
@@ -44,12 +44,6 @@ class RecipeReference:
44
44
  result += "#{}".format(self.revision)
45
45
  return result
46
46
 
47
- def repr_reduced(self):
48
- result = self.__str__()
49
- if self.revision is not None:
50
- result += "#{}".format(self.revision[0:4])
51
- return result
52
-
53
47
  def repr_humantime(self):
54
48
  result = self.repr_notime()
55
49
  assert self.timestamp
@@ -236,16 +230,6 @@ class PkgReference:
236
230
  result += "#{}".format(self.revision)
237
231
  return result
238
232
 
239
- def repr_reduced(self):
240
- if self.ref is None:
241
- return ""
242
- result = self.ref.repr_reduced()
243
- if self.package_id:
244
- result += ":{}".format(self.package_id[0:4])
245
- if self.revision is not None:
246
- result += "#{}".format(self.revision[0:4])
247
- return result
248
-
249
233
  def repr_humantime(self):
250
234
  result = self.repr_notime()
251
235
  assert self.timestamp
@@ -175,18 +175,7 @@ class ConanOutput:
175
175
 
176
176
  return self
177
177
 
178
- def rewrite_line(self, line):
179
- tmp_color = self._color
180
- self._color = False
181
- total_size = 70
182
- limit_size = total_size // 2 - 3
183
- if len(line) > total_size:
184
- line = line[0:limit_size] + " ... " + line[-limit_size:]
185
- self.write("\r%s%s" % (line, " " * (total_size - len(line))))
186
- self.stream.flush()
187
- self._color = tmp_color
188
-
189
- def _write_message(self, msg, fg=None, bg=None):
178
+ def _write_message(self, msg, fg=None, bg=None, newline=True):
190
179
  if isinstance(msg, dict):
191
180
  # For traces we can receive a dict already, we try to transform then into more natural
192
181
  # text
@@ -206,8 +195,11 @@ class ConanOutput:
206
195
  else:
207
196
  ret += "{}".format(msg)
208
197
 
198
+ if newline:
199
+ ret = "%s\n" % ret
200
+
209
201
  with self.lock:
210
- self.stream.write("{}\n".format(ret))
202
+ self.stream.write(ret)
211
203
  self.stream.flush()
212
204
 
213
205
  def trace(self, msg):
@@ -0,0 +1,159 @@
1
+ import binascii
2
+ import json
3
+ import os
4
+ import base64
5
+
6
+ from conan.internal.api.audit.providers import ConanCenterProvider, PrivateProvider
7
+ from conan.errors import ConanException
8
+ from conan.internal.api.remotes.encrypt import encode, decode
9
+ from conan.internal.model.recipe_ref import RecipeReference
10
+ from conans.util.files import save, load
11
+
12
+ CONAN_CENTER_AUDIT_PROVIDER_NAME = "conancenter"
13
+ CYPHER_KEY = "private"
14
+
15
+ class AuditAPI:
16
+ """
17
+ This class provides the functionality to scan references for vulnerabilities.
18
+ """
19
+
20
+ def __init__(self, conan_api):
21
+ self.conan_api = conan_api
22
+ self._home_folder = conan_api.home_folder
23
+ self._providers_path = os.path.join(self._home_folder, "audit_providers.json")
24
+ self._provider_cls = {
25
+ "conan-center-proxy": ConanCenterProvider,
26
+ "private": PrivateProvider,
27
+ }
28
+
29
+ def scan(self, deps_graph, provider):
30
+ """
31
+ Scan a given recipe for vulnerabilities in its dependencies.
32
+ """
33
+ refs = sorted(set(RecipeReference.loads(f"{node.ref.name}/{node.ref.version}")
34
+ for node in deps_graph.nodes[1:]), key= lambda ref: ref.name)
35
+ return provider.get_cves(refs)
36
+
37
+ def list(self, references, provider):
38
+ """
39
+ List the vulnerabilities of the given reference.
40
+ """
41
+ refs = [RecipeReference.loads(ref) for ref in references]
42
+ for ref in refs:
43
+ ref.validate_ref()
44
+ return provider.get_cves(refs)
45
+
46
+ def get_provider(self, provider_name):
47
+ """
48
+ Get the provider by name.
49
+ """
50
+ # TODO: More work remains to be done here, hardcoded for now for testing
51
+ providers = _load_providers(self._providers_path)
52
+ if provider_name not in providers:
53
+ add_arguments = (
54
+ "--url=https://audit.conan.io/ --type=conan-center-proxy"
55
+ if provider_name == CONAN_CENTER_AUDIT_PROVIDER_NAME
56
+ else "--url=<url> --type=<type>"
57
+ )
58
+
59
+ register_message = (
60
+ f"If you don't have a valid token, register at: https://audit.conan.io/register."
61
+ if provider_name == CONAN_CENTER_AUDIT_PROVIDER_NAME
62
+ else ""
63
+ )
64
+
65
+ raise ConanException(
66
+ f"Provider '{provider_name}' not found. Please specify a valid provider name or add it using: "
67
+ f"'conan audit provider add {provider_name} {add_arguments} --token=<token>'\n"
68
+ f"{register_message}"
69
+ )
70
+
71
+ provider_data = providers[provider_name]
72
+ safe_provider_name = provider_name.replace("-", "_")
73
+ env_token = os.getenv(f"CONAN_AUDIT_PROVIDER_TOKEN_{safe_provider_name.upper()}")
74
+
75
+ if env_token:
76
+ # Always override the token with the environment variable
77
+ provider_data["token"] = env_token
78
+ elif "token" in provider_data:
79
+ try:
80
+ provider_data["token"] = decode(base64.standard_b64decode(provider_data["token"]).decode(), CYPHER_KEY)
81
+ except binascii.Error as e:
82
+ raise ConanException(f"Invalid token format for provider '{provider_name}'. The token might be corrupt.")
83
+
84
+ provider_cls = self._provider_cls.get(provider_data["type"])
85
+
86
+ return provider_cls(self.conan_api, provider_name, provider_data)
87
+
88
+ def list_providers(self):
89
+ """
90
+ Get all available providers.
91
+ """
92
+ providers = _load_providers(self._providers_path)
93
+ result = []
94
+ for name, provider_data in providers.items():
95
+ provider_cls = self._provider_cls.get(provider_data["type"])
96
+ result.append(provider_cls(self.conan_api, name, provider_data))
97
+ return result
98
+
99
+ def add_provider(self, name, url, provider_type):
100
+ """
101
+ Add a provider.
102
+ """
103
+ providers = _load_providers(self._providers_path)
104
+ if name in providers:
105
+ raise ConanException(f"Provider '{name}' already exists")
106
+
107
+ if provider_type not in self._provider_cls:
108
+ raise ConanException(f"Provider type '{provider_type}' not found")
109
+
110
+ providers[name] = {
111
+ "name": name,
112
+ "url": url,
113
+ "type": provider_type
114
+ }
115
+
116
+ _save_providers(self._providers_path, providers)
117
+
118
+ def remove_provider(self, provider_name):
119
+ """
120
+ Remove a provider.
121
+ """
122
+ providers = _load_providers(self._providers_path)
123
+ if provider_name not in providers:
124
+ raise ConanException(f"Provider '{provider_name}' not found")
125
+
126
+ del providers[provider_name]
127
+
128
+ _save_providers(self._providers_path, providers)
129
+
130
+ def auth_provider(self, provider, token):
131
+ """
132
+ Authenticate a provider.
133
+ """
134
+ if not provider:
135
+ raise ConanException("Provider not found")
136
+
137
+ providers = _load_providers(self._providers_path)
138
+
139
+ assert provider.name in providers
140
+ providers[provider.name]["token"] = base64.standard_b64encode(encode(token, CYPHER_KEY).encode()).decode()
141
+ setattr(provider, "token", token)
142
+ _save_providers(self._providers_path, providers)
143
+
144
+
145
+ def _load_providers(providers_path):
146
+ if not os.path.exists(providers_path):
147
+ default_providers = {
148
+ CONAN_CENTER_AUDIT_PROVIDER_NAME: {
149
+ "url": "https://audit.conan.io/",
150
+ "type": "conan-center-proxy"
151
+ }
152
+ }
153
+ save(providers_path, json.dumps(default_providers, indent=4))
154
+
155
+ return json.loads(load(providers_path))
156
+
157
+
158
+ def _save_providers(providers_path, providers):
159
+ save(providers_path, json.dumps(providers, indent=4))
@@ -20,6 +20,7 @@ from conan.internal.model.conf import ConfDefinition, BUILT_IN_CONFS, CORE_CONF_
20
20
  from conan.internal.model.pkg_type import PackageType
21
21
  from conan.api.model import RecipeReference
22
22
  from conan.internal.model.settings import Settings
23
+ from conans.client.hook_manager import HookManager
23
24
  from conans.util.files import load, save, rmdir, remove
24
25
 
25
26
 
@@ -29,6 +30,7 @@ class ConfigAPI:
29
30
  self.conan_api = conan_api
30
31
  self._new_config = None
31
32
  self._cli_core_confs = None
33
+ self.hook_manager = HookManager(HomePaths(conan_api.home_folder).hooks_path)
32
34
 
33
35
  def home(self):
34
36
  return self.conan_api.cache_folder
@@ -234,3 +236,4 @@ class ConfigAPI:
234
236
  if self._new_config is not None:
235
237
  self._new_config.clear()
236
238
  self._populate_global_conf()
239
+ self.hook_manager = HookManager(HomePaths(self.conan_api.home_folder).hooks_path)
@@ -1,11 +1,9 @@
1
1
  from conan.api.output import ConanOutput
2
2
  from conan.internal.cache.cache import PkgCache
3
- from conan.internal.cache.home_paths import HomePaths
4
3
  from conan.internal.conan_app import ConanApp
5
4
  from conan.internal.api.export import cmd_export
6
5
  from conan.internal.methods import run_package_method
7
6
  from conans.client.graph.graph import BINARY_BUILD, RECIPE_INCACHE
8
- from conans.client.hook_manager import HookManager
9
7
  from conan.api.model import PkgReference
10
8
  from conans.util.files import mkdir
11
9
 
@@ -18,13 +16,13 @@ class ExportAPI:
18
16
  def export(self, path, name, version, user, channel, lockfile=None, remotes=None):
19
17
  ConanOutput().title("Exporting recipe to the cache")
20
18
  app = ConanApp(self.conan_api)
21
- hook_manager = HookManager(HomePaths(self.conan_api.home_folder).hooks_path)
19
+ hook_manager = self.conan_api.config.hook_manager
22
20
  return cmd_export(app, hook_manager, self.conan_api.config.global_conf, path, name, version,
23
21
  user, channel, graph_lock=lockfile, remotes=remotes)
24
22
 
25
23
  def export_pkg(self, deps_graph, source_folder, output_folder):
26
24
  cache = PkgCache(self.conan_api.cache_folder, self.conan_api.config.global_conf)
27
- hook_manager = HookManager(HomePaths(self.conan_api.home_folder).hooks_path)
25
+ hook_manager = self.conan_api.config.hook_manager
28
26
 
29
27
  # The graph has to be loaded with build_mode=[ref.name], so that node is not tried
30
28
  # to be downloaded from remotes
@@ -1,12 +1,10 @@
1
1
  import os
2
2
 
3
3
  from conan.internal.api.install.generators import write_generators
4
- from conan.internal.cache.home_paths import HomePaths
5
4
  from conan.internal.conan_app import ConanBasicApp
6
5
  from conan.internal.deploy import do_deploys
7
6
 
8
7
  from conans.client.graph.install_graph import InstallGraph
9
- from conans.client.hook_manager import HookManager
10
8
  from conans.client.installer import BinaryInstaller
11
9
  from conan.errors import ConanInvalidConfiguration
12
10
 
@@ -22,7 +20,8 @@ class InstallAPI:
22
20
  :param remotes:
23
21
  """
24
22
  app = ConanBasicApp(self.conan_api)
25
- installer = BinaryInstaller(app, self.conan_api.config.global_conf, app.editable_packages)
23
+ installer = BinaryInstaller(app, self.conan_api.config.global_conf, app.editable_packages,
24
+ self.conan_api.config.hook_manager)
26
25
  install_graph = InstallGraph(deps_graph)
27
26
  install_graph.raise_errors()
28
27
  install_order = install_graph.install_order()
@@ -35,7 +34,8 @@ class InstallAPI:
35
34
  :param graph: Dependency graph to intall packages for
36
35
  """
37
36
  app = ConanBasicApp(self.conan_api)
38
- installer = BinaryInstaller(app, self.conan_api.config.global_conf, app.editable_packages)
37
+ installer = BinaryInstaller(app, self.conan_api.config.global_conf, app.editable_packages,
38
+ self.conan_api.config.hook_manager)
39
39
  installer.install_system_requires(graph, only_info)
40
40
 
41
41
  def install_sources(self, graph, remotes):
@@ -45,7 +45,8 @@ class InstallAPI:
45
45
  :param graph: Dependency graph to install packages for
46
46
  """
47
47
  app = ConanBasicApp(self.conan_api)
48
- installer = BinaryInstaller(app, self.conan_api.config.global_conf, app.editable_packages)
48
+ installer = BinaryInstaller(app, self.conan_api.config.global_conf, app.editable_packages,
49
+ self.conan_api.config.hook_manager)
49
50
  installer.install_sources(graph, remotes)
50
51
 
51
52
  # TODO: Look for a better name
@@ -86,7 +87,7 @@ class InstallAPI:
86
87
  if gen not in final_generators:
87
88
  final_generators.append(gen)
88
89
  conanfile.generators = final_generators
89
- hook_manager = HookManager(HomePaths(self.conan_api.home_folder).hooks_path)
90
+ hook_manager = self.conan_api.config.hook_manager
90
91
  write_generators(conanfile, hook_manager, self.conan_api.home_folder,
91
92
  envs_generation=envs_generation)
92
93
 
@@ -1,7 +1,6 @@
1
1
  import os
2
2
 
3
3
  from conan.cli import make_abs_path
4
- from conan.internal.cache.home_paths import HomePaths
5
4
  from conan.internal.conan_app import ConanApp
6
5
  from conan.internal.api.local.editable import EditablePackages
7
6
  from conan.internal.methods import run_build_method, run_source_method
@@ -9,7 +8,6 @@ from conans.client.graph.graph import CONTEXT_HOST
9
8
  from conans.client.graph.profile_node_definer import initialize_conanfile_profile
10
9
  from conan.internal.errors import conanfile_exception_formatter
11
10
  from conan.errors import ConanException
12
- from conans.client.hook_manager import HookManager
13
11
  from conan.api.model import RecipeReference
14
12
  from conans.util.files import chdir
15
13
 
@@ -93,13 +91,13 @@ class LocalAPI:
93
91
  conanfile.folders.set_base_build(None)
94
92
  conanfile.folders.set_base_package(None)
95
93
 
96
- hook_manager = HookManager(HomePaths(self._conan_api.home_folder).hooks_path)
94
+ hook_manager = self._conan_api.config.hook_manager
97
95
  run_source_method(conanfile, hook_manager)
98
96
 
99
97
  def build(self, conanfile):
100
98
  """ calls the 'build()' method of the current (user folder) conanfile.py
101
99
  """
102
- hook_manager = HookManager(HomePaths(self._conan_api.home_folder).hooks_path)
100
+ hook_manager = self._conan_api.config.hook_manager
103
101
  conanfile.folders.set_base_package(conanfile.folders.base_build)
104
102
  conanfile.folders.set_base_pkg_metadata(os.path.join(conanfile.build_folder, "metadata"))
105
103
  run_build_method(conanfile, hook_manager)
@@ -111,7 +111,7 @@ class NewAPI:
111
111
  ensure_list("tool_requires")
112
112
 
113
113
  def as_package_name(n):
114
- return n.replace("-", "_").replace("+", "_").replace(".", "_")
114
+ return n.replace("-", "_").replace("+", "_")
115
115
 
116
116
  def as_name(ref):
117
117
  ref = as_package_name(ref)
@@ -119,7 +119,7 @@ class NewAPI:
119
119
  ref = ref[0:ref.index('/')]
120
120
  return ref
121
121
 
122
- definitions["package_name"] = as_package_name(name)
122
+ definitions["package_name"] = as_package_name(name).replace(".", "_")
123
123
  definitions["as_name"] = as_name
124
124
  definitions["names"] = lambda x: ", ".join(r.split("/", 1)[0] for r in x)
125
125
  if "name" not in definitions: