conan-server 2.28.0__py3-none-any.whl
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/__init__.py +6 -0
- conan/api/__init__.py +0 -0
- conan/api/conan_api.py +227 -0
- conan/api/input.py +95 -0
- conan/api/model/__init__.py +3 -0
- conan/api/model/list.py +451 -0
- conan/api/model/refs.py +304 -0
- conan/api/model/remote.py +59 -0
- conan/api/output.py +418 -0
- conan/api/subapi/__init__.py +0 -0
- conan/api/subapi/audit.py +169 -0
- conan/api/subapi/cache.py +513 -0
- conan/api/subapi/command.py +77 -0
- conan/api/subapi/config.py +338 -0
- conan/api/subapi/download.py +111 -0
- conan/api/subapi/export.py +152 -0
- conan/api/subapi/graph.py +257 -0
- conan/api/subapi/install.py +159 -0
- conan/api/subapi/list.py +563 -0
- conan/api/subapi/local.py +187 -0
- conan/api/subapi/lockfile.py +131 -0
- conan/api/subapi/new.py +229 -0
- conan/api/subapi/profiles.py +189 -0
- conan/api/subapi/remotes.py +377 -0
- conan/api/subapi/remove.py +51 -0
- conan/api/subapi/report.py +154 -0
- conan/api/subapi/upload.py +190 -0
- conan/api/subapi/workspace.py +451 -0
- conan/cli/__init__.py +14 -0
- conan/cli/args.py +156 -0
- conan/cli/cli.py +312 -0
- conan/cli/command.py +252 -0
- conan/cli/commands/__init__.py +0 -0
- conan/cli/commands/audit.py +241 -0
- conan/cli/commands/build.py +81 -0
- conan/cli/commands/cache.py +345 -0
- conan/cli/commands/config.py +170 -0
- conan/cli/commands/create.py +191 -0
- conan/cli/commands/download.py +64 -0
- conan/cli/commands/editable.py +87 -0
- conan/cli/commands/export.py +76 -0
- conan/cli/commands/export_pkg.py +90 -0
- conan/cli/commands/graph.py +384 -0
- conan/cli/commands/inspect.py +54 -0
- conan/cli/commands/install.py +108 -0
- conan/cli/commands/list.py +303 -0
- conan/cli/commands/lock.py +273 -0
- conan/cli/commands/new.py +28 -0
- conan/cli/commands/pkglist.py +63 -0
- conan/cli/commands/profile.py +115 -0
- conan/cli/commands/remote.py +326 -0
- conan/cli/commands/remove.py +123 -0
- conan/cli/commands/report.py +60 -0
- conan/cli/commands/require.py +130 -0
- conan/cli/commands/run.py +55 -0
- conan/cli/commands/search.py +40 -0
- conan/cli/commands/source.py +23 -0
- conan/cli/commands/test.py +80 -0
- conan/cli/commands/upload.py +141 -0
- conan/cli/commands/version.py +34 -0
- conan/cli/commands/workspace.py +422 -0
- conan/cli/exit_codes.py +9 -0
- conan/cli/formatters/__init__.py +8 -0
- conan/cli/formatters/audit/__init__.py +0 -0
- conan/cli/formatters/audit/vulnerabilities.py +401 -0
- conan/cli/formatters/graph/__init__.py +3 -0
- conan/cli/formatters/graph/build_order_html.py +274 -0
- conan/cli/formatters/graph/graph.py +53 -0
- conan/cli/formatters/graph/graph_info_text.py +60 -0
- conan/cli/formatters/graph/info_graph_dot.py +13 -0
- conan/cli/formatters/graph/info_graph_html.py +536 -0
- conan/cli/formatters/list/__init__.py +1 -0
- conan/cli/formatters/list/list.py +24 -0
- conan/cli/formatters/list/search_table_html.py +313 -0
- conan/cli/formatters/report/__init__.py +1 -0
- conan/cli/formatters/report/diff.py +161 -0
- conan/cli/formatters/report/diff_html.py +1041 -0
- conan/cli/printers/__init__.py +10 -0
- conan/cli/printers/graph.py +182 -0
- conan/cps/__init__.py +1 -0
- conan/cps/cps.py +307 -0
- conan/errors.py +22 -0
- conan/internal/__init__.py +11 -0
- conan/internal/api/__init__.py +0 -0
- conan/internal/api/audit/__init__.py +0 -0
- conan/internal/api/audit/providers.py +235 -0
- conan/internal/api/config/__init__.py +0 -0
- conan/internal/api/config/config_installer.py +233 -0
- conan/internal/api/detect/__init__.py +0 -0
- conan/internal/api/detect/detect_api.py +662 -0
- conan/internal/api/detect/detect_vs.py +134 -0
- conan/internal/api/export.py +212 -0
- conan/internal/api/install/__init__.py +0 -0
- conan/internal/api/install/generators.py +191 -0
- conan/internal/api/list/__init__.py +0 -0
- conan/internal/api/list/query_parse.py +165 -0
- conan/internal/api/local/__init__.py +0 -0
- conan/internal/api/local/editable.py +76 -0
- conan/internal/api/migrations.py +151 -0
- conan/internal/api/new/__init__.py +0 -0
- conan/internal/api/new/alias_new.py +12 -0
- conan/internal/api/new/autoools_exe.py +104 -0
- conan/internal/api/new/autotools_lib.py +141 -0
- conan/internal/api/new/basic.py +117 -0
- conan/internal/api/new/bazel_7_exe.py +73 -0
- conan/internal/api/new/bazel_7_lib.py +150 -0
- conan/internal/api/new/bazel_exe.py +76 -0
- conan/internal/api/new/bazel_lib.py +154 -0
- conan/internal/api/new/cmake_exe.py +104 -0
- conan/internal/api/new/cmake_lib.py +295 -0
- conan/internal/api/new/header_lib.py +116 -0
- conan/internal/api/new/local_recipes_index.py +113 -0
- conan/internal/api/new/meson_exe.py +83 -0
- conan/internal/api/new/meson_lib.py +114 -0
- conan/internal/api/new/msbuild_exe.py +84 -0
- conan/internal/api/new/msbuild_lib.py +291 -0
- conan/internal/api/new/premake_exe.py +104 -0
- conan/internal/api/new/premake_lib.py +148 -0
- conan/internal/api/new/qbs_lib.py +102 -0
- conan/internal/api/new/workspace.py +99 -0
- conan/internal/api/profile/__init__.py +0 -0
- conan/internal/api/profile/detect.py +38 -0
- conan/internal/api/profile/profile_loader.py +442 -0
- conan/internal/api/remotes/__init__.py +0 -0
- conan/internal/api/remotes/encrypt.py +39 -0
- conan/internal/api/remotes/localdb.py +106 -0
- conan/internal/api/upload.py +18 -0
- conan/internal/api/uploader.py +391 -0
- conan/internal/cache/__init__.py +0 -0
- conan/internal/cache/cache.py +322 -0
- conan/internal/cache/conan_reference_layout.py +143 -0
- conan/internal/cache/db/__init__.py +0 -0
- conan/internal/cache/db/cache_database.py +102 -0
- conan/internal/cache/db/packages_table.py +243 -0
- conan/internal/cache/db/recipes_table.py +132 -0
- conan/internal/cache/db/table.py +67 -0
- conan/internal/cache/home_paths.py +85 -0
- conan/internal/cache/integrity_check.py +79 -0
- conan/internal/conan_app.py +56 -0
- conan/internal/default_settings.py +195 -0
- conan/internal/deploy.py +228 -0
- conan/internal/errors.py +151 -0
- conan/internal/graph/__init__.py +0 -0
- conan/internal/graph/build_mode.py +133 -0
- conan/internal/graph/compatibility.py +178 -0
- conan/internal/graph/compute_pid.py +118 -0
- conan/internal/graph/graph.py +452 -0
- conan/internal/graph/graph_binaries.py +579 -0
- conan/internal/graph/graph_builder.py +489 -0
- conan/internal/graph/graph_error.py +95 -0
- conan/internal/graph/install_graph.py +611 -0
- conan/internal/graph/installer.py +486 -0
- conan/internal/graph/profile_node_definer.py +113 -0
- conan/internal/graph/provides.py +40 -0
- conan/internal/graph/proxy.py +186 -0
- conan/internal/graph/python_requires.py +141 -0
- conan/internal/graph/range_resolver.py +113 -0
- conan/internal/hook_manager.py +72 -0
- conan/internal/internal_tools.py +25 -0
- conan/internal/loader.py +457 -0
- conan/internal/methods.py +167 -0
- conan/internal/model/__init__.py +0 -0
- conan/internal/model/conan_file.py +422 -0
- conan/internal/model/conanconfig.py +44 -0
- conan/internal/model/conanfile_interface.py +163 -0
- conan/internal/model/conf.py +812 -0
- conan/internal/model/cpp_info.py +923 -0
- conan/internal/model/dependencies.py +191 -0
- conan/internal/model/info.py +487 -0
- conan/internal/model/layout.py +174 -0
- conan/internal/model/lockfile.py +385 -0
- conan/internal/model/manifest.py +133 -0
- conan/internal/model/options.py +424 -0
- conan/internal/model/pkg_type.py +68 -0
- conan/internal/model/profile.py +198 -0
- conan/internal/model/recipe_ref.py +8 -0
- conan/internal/model/requires.py +627 -0
- conan/internal/model/settings.py +406 -0
- conan/internal/model/version.py +201 -0
- conan/internal/model/version_range.py +269 -0
- conan/internal/model/workspace.py +135 -0
- conan/internal/paths.py +93 -0
- conan/internal/rest/__init__.py +27 -0
- conan/internal/rest/auth_manager.py +107 -0
- conan/internal/rest/caching_file_downloader.py +170 -0
- conan/internal/rest/client_routes.py +155 -0
- conan/internal/rest/conan_requester.py +205 -0
- conan/internal/rest/download_cache.py +145 -0
- conan/internal/rest/file_downloader.py +145 -0
- conan/internal/rest/file_uploader.py +115 -0
- conan/internal/rest/pkg_sign.py +155 -0
- conan/internal/rest/remote_credentials.py +88 -0
- conan/internal/rest/remote_manager.py +367 -0
- conan/internal/rest/rest_client.py +99 -0
- conan/internal/rest/rest_client_local_recipe_index.py +271 -0
- conan/internal/rest/rest_client_v2.py +457 -0
- conan/internal/rest/rest_routes.py +69 -0
- conan/internal/runner/__init__.py +6 -0
- conan/internal/runner/docker.py +334 -0
- conan/internal/runner/output.py +13 -0
- conan/internal/runner/ssh.py +278 -0
- conan/internal/runner/wsl.py +143 -0
- conan/internal/source.py +75 -0
- conan/internal/subsystems.py +218 -0
- conan/internal/util/__init__.py +31 -0
- conan/internal/util/config_parser.py +52 -0
- conan/internal/util/dates.py +36 -0
- conan/internal/util/files.py +330 -0
- conan/internal/util/runners.py +105 -0
- conan/test/__init__.py +0 -0
- conan/test/assets/__init__.py +0 -0
- conan/test/assets/autotools.py +68 -0
- conan/test/assets/cmake.py +107 -0
- conan/test/assets/genconanfile.py +509 -0
- conan/test/assets/premake.py +45 -0
- conan/test/assets/sources.py +265 -0
- conan/test/assets/visual_project_files.py +251 -0
- conan/test/utils/__init__.py +0 -0
- conan/test/utils/artifactory.py +127 -0
- conan/test/utils/env.py +17 -0
- conan/test/utils/file_server.py +77 -0
- conan/test/utils/mocks.py +114 -0
- conan/test/utils/profiles.py +18 -0
- conan/test/utils/scm.py +66 -0
- conan/test/utils/server_launcher.py +109 -0
- conan/test/utils/test_files.py +97 -0
- conan/test/utils/tools.py +857 -0
- conan/tools/__init__.py +8 -0
- conan/tools/android/__init__.py +1 -0
- conan/tools/android/utils.py +35 -0
- conan/tools/apple/__init__.py +8 -0
- conan/tools/apple/apple.py +376 -0
- conan/tools/apple/xcodebuild.py +59 -0
- conan/tools/apple/xcodedeps.py +357 -0
- conan/tools/apple/xcodetoolchain.py +130 -0
- conan/tools/build/__init__.py +109 -0
- conan/tools/build/compiler.py +44 -0
- conan/tools/build/cppstd.py +286 -0
- conan/tools/build/cpu.py +21 -0
- conan/tools/build/cross_building.py +50 -0
- conan/tools/build/cstd.py +211 -0
- conan/tools/build/flags.py +624 -0
- conan/tools/build/stdcpp_library.py +16 -0
- conan/tools/cmake/__init__.py +17 -0
- conan/tools/cmake/cmake.py +358 -0
- conan/tools/cmake/cmakeconfigdeps/__init__.py +0 -0
- conan/tools/cmake/cmakeconfigdeps/cmakeconfigdeps.py +413 -0
- conan/tools/cmake/cmakeconfigdeps/config.py +176 -0
- conan/tools/cmake/cmakeconfigdeps/config_version.py +102 -0
- conan/tools/cmake/cmakeconfigdeps/target_configuration.py +512 -0
- conan/tools/cmake/cmakeconfigdeps/targets.py +48 -0
- conan/tools/cmake/cmakedeps/__init__.py +4 -0
- conan/tools/cmake/cmakedeps/cmakedeps.py +228 -0
- conan/tools/cmake/cmakedeps/templates/__init__.py +101 -0
- conan/tools/cmake/cmakedeps/templates/config.py +147 -0
- conan/tools/cmake/cmakedeps/templates/config_version.py +96 -0
- conan/tools/cmake/cmakedeps/templates/macros.py +130 -0
- conan/tools/cmake/cmakedeps/templates/target_configuration.py +235 -0
- conan/tools/cmake/cmakedeps/templates/target_data.py +362 -0
- conan/tools/cmake/cmakedeps/templates/targets.py +106 -0
- conan/tools/cmake/layout.py +111 -0
- conan/tools/cmake/presets.py +407 -0
- conan/tools/cmake/toolchain/__init__.py +2 -0
- conan/tools/cmake/toolchain/blocks.py +1450 -0
- conan/tools/cmake/toolchain/toolchain.py +275 -0
- conan/tools/cmake/utils.py +45 -0
- conan/tools/cps/__init__.py +1 -0
- conan/tools/cps/cps_deps.py +53 -0
- conan/tools/env/__init__.py +3 -0
- conan/tools/env/environment.py +965 -0
- conan/tools/env/virtualbuildenv.py +94 -0
- conan/tools/env/virtualrunenv.py +100 -0
- conan/tools/files/__init__.py +8 -0
- conan/tools/files/conandata.py +77 -0
- conan/tools/files/copy_pattern.py +166 -0
- conan/tools/files/files.py +641 -0
- conan/tools/files/patches.py +183 -0
- conan/tools/files/symlinks/__init__.py +2 -0
- conan/tools/files/symlinks/symlinks.py +65 -0
- conan/tools/gnu/__init__.py +7 -0
- conan/tools/gnu/autotools.py +143 -0
- conan/tools/gnu/autotoolsdeps.py +84 -0
- conan/tools/gnu/autotoolstoolchain.py +435 -0
- conan/tools/gnu/get_gnu_triplet.py +113 -0
- conan/tools/gnu/gnudeps_flags.py +96 -0
- conan/tools/gnu/gnutoolchain.py +401 -0
- conan/tools/gnu/makedeps.py +687 -0
- conan/tools/gnu/pkgconfig.py +116 -0
- conan/tools/gnu/pkgconfigdeps.py +401 -0
- conan/tools/google/__init__.py +4 -0
- conan/tools/google/bazel.py +82 -0
- conan/tools/google/bazeldeps.py +570 -0
- conan/tools/google/layout.py +20 -0
- conan/tools/google/toolchain.py +168 -0
- conan/tools/intel/__init__.py +1 -0
- conan/tools/intel/intel_cc.py +152 -0
- conan/tools/layout/__init__.py +19 -0
- conan/tools/meson/__init__.py +3 -0
- conan/tools/meson/helpers.py +139 -0
- conan/tools/meson/meson.py +152 -0
- conan/tools/meson/toolchain.py +626 -0
- conan/tools/microsoft/__init__.py +9 -0
- conan/tools/microsoft/layout.py +38 -0
- conan/tools/microsoft/msbuild.py +85 -0
- conan/tools/microsoft/msbuilddeps.py +399 -0
- conan/tools/microsoft/nmakedeps.py +88 -0
- conan/tools/microsoft/nmaketoolchain.py +117 -0
- conan/tools/microsoft/subsystems.py +14 -0
- conan/tools/microsoft/toolchain.py +259 -0
- conan/tools/microsoft/visual.py +417 -0
- conan/tools/premake/__init__.py +3 -0
- conan/tools/premake/constants.py +33 -0
- conan/tools/premake/premake.py +128 -0
- conan/tools/premake/premakedeps.py +301 -0
- conan/tools/premake/toolchain.py +304 -0
- conan/tools/qbs/__init__.py +3 -0
- conan/tools/qbs/common.py +88 -0
- conan/tools/qbs/qbs.py +164 -0
- conan/tools/qbs/qbsdeps.py +199 -0
- conan/tools/qbs/qbsprofile.py +314 -0
- conan/tools/ros/__init__.py +1 -0
- conan/tools/ros/rosenv.py +78 -0
- conan/tools/sbom/__init__.py +1 -0
- conan/tools/sbom/cyclonedx.py +221 -0
- conan/tools/sbom/spdx_licenses.py +1367 -0
- conan/tools/scm/__init__.py +2 -0
- conan/tools/scm/git.py +295 -0
- conan/tools/scons/__init__.py +1 -0
- conan/tools/scons/sconsdeps.py +61 -0
- conan/tools/system/__init__.py +1 -0
- conan/tools/system/package_manager.py +439 -0
- conan/tools/system/python_manager.py +187 -0
- conan_server-2.28.0.dist-info/LICENSE.md +28 -0
- conan_server-2.28.0.dist-info/METADATA +218 -0
- conan_server-2.28.0.dist-info/RECORD +386 -0
- conan_server-2.28.0.dist-info/WHEEL +5 -0
- conan_server-2.28.0.dist-info/entry_points.txt +2 -0
- conan_server-2.28.0.dist-info/top_level.txt +2 -0
- conans/__init__.py +0 -0
- conans/conan.py +12 -0
- conans/conan_server.py +20 -0
- conans/requirements.txt +9 -0
- conans/requirements_dev.txt +9 -0
- conans/requirements_runner.txt +2 -0
- conans/requirements_server.txt +4 -0
- conans/server/__init__.py +5 -0
- conans/server/conf/__init__.py +250 -0
- conans/server/conf/default_server_conf.py +73 -0
- conans/server/crypto/__init__.py +0 -0
- conans/server/crypto/jwt/__init__.py +0 -0
- conans/server/crypto/jwt/jwt_credentials_manager.py +26 -0
- conans/server/launcher.py +65 -0
- conans/server/migrate.py +15 -0
- conans/server/migrations.py +9 -0
- conans/server/plugin_loader.py +26 -0
- conans/server/rest/__init__.py +0 -0
- conans/server/rest/api_v2.py +45 -0
- conans/server/rest/bottle_plugins/__init__.py +0 -0
- conans/server/rest/bottle_plugins/authorization_header.py +74 -0
- conans/server/rest/bottle_plugins/http_basic_authentication.py +43 -0
- conans/server/rest/bottle_plugins/jwt_authentication.py +42 -0
- conans/server/rest/bottle_plugins/return_handler.py +50 -0
- conans/server/rest/bottle_routes.py +11 -0
- conans/server/rest/controller/__init__.py +0 -0
- conans/server/rest/controller/v2/__init__.py +7 -0
- conans/server/rest/controller/v2/conan.py +62 -0
- conans/server/rest/controller/v2/delete.py +46 -0
- conans/server/rest/controller/v2/ping.py +18 -0
- conans/server/rest/controller/v2/revisions.py +71 -0
- conans/server/rest/controller/v2/search.py +37 -0
- conans/server/rest/controller/v2/users.py +38 -0
- conans/server/rest/server.py +52 -0
- conans/server/revision_list.py +67 -0
- conans/server/server_launcher.py +15 -0
- conans/server/service/__init__.py +0 -0
- conans/server/service/authorize.py +211 -0
- conans/server/service/mime.py +9 -0
- conans/server/service/user_service.py +18 -0
- conans/server/service/v2/__init__.py +0 -0
- conans/server/service/v2/search.py +116 -0
- conans/server/service/v2/service_v2.py +146 -0
- conans/server/store/__init__.py +0 -0
- conans/server/store/disk_adapter.py +45 -0
- conans/server/store/server_store.py +248 -0
- conans/server/utils/__init__.py +0 -0
- conans/server/utils/files.py +46 -0
conan/__init__.py
ADDED
conan/api/__init__.py
ADDED
|
File without changes
|
conan/api/conan_api.py
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
from conan.api.output import init_colorama
|
|
5
|
+
from conan.api.subapi.audit import AuditAPI
|
|
6
|
+
from conan.api.subapi.cache import CacheAPI
|
|
7
|
+
from conan.api.subapi.command import CommandAPI
|
|
8
|
+
from conan.api.subapi.local import LocalAPI
|
|
9
|
+
from conan.api.subapi.lockfile import LockfileAPI
|
|
10
|
+
from conan.api.subapi.report import ReportAPI
|
|
11
|
+
from conan.api.subapi.workspace import WorkspaceAPI
|
|
12
|
+
from conan.api.subapi.config import ConfigAPI
|
|
13
|
+
from conan.api.subapi.download import DownloadAPI
|
|
14
|
+
from conan.api.subapi.export import ExportAPI
|
|
15
|
+
from conan.api.subapi.install import InstallAPI
|
|
16
|
+
from conan.api.subapi.graph import GraphAPI
|
|
17
|
+
from conan.api.subapi.new import NewAPI
|
|
18
|
+
from conan.api.subapi.profiles import ProfilesAPI
|
|
19
|
+
from conan.api.subapi.list import ListAPI
|
|
20
|
+
from conan.api.subapi.remotes import RemotesAPI
|
|
21
|
+
from conan.api.subapi.remove import RemoveAPI
|
|
22
|
+
from conan.api.subapi.upload import UploadAPI
|
|
23
|
+
from conan.errors import ConanException
|
|
24
|
+
from conan.internal.api.remotes.localdb import LocalDB
|
|
25
|
+
from conan.internal.cache.cache import PkgCache
|
|
26
|
+
from conan.internal.cache.home_paths import HomePaths
|
|
27
|
+
from conan.internal.conan_app import ConanFileHelpers, CmdWrapper
|
|
28
|
+
from conan.internal.graph.proxy import ConanProxy
|
|
29
|
+
from conan.internal.graph.python_requires import PyRequireLoader
|
|
30
|
+
from conan.internal.graph.range_resolver import RangeResolver
|
|
31
|
+
from conan.internal.hook_manager import HookManager
|
|
32
|
+
from conan.internal.loader import ConanFileLoader, load_python_file
|
|
33
|
+
from conan.internal.model.conf import load_global_conf, ConfDefinition, CORE_CONF_PATTERN
|
|
34
|
+
from conan.internal.model.settings import load_settings_yml
|
|
35
|
+
from conan.internal.paths import get_conan_user_home
|
|
36
|
+
from conan.internal.api.local.editable import EditablePackages
|
|
37
|
+
from conan.internal.api.migrations import ClientMigrator
|
|
38
|
+
from conan.internal.model.version_range import validate_conan_version
|
|
39
|
+
from conan.internal.rest.auth_manager import ConanApiAuthManager
|
|
40
|
+
from conan.internal.rest.conan_requester import ConanRequester
|
|
41
|
+
from conan.internal.rest.remote_manager import RemoteManager
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class ConanAPI:
|
|
45
|
+
"""
|
|
46
|
+
This is the main object to interact with the Conan API. It provides all the subapis to work with
|
|
47
|
+
recipes, packages, remotes, etc., which are exposed as attributes of this class, and should
|
|
48
|
+
not be created directly.
|
|
49
|
+
"""
|
|
50
|
+
def __init__(self, cache_folder=None):
|
|
51
|
+
"""
|
|
52
|
+
:param cache_folder: Conan cache/home folder. It will have less priority than the
|
|
53
|
+
``"home_folder"`` defined in a Workspace.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
version = sys.version_info
|
|
57
|
+
if version.major == 2 or version.minor < 7:
|
|
58
|
+
raise ConanException("Conan needs Python >= 3.7")
|
|
59
|
+
if cache_folder is not None and not os.path.isabs(cache_folder):
|
|
60
|
+
raise ConanException("cache_folder has to be an absolute path")
|
|
61
|
+
|
|
62
|
+
init_colorama(sys.stderr)
|
|
63
|
+
# Deprecated, but still used internally, prefer home_folder
|
|
64
|
+
self.cache_folder = cache_folder or get_conan_user_home()
|
|
65
|
+
self._home_folder = self.cache_folder
|
|
66
|
+
self._api_helpers = self._ApiHelpers(self)
|
|
67
|
+
self.migrate()
|
|
68
|
+
|
|
69
|
+
#: Used to interact with the local Conan configuration
|
|
70
|
+
self.config: ConfigAPI = ConfigAPI(self, self._api_helpers)
|
|
71
|
+
#: Used to interact with remotes
|
|
72
|
+
self.remotes: RemotesAPI = RemotesAPI(self, self._api_helpers)
|
|
73
|
+
#: Used to call other commands
|
|
74
|
+
self.command: CommandAPI = CommandAPI(self)
|
|
75
|
+
#: Used to get latest refs and list refs of recipes and packages
|
|
76
|
+
self.list: ListAPI = ListAPI(self, self._api_helpers)
|
|
77
|
+
#: Used to process and load Conan profiles
|
|
78
|
+
self.profiles: ProfilesAPI = ProfilesAPI(self, self._api_helpers)
|
|
79
|
+
#: Used to install binaries, sources, deploy packages and more
|
|
80
|
+
self.install: InstallAPI = InstallAPI(self, self._api_helpers)
|
|
81
|
+
self.graph = GraphAPI(self, self._api_helpers)
|
|
82
|
+
#: Used to export recipes and pre-compiled package binaries to the Conan cache
|
|
83
|
+
self.export: ExportAPI = ExportAPI(self, self._api_helpers)
|
|
84
|
+
self.remove = RemoveAPI(self, self._api_helpers)
|
|
85
|
+
self.new = NewAPI(self)
|
|
86
|
+
#: Used to upload recipes and packages to remotes
|
|
87
|
+
self.upload: UploadAPI = UploadAPI(self, self._api_helpers)
|
|
88
|
+
#: Used to download recipes and packages from remotes
|
|
89
|
+
self.download: DownloadAPI = DownloadAPI(self, self._api_helpers)
|
|
90
|
+
#: Used to interact wit the packages storage cache
|
|
91
|
+
self.cache: CacheAPI = CacheAPI(self, self._api_helpers)
|
|
92
|
+
#: Used to read and manage lockfile files
|
|
93
|
+
self.lockfile: LockfileAPI = LockfileAPI(self)
|
|
94
|
+
#: Local flow helpers for developer "source", "build", "editable" commands
|
|
95
|
+
self.local: LocalAPI = LocalAPI(self, self._api_helpers)
|
|
96
|
+
#: Used to check vulnerabilities of dependencies
|
|
97
|
+
self.audit: AuditAPI = AuditAPI(self)
|
|
98
|
+
#: Used to manage workspaces
|
|
99
|
+
self.workspace: WorkspaceAPI = WorkspaceAPI(self)
|
|
100
|
+
self.report: ReportAPI = ReportAPI(self, self._api_helpers)
|
|
101
|
+
|
|
102
|
+
@property
|
|
103
|
+
def home_folder(self) -> str:
|
|
104
|
+
""" Where the Conan user home is located. Read only.
|
|
105
|
+
Can be modified by the ``CONAN_HOME`` environment variable or by the
|
|
106
|
+
``.conanrc`` file in the current directory or any parent directory
|
|
107
|
+
when Conan is called.
|
|
108
|
+
"""
|
|
109
|
+
return self._home_folder
|
|
110
|
+
|
|
111
|
+
def reinit(self):
|
|
112
|
+
"""
|
|
113
|
+
Reinitialize the Conan API. This is useful when the configuration changes.
|
|
114
|
+
"""
|
|
115
|
+
self._api_helpers.reinit()
|
|
116
|
+
|
|
117
|
+
def migrate(self):
|
|
118
|
+
# Migration system
|
|
119
|
+
# TODO: A prettier refactoring of migrators would be nice
|
|
120
|
+
from conan import conan_version
|
|
121
|
+
migrator = ClientMigrator(self._home_folder, conan_version)
|
|
122
|
+
migrator.migrate()
|
|
123
|
+
|
|
124
|
+
class _ApiHelpers:
|
|
125
|
+
# This is an internal implementation detail of Conan, DO NOT USE
|
|
126
|
+
def __init__(self, conan_api):
|
|
127
|
+
self._conan_api = conan_api
|
|
128
|
+
self._cli_core_confs = None
|
|
129
|
+
self._init_global_conf()
|
|
130
|
+
# TODO: Make uniform lazy vs non lazy collaborators
|
|
131
|
+
self.hook_manager = HookManager(HomePaths(self._conan_api.home_folder).hooks_path)
|
|
132
|
+
self._editable_packages = EditablePackages(self._conan_api.home_folder)
|
|
133
|
+
# Wraps an http_requester to inject proxies, certs, etc
|
|
134
|
+
self._requester = ConanRequester(self.global_conf, self._conan_api.home_folder)
|
|
135
|
+
self.cache = PkgCache(self._conan_api.home_folder, self.global_conf)
|
|
136
|
+
self._settings_yml = None
|
|
137
|
+
self._remote_manager = None
|
|
138
|
+
|
|
139
|
+
def set_core_confs(self, core_confs):
|
|
140
|
+
confs = ConfDefinition()
|
|
141
|
+
for c in core_confs:
|
|
142
|
+
if not CORE_CONF_PATTERN.match(c):
|
|
143
|
+
raise ConanException(f"Only core. values are allowed in --core-conf. Got {c}")
|
|
144
|
+
confs.loads("\n".join(core_confs))
|
|
145
|
+
confs.validate()
|
|
146
|
+
self._cli_core_confs = confs
|
|
147
|
+
# Last but not least, apply the new configuration
|
|
148
|
+
# This will in turn call ApiHelpers.reinit() as the very first thing
|
|
149
|
+
self._conan_api.reinit()
|
|
150
|
+
|
|
151
|
+
def _init_global_conf(self):
|
|
152
|
+
self.global_conf = load_global_conf(self._conan_api.home_folder)
|
|
153
|
+
if self._cli_core_confs:
|
|
154
|
+
self.global_conf.update_conf_definition(self._cli_core_confs)
|
|
155
|
+
required_range_new = self.global_conf.get("core:required_conan_version")
|
|
156
|
+
if required_range_new:
|
|
157
|
+
validate_conan_version(required_range_new)
|
|
158
|
+
self.global_conf.validate()
|
|
159
|
+
|
|
160
|
+
def reinit(self):
|
|
161
|
+
self._init_global_conf()
|
|
162
|
+
self.hook_manager.reinit()
|
|
163
|
+
self._requester = ConanRequester(self.global_conf, self._conan_api.home_folder)
|
|
164
|
+
self._settings_yml = None
|
|
165
|
+
self.cache = PkgCache(self._conan_api.home_folder, self.global_conf)
|
|
166
|
+
self._remote_manager = None
|
|
167
|
+
self._editable_packages = EditablePackages(self._conan_api.home_folder)
|
|
168
|
+
|
|
169
|
+
@property
|
|
170
|
+
def settings_yml(self):
|
|
171
|
+
if self._settings_yml is None:
|
|
172
|
+
self._settings_yml = load_settings_yml(self._conan_api.home_folder)
|
|
173
|
+
return self._settings_yml
|
|
174
|
+
|
|
175
|
+
@property
|
|
176
|
+
def remote_manager(self):
|
|
177
|
+
if self._remote_manager is None:
|
|
178
|
+
home_folder = self._conan_api.home_folder
|
|
179
|
+
localdb = LocalDB(home_folder)
|
|
180
|
+
requester = self._conan_api._api_helpers.requester # noqa
|
|
181
|
+
auth_manager = ConanApiAuthManager(requester, self._conan_api.home_folder, localdb,
|
|
182
|
+
self.global_conf)
|
|
183
|
+
self._remote_manager = RemoteManager(self.cache, auth_manager, home_folder)
|
|
184
|
+
return self._remote_manager
|
|
185
|
+
|
|
186
|
+
@property
|
|
187
|
+
def requester(self):
|
|
188
|
+
return self._requester
|
|
189
|
+
|
|
190
|
+
@property
|
|
191
|
+
def editable_packages(self):
|
|
192
|
+
# These are just the global editables, not including workspace ones
|
|
193
|
+
return self._editable_packages
|
|
194
|
+
|
|
195
|
+
@property
|
|
196
|
+
def loader(self):
|
|
197
|
+
_, _, load, _ = self.get_loader()
|
|
198
|
+
return load
|
|
199
|
+
|
|
200
|
+
def _flags_plugin(self):
|
|
201
|
+
plugin_path = os.path.join(self._conan_api.home_folder, "extensions", "plugins",
|
|
202
|
+
"compiler_flags.py")
|
|
203
|
+
if os.path.isfile(plugin_path):
|
|
204
|
+
mod, _ = load_python_file(plugin_path)
|
|
205
|
+
return mod.flags_map
|
|
206
|
+
return None
|
|
207
|
+
|
|
208
|
+
def get_loader(self):
|
|
209
|
+
ws_editables = self._conan_api.workspace.packages()
|
|
210
|
+
editable_packages = self._editable_packages.update_copy(ws_editables)
|
|
211
|
+
|
|
212
|
+
legacy_update = self.global_conf.get("core:update_policy", choices=["legacy"])
|
|
213
|
+
# This proxy is caching information
|
|
214
|
+
proxy = ConanProxy(self.cache, self.remote_manager, editable_packages,
|
|
215
|
+
legacy_update=legacy_update)
|
|
216
|
+
# This is caching too
|
|
217
|
+
range_resolver = RangeResolver(self.cache, self.remote_manager, self.global_conf,
|
|
218
|
+
editable_packages)
|
|
219
|
+
|
|
220
|
+
cmd_wrap = CmdWrapper(HomePaths(self._conan_api.home_folder).wrapper_path)
|
|
221
|
+
conanfile_helpers = ConanFileHelpers(self._requester, cmd_wrap, self.global_conf,
|
|
222
|
+
self.cache, self._conan_api.home_folder,
|
|
223
|
+
self._conan_api, flags_map=self._flags_plugin())
|
|
224
|
+
pyreq_loader = PyRequireLoader(proxy, range_resolver, self.global_conf)
|
|
225
|
+
# This is caching too!
|
|
226
|
+
loader = ConanFileLoader(pyreq_loader, conanfile_helpers)
|
|
227
|
+
return proxy, range_resolver, loader, None
|
conan/api/input.py
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import getpass
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
from conan.errors import ConanException
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class UserInput:
|
|
8
|
+
"""Class to interact with the user, used to show messages and ask for information"""
|
|
9
|
+
|
|
10
|
+
def __init__(self, non_interactive):
|
|
11
|
+
"""
|
|
12
|
+
Params:
|
|
13
|
+
ins: input stream
|
|
14
|
+
out: ConanOutput, should have "write" method
|
|
15
|
+
"""
|
|
16
|
+
self._ins = sys.stdin
|
|
17
|
+
# FIXME: circular include, move "color_enabled" function to better location
|
|
18
|
+
from conan.api.output import ConanOutput
|
|
19
|
+
self._out = ConanOutput()
|
|
20
|
+
self._interactive = not non_interactive
|
|
21
|
+
|
|
22
|
+
def _raise_if_non_interactive(self):
|
|
23
|
+
if not self._interactive:
|
|
24
|
+
raise ConanException("Conan interactive mode disabled")
|
|
25
|
+
|
|
26
|
+
def raw_input(self):
|
|
27
|
+
self._raise_if_non_interactive()
|
|
28
|
+
return input()
|
|
29
|
+
|
|
30
|
+
def request_login(self, remote_name, username=None):
|
|
31
|
+
"""Request user to input their name and password
|
|
32
|
+
:param remote_name:
|
|
33
|
+
:param username If username is specified it only request password"""
|
|
34
|
+
self._raise_if_non_interactive()
|
|
35
|
+
if not username:
|
|
36
|
+
self._out.login_msg(f"Remote '{remote_name}' username: ")
|
|
37
|
+
username = self.get_username()
|
|
38
|
+
|
|
39
|
+
self._out.login_msg("Please enter a password for "
|
|
40
|
+
f"user '{username}' on remote '{remote_name}': ")
|
|
41
|
+
try:
|
|
42
|
+
pwd = self.get_password()
|
|
43
|
+
except ConanException:
|
|
44
|
+
raise
|
|
45
|
+
except Exception as e:
|
|
46
|
+
raise ConanException('Cancelled pass %s' % e)
|
|
47
|
+
return username, pwd
|
|
48
|
+
|
|
49
|
+
def get_username(self):
|
|
50
|
+
"""Overridable for testing purpose"""
|
|
51
|
+
return self.raw_input()
|
|
52
|
+
|
|
53
|
+
@staticmethod
|
|
54
|
+
def get_password():
|
|
55
|
+
"""Overridable for testing purpose"""
|
|
56
|
+
try:
|
|
57
|
+
return getpass.getpass("")
|
|
58
|
+
except BaseException: # For KeyboardInterrupt too
|
|
59
|
+
raise ConanException("Interrupted interactive password input")
|
|
60
|
+
|
|
61
|
+
def request_string(self, msg, default_value=None):
|
|
62
|
+
"""Request user to input a msg
|
|
63
|
+
:param default_value:
|
|
64
|
+
:param msg Name of the msg
|
|
65
|
+
"""
|
|
66
|
+
self._raise_if_non_interactive()
|
|
67
|
+
|
|
68
|
+
if default_value:
|
|
69
|
+
self._out.write('%s (%s): ' % (msg, default_value))
|
|
70
|
+
else:
|
|
71
|
+
self._out.write('%s: ' % msg)
|
|
72
|
+
s = self._ins.readline().replace("\n", "")
|
|
73
|
+
if default_value is not None and s == '':
|
|
74
|
+
return default_value
|
|
75
|
+
return s
|
|
76
|
+
|
|
77
|
+
def request_boolean(self, msg, default_option=None):
|
|
78
|
+
"""Request user to input a boolean"""
|
|
79
|
+
ret = None
|
|
80
|
+
while ret is None:
|
|
81
|
+
if default_option:
|
|
82
|
+
s = self.request_string("%s (YES/no)" % msg)
|
|
83
|
+
elif default_option is False:
|
|
84
|
+
s = self.request_string("%s (NO/yes)" % msg)
|
|
85
|
+
else:
|
|
86
|
+
s = self.request_string("%s (yes/no)" % msg)
|
|
87
|
+
if default_option is not None and s == '':
|
|
88
|
+
return default_option
|
|
89
|
+
if s.lower() in ['yes', 'y']:
|
|
90
|
+
ret = True
|
|
91
|
+
elif s.lower() in ['no', 'n']:
|
|
92
|
+
ret = False
|
|
93
|
+
else:
|
|
94
|
+
self._out.error(f"{s} is not a valid answer")
|
|
95
|
+
return ret
|