aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2017-03-29 15:10:28 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2017-03-31 18:01:13 -0700
commite07471820951d5b23c9e176fae235bd8e3648651 (patch)
tree20b4808238cb1416ec573dc151b4bb4623c6ffba /toolsrc/src
parent9b9a35fa3824d3cd4f8da48fc0a60ca384a5ccab (diff)
downloadvcpkg-e07471820951d5b23c9e176fae235bd8e3648651.tar.gz
vcpkg-e07471820951d5b23c9e176fae235bd8e3648651.zip
Version_t
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/Paragraphs.cpp4
-rw-r--r--toolsrc/src/commands_portsdiff.cpp20
-rw-r--r--toolsrc/src/commands_update.cpp29
3 files changed, 39 insertions, 14 deletions
diff --git a/toolsrc/src/Paragraphs.cpp b/toolsrc/src/Paragraphs.cpp
index 2bdddb58c..aebe3d1f8 100644
--- a/toolsrc/src/Paragraphs.cpp
+++ b/toolsrc/src/Paragraphs.cpp
@@ -229,9 +229,9 @@ namespace vcpkg::Paragraphs
return output;
}
- std::map<std::string, std::string> extract_port_names_and_versions(const std::vector<SourceParagraph>& source_paragraphs)
+ std::map<std::string, version_t> extract_port_names_and_versions(const std::vector<SourceParagraph>& source_paragraphs)
{
- std::map<std::string, std::string> names_and_versions;
+ std::map<std::string, version_t> names_and_versions;
for (const SourceParagraph& port : source_paragraphs)
{
names_and_versions.emplace(port.name, port.version);
diff --git a/toolsrc/src/commands_portsdiff.cpp b/toolsrc/src/commands_portsdiff.cpp
index 26b7be8ac..0cf47bb2e 100644
--- a/toolsrc/src/commands_portsdiff.cpp
+++ b/toolsrc/src/commands_portsdiff.cpp
@@ -7,28 +7,28 @@
namespace vcpkg::Commands::PortsDiff
{
- static void do_print_name_and_version(const std::vector<std::string>& ports_to_print, const std::map<std::string, std::string>& names_and_versions)
+ static void do_print_name_and_version(const std::vector<std::string>& ports_to_print, const std::map<std::string, version_t>& names_and_versions)
{
for (const std::string& name : ports_to_print)
{
- const std::string& version = names_and_versions.at(name);
+ const version_t& version = names_and_versions.at(name);
System::println("%-20s %-16s", name, version);
}
}
static void do_print_name_and_previous_version_and_current_version(const std::vector<std::string>& ports_to_print,
- const std::map<std::string, std::string>& previous_names_and_versions,
- const std::map<std::string, std::string>& current_names_and_versions)
+ const std::map<std::string, version_t>& previous_names_and_versions,
+ const std::map<std::string, version_t>& current_names_and_versions)
{
for (const std::string& name : ports_to_print)
{
- const std::string& previous_version = previous_names_and_versions.at(name);
- const std::string& current_version = current_names_and_versions.at(name);
+ const version_t& previous_version = previous_names_and_versions.at(name);
+ const version_t& current_version = current_names_and_versions.at(name);
System::println("%-20s %-16s -> %s", name, previous_version, current_version);
}
}
- static std::map<std::string, std::string> read_ports_from_commit(const vcpkg_paths& paths, const std::wstring& git_commit_id)
+ static std::map<std::string, version_t> read_ports_from_commit(const vcpkg_paths& paths, const std::wstring& git_commit_id)
{
const fs::path& git_exe = paths.get_git_exe();
const fs::path dot_git_dir = paths.root / ".git";
@@ -47,7 +47,7 @@ namespace vcpkg::Commands::PortsDiff
git_exe.native());
System::cmd_execute_clean(cmd);
const std::vector<SourceParagraph> source_paragraphs = Paragraphs::load_all_ports(temp_checkout_path / ports_dir_name_as_string);
- const std::map<std::string, std::string> names_and_versions = Paragraphs::extract_port_names_and_versions(source_paragraphs);
+ const std::map<std::string, version_t> names_and_versions = Paragraphs::extract_port_names_and_versions(source_paragraphs);
fs::remove_all(temp_checkout_path);
return names_and_versions;
}
@@ -76,8 +76,8 @@ namespace vcpkg::Commands::PortsDiff
check_commit_exists(git_exe, git_commit_id_for_current_snapshot);
check_commit_exists(git_exe, git_commit_id_for_previous_snapshot);
- const std::map<std::string, std::string> current_names_and_versions = read_ports_from_commit(paths, git_commit_id_for_current_snapshot);
- const std::map<std::string, std::string> previous_names_and_versions = read_ports_from_commit(paths, git_commit_id_for_previous_snapshot);
+ const std::map<std::string, version_t> current_names_and_versions = read_ports_from_commit(paths, git_commit_id_for_current_snapshot);
+ const std::map<std::string, version_t> previous_names_and_versions = read_ports_from_commit(paths, git_commit_id_for_previous_snapshot);
// Already sorted, so set_difference can work on std::vector too
std::vector<std::string> current_ports = Maps::extract_keys(current_names_and_versions);
diff --git a/toolsrc/src/commands_update.cpp b/toolsrc/src/commands_update.cpp
index 34b49e321..3642c5e83 100644
--- a/toolsrc/src/commands_update.cpp
+++ b/toolsrc/src/commands_update.cpp
@@ -7,16 +7,41 @@
namespace vcpkg::Commands::Update
{
+ std::map<std::string, version_diff_t> find_outdated_packages(const StatusParagraphs& status_db)
+ {
+ std::map<std::string, version_diff_t> output;
+ for (auto&& pgh : status_db)
+ {
+ if (pgh->state == install_state_t::not_installed && pgh->want == want_t::purge)
+ continue;
+ auto it = src_names_to_versions.find(pgh->package.spec.name());
+ if (it == src_names_to_versions.end())
+ {
+ // Package was not installed from portfile
+ continue;
+ }
+ if (it->second != pgh->package.version)
+ {
+ packages_output.push_back(Strings::format("%-27s %s -> %s",
+ pgh->package.displayname(),
+ pgh->package.version,
+ it->second));
+ packages_list.append(" " + pgh->package.displayname());
+ }
+ }
+ std::sort(packages_output.begin(), packages_output.end());
+ }
+
void perform_and_exit(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths)
{
args.check_exact_arg_count(0);
args.check_and_get_optional_command_arguments({});
System::println("Using local portfile versions. To update the local portfiles, use `git pull`.");
- auto status_db = database_load_check(paths);
+ StatusParagraphs status_db = database_load_check(paths);
const std::vector<SourceParagraph> source_paragraphs = Paragraphs::load_all_ports(paths.ports);
- const std::map<std::string, std::string> src_names_to_versions = Paragraphs::extract_port_names_and_versions(source_paragraphs);
+ const std::map<std::string, version_t> src_names_to_versions = Paragraphs::extract_port_names_and_versions(source_paragraphs);
std::vector<StatusParagraph*> installed_packages = get_installed_ports(status_db);