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.
- {conan-2.12.2/conan.egg-info → conan-2.14.0}/PKG-INFO +1 -1
- {conan-2.12.2 → conan-2.14.0}/conan/__init__.py +2 -1
- {conan-2.12.2 → conan-2.14.0}/conan/api/conan_api.py +9 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/model/list.py +0 -8
- {conan-2.12.2 → conan-2.14.0}/conan/api/model/refs.py +0 -16
- {conan-2.12.2 → conan-2.14.0}/conan/api/output.py +5 -13
- conan-2.14.0/conan/api/subapi/audit.py +159 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/config.py +3 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/export.py +2 -4
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/install.py +7 -6
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/local.py +2 -4
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/new.py +2 -2
- conan-2.14.0/conan/api/subapi/workspace.py +263 -0
- conan-2.14.0/conan/cli/commands/audit.py +195 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/lock.py +62 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/new.py +4 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/remote.py +2 -2
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/workspace.py +64 -9
- conan-2.14.0/conan/cli/formatters/audit/vulnerabilities.py +271 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cps/cps.py +7 -1
- conan-2.14.0/conan/internal/api/audit/providers.py +208 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/install/generators.py +1 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/cmake_lib.py +1 -1
- conan-2.14.0/conan/internal/api/new/workspace.py +85 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/profile/profile_loader.py +1 -1
- {conan-2.12.2 → conan-2.14.0}/conan/internal/conan_app.py +22 -1
- {conan-2.12.2 → conan-2.14.0}/conan/internal/default_settings.py +3 -2
- {conan-2.12.2 → conan-2.14.0}/conan/internal/deploy.py +12 -3
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/conanfile_interface.py +4 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/conf.py +1 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/cpp_info.py +37 -22
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/requires.py +1 -1
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/version.py +6 -0
- conan-2.14.0/conan/internal/model/workspace.py +94 -0
- conan-2.14.0/conan/internal/runner/docker.py +333 -0
- conan-2.14.0/conan/internal/runner/output.py +12 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/assets/visual_project_files.py +2 -40
- {conan-2.12.2 → conan-2.14.0}/conan/test/utils/file_server.py +2 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/utils/mocks.py +0 -32
- conan-2.14.0/conan/test/utils/profiles.py +18 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/utils/tools.py +20 -86
- conan-2.14.0/conan/tools/cmake/__init__.py +31 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmake.py +1 -1
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/cmakedeps.py +1 -1
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/config.py +7 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/target_configuration.py +6 -18
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps2/cmakedeps.py +67 -43
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps2/target_configuration.py +84 -24
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cps/cps_deps.py +1 -1
- {conan-2.12.2 → conan-2.14.0}/conan/tools/env/environment.py +15 -5
- {conan-2.12.2 → conan-2.14.0}/conan/tools/files/files.py +25 -21
- {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/autotoolstoolchain.py +1 -1
- {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/gnutoolchain.py +1 -1
- {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/msbuilddeps.py +2 -2
- {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/visual.py +1 -1
- conan-2.14.0/conan/tools/premake/premake.py +40 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/qbs/qbsprofile.py +0 -2
- {conan-2.12.2 → conan-2.14.0}/conan/tools/sbom/cyclonedx.py +1 -1
- {conan-2.12.2 → conan-2.14.0}/conan/tools/scm/git.py +5 -2
- {conan-2.12.2 → conan-2.14.0/conan.egg-info}/PKG-INFO +1 -1
- {conan-2.12.2 → conan-2.14.0}/conan.egg-info/SOURCES.txt +8 -2
- {conan-2.12.2 → conan-2.14.0}/conan.egg-info/requires.txt +3 -1
- conan-2.14.0/conans/client/graph/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/compatibility.py +1 -1
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/compute_pid.py +7 -3
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/graph_binaries.py +3 -2
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/graph_builder.py +17 -6
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/graph_error.py +5 -2
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/install_graph.py +13 -1
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/profile_node_definer.py +1 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/proxy.py +22 -1
- {conan-2.12.2 → conan-2.14.0}/conans/client/hook_manager.py +1 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/installer.py +2 -4
- {conan-2.12.2 → conan-2.14.0}/conans/client/rest/file_uploader.py +1 -1
- {conan-2.12.2 → conan-2.14.0}/conans/client/rest/rest_client_v2.py +0 -21
- {conan-2.12.2 → conan-2.14.0}/conans/client/rest/rest_routes.py +0 -12
- {conan-2.12.2 → conan-2.14.0}/conans/client/rest_client_local_recipe_index.py +7 -7
- conan-2.14.0/conans/model/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/requirements.txt +1 -1
- {conan-2.12.2 → conan-2.14.0}/conans/requirements_dev.txt +1 -0
- conan-2.14.0/conans/util/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/setup.cfg +3 -0
- conan-2.12.2/conan/api/subapi/workspace.py +0 -109
- conan-2.12.2/conan/internal/api/new/workspace.py +0 -33
- conan-2.12.2/conan/internal/runner/docker.py +0 -273
- conan-2.12.2/conan/internal/workspace.py +0 -181
- conan-2.12.2/conan/test/assets/__init__.py +0 -16
- conan-2.12.2/conan/test/assets/pkg_cmake.py +0 -156
- conan-2.12.2/conan/test/utils/profiles.py +0 -36
- conan-2.12.2/conan/tools/cmake/__init__.py +0 -14
- conan-2.12.2/conan/tools/premake/premake.py +0 -17
- {conan-2.12.2 → conan-2.14.0}/LICENSE.md +0 -0
- {conan-2.12.2 → conan-2.14.0}/MANIFEST.in +0 -0
- {conan-2.12.2 → conan-2.14.0}/README.md +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/input.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/model/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/model/remote.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/cache.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/command.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/download.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/graph.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/list.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/lockfile.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/profiles.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/remotes.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/remove.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/search.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/api/subapi/upload.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/args.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/cli.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/command.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/build.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/cache.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/config.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/create.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/download.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/editable.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/export.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/export_pkg.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/graph.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/inspect.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/install.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/list.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/pkglist.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/profile.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/remove.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/search.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/source.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/test.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/upload.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/commands/version.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/exit_codes.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/__init__.py +0 -0
- {conan-2.12.2/conan/internal/api → conan-2.14.0/conan/cli/formatters/audit}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/build_order_html.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/graph.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/graph_info_text.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/info_graph_dot.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/graph/info_graph_html.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/list/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/list/list.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/formatters/list/search_table_html.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/printers/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cli/printers/graph.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/cps/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/errors.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/__init__.py +0 -0
- {conan-2.12.2/conan/internal/api/config → conan-2.14.0/conan/internal/api}/__init__.py +0 -0
- {conan-2.12.2/conan/internal/api/detect → conan-2.14.0/conan/internal/api/audit}/__init__.py +0 -0
- {conan-2.12.2/conan/internal/api/install → conan-2.14.0/conan/internal/api/config}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/config/config_installer.py +0 -0
- {conan-2.12.2/conan/internal/api/list → conan-2.14.0/conan/internal/api/detect}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/detect/detect_api.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/detect/detect_vs.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/export.py +0 -0
- {conan-2.12.2/conan/internal/api/local → conan-2.14.0/conan/internal/api/install}/__init__.py +0 -0
- {conan-2.12.2/conan/internal/api/new → conan-2.14.0/conan/internal/api/list}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/list/query_parse.py +0 -0
- {conan-2.12.2/conan/internal/api/profile → conan-2.14.0/conan/internal/api/local}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/local/editable.py +0 -0
- {conan-2.12.2/conan/internal/api/remotes → conan-2.14.0/conan/internal/api/new}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/alias_new.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/autoools_exe.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/autotools_lib.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/basic.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/bazel_7_exe.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/bazel_7_lib.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/bazel_exe.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/bazel_lib.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/cmake_exe.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/local_recipes_index.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/meson_exe.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/meson_lib.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/msbuild_exe.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/msbuild_lib.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/new/qbs_lib.py +0 -0
- {conan-2.12.2/conan/internal/cache → conan-2.14.0/conan/internal/api/profile}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/profile/detect.py +0 -0
- {conan-2.12.2/conan/internal/cache/db → conan-2.14.0/conan/internal/api/remotes}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/remotes/encrypt.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/remotes/localdb.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/api/uploader.py +0 -0
- {conan-2.12.2/conan/internal/model → conan-2.14.0/conan/internal/cache}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/cache.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/conan_reference_layout.py +0 -0
- {conan-2.12.2/conan/test → conan-2.14.0/conan/internal/cache/db}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/db/cache_database.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/db/packages_table.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/db/recipes_table.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/db/table.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/home_paths.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/cache/integrity_check.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/errors.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/internal_tools.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/methods.py +0 -0
- {conan-2.12.2/conan/test/utils → conan-2.14.0/conan/internal/model}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/conan_file.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/dependencies.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/info.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/layout.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/lockfile.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/manifest.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/options.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/pkg_type.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/profile.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/recipe_ref.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/settings.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/model/version_range.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/paths.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/runner/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/runner/ssh.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/internal/runner/wsl.py +0 -0
- {conan-2.12.2/conan/tools/cmake/cmakedeps2 → conan-2.14.0/conan/test}/__init__.py +0 -0
- {conan-2.12.2/conan/tools/system → conan-2.14.0/conan/test/assets}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/assets/autotools.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/assets/cmake.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/assets/genconanfile.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/assets/sources.py +0 -0
- {conan-2.12.2/conans → conan-2.14.0/conan/test/utils}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/utils/artifactory.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/utils/env.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/utils/scm.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/utils/server_launcher.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/test/utils/test_files.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/android/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/android/utils.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/apple/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/apple/apple.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/apple/xcodebuild.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/apple/xcodedeps.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/apple/xcodetoolchain.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/build/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/build/cppstd.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/build/cpu.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/build/cross_building.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/build/cstd.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/build/flags.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/build/stdcpp_library.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/config_version.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/macros.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/target_data.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps/templates/targets.py +0 -0
- {conan-2.12.2/conans/client → conan-2.14.0/conan/tools/cmake/cmakedeps2}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps2/config.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps2/config_version.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/cmakedeps2/targets.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/layout.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/presets.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/toolchain/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/toolchain/blocks.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/toolchain/toolchain.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cmake/utils.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/cps/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/env/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/env/virtualbuildenv.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/env/virtualrunenv.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/files/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/files/conandata.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/files/copy_pattern.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/files/packager.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/files/patches.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/files/symlinks/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/files/symlinks/symlinks.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/autotools.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/autotoolsdeps.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/get_gnu_triplet.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/gnudeps_flags.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/makedeps.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/pkgconfig.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/gnu/pkgconfigdeps.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/google/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/google/bazel.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/google/bazeldeps.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/google/layout.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/google/toolchain.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/intel/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/intel/intel_cc.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/layout/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/meson/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/meson/helpers.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/meson/meson.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/meson/toolchain.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/layout.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/msbuild.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/nmakedeps.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/nmaketoolchain.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/subsystems.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/microsoft/toolchain.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/premake/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/premake/premakedeps.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/qbs/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/qbs/common.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/qbs/qbs.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/qbs/qbsdeps.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/ros/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/ros/rosenv.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/sbom/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/scm/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/scons/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/scons/sconsdeps.py +0 -0
- {conan-2.12.2/conans/client/downloaders → conan-2.14.0/conan/tools/system}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan/tools/system/package_manager.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan.egg-info/dependency_links.txt +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan.egg-info/entry_points.txt +0 -0
- {conan-2.12.2 → conan-2.14.0}/conan.egg-info/top_level.txt +0 -0
- {conan-2.12.2/conans/client/graph → conan-2.14.0/conans}/__init__.py +0 -0
- {conan-2.12.2/conans/model → conan-2.14.0/conans/client}/__init__.py +0 -0
- {conan-2.12.2/conans/util → conan-2.14.0/conans/client/downloaders}/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/downloaders/caching_file_downloader.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/downloaders/download_cache.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/downloaders/file_downloader.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/build_mode.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/graph.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/provides.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/python_requires.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/graph/range_resolver.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/loader.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/loader_txt.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/migrations.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/pkg_sign.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/remote_manager.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/rest/__init__.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/rest/auth_manager.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/rest/client_routes.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/rest/conan_requester.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/rest/remote_credentials.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/rest/rest_client.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/source.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/client/subsystems.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/conan.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/conan_server.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/migrations.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/model/package_ref.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/model/recipe_ref.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/requirements_runner.txt +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/requirements_server.txt +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/util/config_parser.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/util/dates.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/util/files.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/util/locks.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/util/runners.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/conans/util/thread.py +0 -0
- {conan-2.12.2 → conan-2.14.0}/pyproject.toml +0 -0
- {conan-2.12.2 → conan-2.14.0}/setup.py +0 -0
|
@@ -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
|
|
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(
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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("+", "_")
|
|
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:
|