aboutsummaryrefslogtreecommitdiff
path: root/src/nix/search.cc
diff options
context:
space:
mode:
authorMaximilian Bosch <maximilian@mbosch.me>2017-10-31 11:57:53 +0100
committerMaximilian Bosch <maximilian@mbosch.me>2017-12-12 15:13:36 +0100
commit0413aeb35d6ee869a98b6565781c1cf47dc80080 (patch)
treedf3a5f82f01e9341bcaa3a46709e7e112488b3a4 /src/nix/search.cc
parent1ca8e9517808198080579a1105d3cf5b4e7ec64c (diff)
search.cc: sort attribute names with `std::map`
Diffstat (limited to 'src/nix/search.cc')
-rw-r--r--src/nix/search.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/nix/search.cc b/src/nix/search.cc
index 87cdb2d7e..0fbd3b6c0 100644
--- a/src/nix/search.cc
+++ b/src/nix/search.cc
@@ -82,8 +82,6 @@ struct CmdSearch : SourceExprCommand, MixJSON
auto state = getEvalState();
- bool first = true;
-
auto jsonOut = json ? std::make_unique<JSONObject>(std::cout) : nullptr;
auto sToplevel = state->symbols.create("_toplevel");
@@ -91,6 +89,8 @@ struct CmdSearch : SourceExprCommand, MixJSON
bool fromCache = false;
+ std::map<std::string, std::string> results;
+
std::function<void(Value *, std::string, bool, JSONObject *)> doExpr;
doExpr = [&](Value * v, std::string attrPath, bool toplevel, JSONObject * cache) {
@@ -138,10 +138,7 @@ struct CmdSearch : SourceExprCommand, MixJSON
jsonElem.attr("description", description);
} else {
- if (!first) std::cout << "\n";
- first = false;
-
- std::cout << fmt(
+ results[attrPath] = fmt(
"Attribute name: %s\n"
"Package name: %s\n"
"Version: %s\n"
@@ -240,6 +237,9 @@ struct CmdSearch : SourceExprCommand, MixJSON
if (rename(tmpFile.c_str(), jsonCacheFileName.c_str()) == -1)
throw SysError("cannot rename '%s' to '%s'", tmpFile, jsonCacheFileName);
}
+
+ for (auto el : results) std::cout << el.second << "\n";
+
}
};