diff options
Diffstat (limited to 'toolsrc/src/commands_ci.cpp')
| -rw-r--r-- | toolsrc/src/commands_ci.cpp | 82 |
1 files changed, 45 insertions, 37 deletions
diff --git a/toolsrc/src/commands_ci.cpp b/toolsrc/src/commands_ci.cpp index e498ba574..d4b2865a6 100644 --- a/toolsrc/src/commands_ci.cpp +++ b/toolsrc/src/commands_ci.cpp @@ -14,26 +14,26 @@ namespace vcpkg::Commands::CI using Dependencies::InstallPlanType; using Build::BuildResult; - static std::vector<PackageSpec> load_all_package_specs(Files::Filesystem& fs, const fs::path& ports_directory, const Triplet& target_triplet) + static std::vector<PackageSpec> load_all_package_specs(Files::Filesystem& fs, const fs::path& ports_directory, const Triplet& triplet) { std::vector<SourceParagraph> ports = Paragraphs::load_all_ports(fs, ports_directory); std::vector<PackageSpec> specs; for (const SourceParagraph& p : ports) { - specs.push_back(PackageSpec::from_name_and_triplet(p.name, target_triplet).value_or_exit(VCPKG_LINE_INFO)); + specs.push_back(PackageSpec::from_name_and_triplet(p.name, triplet).value_or_exit(VCPKG_LINE_INFO)); } return specs; } - void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet) + void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet) { static const std::string example = Commands::Help::create_example_string("ci x64-windows"); args.check_max_arg_count(1, example); - const Triplet target_triplet = args.command_arguments.size() == 1 ? Triplet::from_canonical_name(args.command_arguments.at(0)) : default_target_triplet; - Input::check_triplet(target_triplet, paths); + const Triplet triplet = args.command_arguments.size() == 1 ? Triplet::from_canonical_name(args.command_arguments.at(0)) : default_triplet; + Input::check_triplet(triplet, paths); args.check_and_get_optional_command_arguments({}); - const std::vector<PackageSpec> specs = load_all_package_specs(paths.get_filesystem(), paths.ports, target_triplet); + const std::vector<PackageSpec> specs = load_all_package_specs(paths.get_filesystem(), paths.ports, triplet); StatusParagraphs status_db = database_load_check(paths); const std::vector<PackageSpecWithInstallPlan> install_plan = Dependencies::create_install_plan(paths, specs, status_db); @@ -48,44 +48,52 @@ namespace vcpkg::Commands::CI { const ElapsedTime build_timer = ElapsedTime::create_started(); counter++; - System::println("Starting package %d/%d: %s", counter, package_count, action.spec.to_string()); + const std::string display_name = action.spec.to_string(); + System::println("Starting package %d/%d: %s", counter, package_count, display_name); timing.push_back(-1); results.push_back(BuildResult::NULLVALUE); try { - if (action.plan.plan_type == InstallPlanType::ALREADY_INSTALLED) + switch (action.plan.plan_type) { - results.back() = BuildResult::SUCCEEDED; - System::println(System::Color::success, "Package %s is already installed", action.spec); - } - else if (action.plan.plan_type == InstallPlanType::BUILD_AND_INSTALL) - { - const BuildResult result = Commands::Build::build_package(action.plan.source_pgh.value_or_exit(VCPKG_LINE_INFO), - action.spec, - paths, - paths.port_dir(action.spec), - status_db); - timing.back() = build_timer.elapsed<std::chrono::milliseconds>().count(); - results.back() = result; - if (result != BuildResult::SUCCEEDED) - { - System::println(System::Color::error, Build::create_error_message(result, action.spec)); - continue; - } - const BinaryParagraph bpgh = Paragraphs::try_load_cached_package(paths, action.spec).value_or_exit(VCPKG_LINE_INFO); - Install::install_package(paths, bpgh, &status_db); - System::println(System::Color::success, "Package %s is installed", action.spec); - } - else if (action.plan.plan_type == InstallPlanType::INSTALL) - { - results.back() = BuildResult::SUCCEEDED; - Install::install_package(paths, action.plan.binary_pgh.value_or_exit(VCPKG_LINE_INFO), &status_db); - System::println(System::Color::success, "Package %s is installed from cache", action.spec); + case InstallPlanType::ALREADY_INSTALLED: + results.back() = BuildResult::SUCCEEDED; + 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); + const BuildResult result = Commands::Build::build_package(action.plan.source_pgh.value_or_exit(VCPKG_LINE_INFO), + action.spec, + paths, + paths.port_dir(action.spec), + status_db); + timing.back() = build_timer.elapsed<std::chrono::milliseconds>().count(); + results.back() = result; + if (result != BuildResult::SUCCEEDED) + { + System::println(System::Color::error, Build::create_error_message(result, action.spec)); + continue; + } + System::println(System::Color::success, "Building package %s... done", display_name); + + const BinaryParagraph bpgh = Paragraphs::try_load_cached_package(paths, action.spec).value_or_exit(VCPKG_LINE_INFO); + System::println("Installing package %s... ", display_name); + Install::install_package(paths, bpgh, &status_db); + System::println(System::Color::success, "Installing package %s... done", display_name); + break; + } + case InstallPlanType::INSTALL: + results.back() = BuildResult::SUCCEEDED; + System::println("Installing package %s... ", display_name); + Install::install_package(paths, action.plan.binary_pgh.value_or_exit(VCPKG_LINE_INFO), &status_db); + System::println(System::Color::success, "Installing package %s... done", display_name); + break; + default: + Checks::unreachable(VCPKG_LINE_INFO); } - else - Checks::unreachable(VCPKG_LINE_INFO); } catch (const std::exception& e) { @@ -99,7 +107,7 @@ namespace vcpkg::Commands::CI for (size_t i = 0; i < results.size(); i++) { - System::println("%s: %s: %dms", install_plan[i].spec.to_string(), Build::to_string(results[i]), timing[i]); + System::println("%s: %s: %dms", install_plan[i].spec, Build::to_string(results[i]), timing[i]); } std::map<BuildResult, int> summary; |
