2016-09-22 12:57:27 +08:00
|
|
|
#include "vcpkg_Commands.h"
|
|
|
|
#include "vcpkg_System.h"
|
|
|
|
#include "vcpkg.h"
|
|
|
|
#include <iostream>
|
|
|
|
#include <iomanip>
|
|
|
|
|
|
|
|
namespace fs = std::tr2::sys;
|
|
|
|
|
|
|
|
namespace vcpkg
|
|
|
|
{
|
2016-09-22 13:47:36 +08:00
|
|
|
template <class Pred>
|
|
|
|
static void do_print(const vcpkg_paths& paths, Pred predicate)
|
2016-09-22 12:57:27 +08:00
|
|
|
{
|
2016-09-22 13:14:02 +08:00
|
|
|
for (auto it = fs::directory_iterator(paths.ports); it != fs::directory_iterator(); ++it)
|
2016-09-22 12:57:27 +08:00
|
|
|
{
|
2016-09-22 13:14:02 +08:00
|
|
|
const fs::path& path = it->path();
|
2016-09-22 12:57:27 +08:00
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
auto pghs = get_paragraphs(path / "CONTROL");
|
|
|
|
if (pghs.empty())
|
|
|
|
continue;
|
|
|
|
auto srcpgh = SourceParagraph(pghs[0]);
|
2016-09-22 13:47:36 +08:00
|
|
|
|
|
|
|
if (predicate(srcpgh.name))
|
|
|
|
{
|
|
|
|
std::cout << std::left
|
|
|
|
<< std::setw(20) << srcpgh.name << ' '
|
|
|
|
<< std::setw(16) << srcpgh.version << ' '
|
|
|
|
<< shorten_description(srcpgh.description) << '\n';
|
|
|
|
}
|
2016-09-22 12:57:27 +08:00
|
|
|
}
|
|
|
|
catch (std::runtime_error const&)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|
2016-09-22 13:47:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void search_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths)
|
|
|
|
{
|
2016-10-01 02:24:04 +08:00
|
|
|
args.check_max_arg_count(1);
|
2016-09-22 13:47:36 +08:00
|
|
|
if (args.command_arguments.size() == 0)
|
|
|
|
{
|
|
|
|
do_print(paths, [](std::string&) -> bool
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
exit(EXIT_SUCCESS);
|
|
|
|
}
|
|
|
|
|
|
|
|
// At this point there is 1 argument
|
|
|
|
do_print(paths, [&](std::string& port_name) -> bool
|
|
|
|
{
|
|
|
|
return Strings::case_insensitive_find(port_name, args.command_arguments[0]) != port_name.end();
|
|
|
|
});
|
2016-09-22 12:57:27 +08:00
|
|
|
|
|
|
|
System::println("\nIf your library is not listed, please open an issue at:\n"
|
|
|
|
" https://github.com/Microsoft/vcpkg/issues");
|
|
|
|
|
|
|
|
exit(EXIT_SUCCESS);
|
|
|
|
}
|
|
|
|
}
|