forked from lix-project/lix
Convert old-style profile manifest
This commit is contained in:
parent
af786432c5
commit
ac9b427541
|
@ -6,6 +6,7 @@
|
||||||
#include "archive.hh"
|
#include "archive.hh"
|
||||||
#include "builtins/buildenv.hh"
|
#include "builtins/buildenv.hh"
|
||||||
#include "flake/flakeref.hh"
|
#include "flake/flakeref.hh"
|
||||||
|
#include "nix-env/user-env.hh"
|
||||||
|
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
#include <regex>
|
#include <regex>
|
||||||
|
@ -35,7 +36,7 @@ struct ProfileManifest
|
||||||
|
|
||||||
ProfileManifest() { }
|
ProfileManifest() { }
|
||||||
|
|
||||||
ProfileManifest(const Path & profile)
|
ProfileManifest(EvalState & state, const Path & profile)
|
||||||
{
|
{
|
||||||
auto manifestPath = profile + "/manifest.json";
|
auto manifestPath = profile + "/manifest.json";
|
||||||
|
|
||||||
|
@ -61,6 +62,22 @@ struct ProfileManifest
|
||||||
elements.emplace_back(std::move(element));
|
elements.emplace_back(std::move(element));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (pathExists(profile + "/manifest.nix")) {
|
||||||
|
// FIXME: needed because of pure mode; ugly.
|
||||||
|
if (state.allowedPaths) {
|
||||||
|
state.allowedPaths->insert(state.store->followLinksToStore(profile));
|
||||||
|
state.allowedPaths->insert(state.store->followLinksToStore(profile + "/manifest.nix"));
|
||||||
|
}
|
||||||
|
|
||||||
|
auto drvInfos = queryInstalled(state, state.store->followLinksToStore(profile));
|
||||||
|
|
||||||
|
for (auto & drvInfo : drvInfos) {
|
||||||
|
ProfileElement element;
|
||||||
|
element.storePaths = {drvInfo.queryOutPath()};
|
||||||
|
elements.emplace_back(std::move(element));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string toJSON() const
|
std::string toJSON() const
|
||||||
|
@ -147,7 +164,7 @@ struct CmdProfileInstall : InstallablesCommand, MixDefaultProfile
|
||||||
|
|
||||||
void run(ref<Store> store) override
|
void run(ref<Store> store) override
|
||||||
{
|
{
|
||||||
ProfileManifest manifest(*profile);
|
ProfileManifest manifest(*getEvalState(), *profile);
|
||||||
|
|
||||||
PathSet pathsToBuild;
|
PathSet pathsToBuild;
|
||||||
|
|
||||||
|
@ -224,7 +241,7 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CmdProfileRemove : virtual StoreCommand, MixDefaultProfile, MixProfileElementMatchers
|
struct CmdProfileRemove : virtual EvalCommand, MixDefaultProfile, MixProfileElementMatchers
|
||||||
{
|
{
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
|
@ -255,7 +272,7 @@ struct CmdProfileRemove : virtual StoreCommand, MixDefaultProfile, MixProfileEle
|
||||||
|
|
||||||
void run(ref<Store> store) override
|
void run(ref<Store> store) override
|
||||||
{
|
{
|
||||||
ProfileManifest oldManifest(*profile);
|
ProfileManifest oldManifest(*getEvalState(), *profile);
|
||||||
|
|
||||||
auto matchers = getMatchers(store);
|
auto matchers = getMatchers(store);
|
||||||
|
|
||||||
|
@ -300,7 +317,7 @@ struct CmdProfileUpgrade : virtual SourceExprCommand, MixDefaultProfile, MixProf
|
||||||
|
|
||||||
void run(ref<Store> store) override
|
void run(ref<Store> store) override
|
||||||
{
|
{
|
||||||
ProfileManifest manifest(*profile);
|
ProfileManifest manifest(*getEvalState(), *profile);
|
||||||
|
|
||||||
auto matchers = getMatchers(store);
|
auto matchers = getMatchers(store);
|
||||||
|
|
||||||
|
@ -342,7 +359,7 @@ struct CmdProfileUpgrade : virtual SourceExprCommand, MixDefaultProfile, MixProf
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CmdProfileInfo : virtual StoreCommand, MixDefaultProfile
|
struct CmdProfileInfo : virtual EvalCommand, virtual StoreCommand, MixDefaultProfile
|
||||||
{
|
{
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
|
@ -361,7 +378,7 @@ struct CmdProfileInfo : virtual StoreCommand, MixDefaultProfile
|
||||||
|
|
||||||
void run(ref<Store> store) override
|
void run(ref<Store> store) override
|
||||||
{
|
{
|
||||||
ProfileManifest manifest(*profile);
|
ProfileManifest manifest(*getEvalState(), *profile);
|
||||||
|
|
||||||
for (size_t i = 0; i < manifest.elements.size(); ++i) {
|
for (size_t i = 0; i < manifest.elements.size(); ++i) {
|
||||||
auto & element(manifest.elements[i]);
|
auto & element(manifest.elements[i]);
|
||||||
|
|
Loading…
Reference in a new issue