diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2017-02-17 15:29:32 -0800 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2017-02-17 15:29:32 -0800 |
| commit | 4cbd4e0cc8e315b65641a2a796b45f6af14c9c0b (patch) | |
| tree | d13885302f1124a79e9f80e9ad45d5f8c7aec351 /toolsrc/src/commands_ci.cpp | |
| parent | e99e577dc937bfca09ccb2afff92c1bb1be457bf (diff) | |
| download | vcpkg-4cbd4e0cc8e315b65641a2a796b45f6af14c9c0b.tar.gz vcpkg-4cbd4e0cc8e315b65641a2a796b45f6af14c9c0b.zip | |
`ci`: Check for --options, delay loading status_db, refactor
Diffstat (limited to 'toolsrc/src/commands_ci.cpp')
| -rw-r--r-- | toolsrc/src/commands_ci.cpp | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/toolsrc/src/commands_ci.cpp b/toolsrc/src/commands_ci.cpp index 178d8ae1b..db37db123 100644 --- a/toolsrc/src/commands_ci.cpp +++ b/toolsrc/src/commands_ci.cpp @@ -14,17 +14,10 @@ namespace vcpkg::Commands::CI using Dependencies::install_plan_type; using Build::BuildResult; - void perform_and_exit(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet) + static std::vector<package_spec> load_all_package_specs(const fs::path& directory, const triplet& target_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); - - StatusParagraphs status_db = database_load_check(paths); - std::vector<fs::path> port_folders; - Files::non_recursive_find_matching_paths_in_dir(paths.ports, [](const fs::path& current) + Files::non_recursive_find_matching_paths_in_dir(directory, [](const fs::path& current) { return fs::is_directory(current); }, &port_folders); @@ -35,6 +28,19 @@ namespace vcpkg::Commands::CI specs.push_back(package_spec::from_name_and_triplet(p.filename().generic_string(), target_triplet).get_or_throw()); } + return specs; + } + + void perform_and_exit(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_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); + args.check_and_get_optional_command_arguments({}); + const std::vector<package_spec> specs = load_all_package_specs(paths.ports, target_triplet); + + StatusParagraphs status_db = database_load_check(paths); const std::vector<package_spec_with_install_plan> install_plan = Dependencies::create_install_plan(paths, specs, status_db); Checks::check_exit(!install_plan.empty(), "Install plan cannot be empty"); |
