diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2017-05-02 20:34:11 -0700 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2017-05-03 04:12:28 -0700 |
| commit | 4633c5e0ea8560ac17c14aa56e50bf3693017f51 (patch) | |
| tree | 543c1994c5b9b244bb3a9517fd4dfbde389afffc /toolsrc/src/commands_install.cpp | |
| parent | f10861fa7af9bd675cb4e80ea31d85d7e5c6d906 (diff) | |
| download | vcpkg-4633c5e0ea8560ac17c14aa56e50bf3693017f51.tar.gz vcpkg-4633c5e0ea8560ac17c14aa56e50bf3693017f51.zip | |
[vcpkg] Add support for installing from HEAD
Diffstat (limited to 'toolsrc/src/commands_install.cpp')
| -rw-r--r-- | toolsrc/src/commands_install.cpp | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/toolsrc/src/commands_install.cpp b/toolsrc/src/commands_install.cpp index bfbefe1c1..2260b067e 100644 --- a/toolsrc/src/commands_install.cpp +++ b/toolsrc/src/commands_install.cpp @@ -265,6 +265,8 @@ namespace vcpkg::Commands::Install void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet) { static const std::string OPTION_DRY_RUN = "--dry-run"; + static const std::string OPTION_USE_HEAD_VERSION = "--head"; + static const std::string OPTION_NO_DOWNLOADS = "--no-downloads"; // input sanitization static const std::string example = @@ -277,8 +279,11 @@ namespace vcpkg::Commands::Install for (auto&& spec : specs) Input::check_triplet(spec.triplet(), paths); - const std::unordered_set<std::string> options = args.check_and_get_optional_command_arguments({OPTION_DRY_RUN}); + const std::unordered_set<std::string> options = args.check_and_get_optional_command_arguments( + {OPTION_DRY_RUN, OPTION_USE_HEAD_VERSION, OPTION_NO_DOWNLOADS}); const bool dryRun = options.find(OPTION_DRY_RUN) != options.cend(); + const bool use_head_version = options.find(OPTION_USE_HEAD_VERSION) != options.cend(); + const bool no_downloads = options.find(OPTION_NO_DOWNLOADS) != options.cend(); // create the plan StatusParagraphs status_db = database_load_check(paths); @@ -319,17 +324,34 @@ namespace vcpkg::Commands::Install switch (action.plan_type) { case InstallPlanType::ALREADY_INSTALLED: - System::println(System::Color::success, "Package %s is already installed", display_name); + if (use_head_version && action.request_type == RequestType::USER_REQUESTED) + { + System::println(System::Color::warning, + "Package %s is already installed -- not building from HEAD", + display_name); + } + else + { + System::println(System::Color::success, "Package %s is already installed", display_name); + } break; case InstallPlanType::BUILD_AND_INSTALL: { - System::println("Building package %s... ", display_name); Build::BuildPackageConfig build_config{ action.any_paragraph.source_paragraph.value_or_exit(VCPKG_LINE_INFO), action.spec.triplet(), paths.port_dir(action.spec), }; + build_config.use_head_version = + use_head_version && action.request_type == RequestType::USER_REQUESTED; + build_config.no_downloads = no_downloads; + + if (build_config.use_head_version) + System::println("Building package %s from HEAD... ", display_name); + else + System::println("Building package %s... ", display_name); + const auto result = Build::build_package(paths, build_config, status_db); if (result.code != Build::BuildResult::SUCCEEDED) { @@ -348,6 +370,12 @@ namespace vcpkg::Commands::Install break; } case InstallPlanType::INSTALL: + if (use_head_version && action.request_type == RequestType::USER_REQUESTED) + { + System::println(System::Color::warning, + "Package %s is already built -- not building from HEAD", + display_name); + } System::println("Installing package %s... ", display_name); install_package( paths, action.any_paragraph.binary_paragraph.value_or_exit(VCPKG_LINE_INFO), &status_db); |
