Implemented "nix flake info"
This commit is contained in:
parent
d342de02b9
commit
cfb6ab80ce
|
@ -141,19 +141,6 @@ static FlakeSourceInfo fetchFlake(EvalState & state, const FlakeRef & flakeRef)
|
||||||
else abort();
|
else abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Flake
|
|
||||||
{
|
|
||||||
FlakeId id;
|
|
||||||
std::string description;
|
|
||||||
Path path;
|
|
||||||
std::vector<FlakeRef> requires;
|
|
||||||
std::unique_ptr<FlakeRegistry> lockFile;
|
|
||||||
Value * vProvides; // FIXME: gc
|
|
||||||
// commit hash
|
|
||||||
// date
|
|
||||||
// content hash
|
|
||||||
};
|
|
||||||
|
|
||||||
static Flake getFlake(EvalState & state, const FlakeRef & flakeRef)
|
static Flake getFlake(EvalState & state, const FlakeRef & flakeRef)
|
||||||
{
|
{
|
||||||
auto sourceInfo = fetchFlake(state, flakeRef);
|
auto sourceInfo = fetchFlake(state, flakeRef);
|
||||||
|
|
|
@ -21,4 +21,18 @@ Value * makeFlakeRegistryValue(EvalState & state);
|
||||||
|
|
||||||
Value * makeFlakeValue(EvalState & state, std::string flakeUri, Value & v);
|
Value * makeFlakeValue(EvalState & state, std::string flakeUri, Value & v);
|
||||||
|
|
||||||
|
struct Flake
|
||||||
|
{
|
||||||
|
FlakeId id;
|
||||||
|
std::string description;
|
||||||
|
Path path;
|
||||||
|
std::vector<FlakeRef> requires;
|
||||||
|
std::unique_ptr<FlakeRegistry> lockFile;
|
||||||
|
Value * vProvides; // FIXME: gc
|
||||||
|
// commit hash
|
||||||
|
// date
|
||||||
|
// content hash
|
||||||
|
};
|
||||||
|
|
||||||
|
static Flake getFlake(EvalState & state, const FlakeRef & flakeRef);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,17 @@ struct Buildable
|
||||||
|
|
||||||
typedef std::vector<Buildable> Buildables;
|
typedef std::vector<Buildable> Buildables;
|
||||||
|
|
||||||
|
struct FlakeCommand : virtual Args, StoreCommand, MixEvalArgs
|
||||||
|
{
|
||||||
|
std::string flakeUri;
|
||||||
|
|
||||||
|
public:
|
||||||
|
FlakeCommand()
|
||||||
|
{
|
||||||
|
expectArg("flake-uri", &flakeUri);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct Installable
|
struct Installable
|
||||||
{
|
{
|
||||||
virtual std::string what() = 0;
|
virtual std::string what() = 0;
|
||||||
|
|
|
@ -33,10 +33,31 @@ struct CmdFlakeList : StoreCommand, MixEvalArgs
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct CmdFlakeInfo : FlakeCommand
|
||||||
|
{
|
||||||
|
std::string name() override
|
||||||
|
{
|
||||||
|
return "info";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string description() override
|
||||||
|
{
|
||||||
|
return "list info about a given flake";
|
||||||
|
}
|
||||||
|
|
||||||
|
void run(nix::ref<nix::Store> store) override
|
||||||
|
{
|
||||||
|
auto evalState = std::make_shared<EvalState>(searchPath, store);
|
||||||
|
nix::Flake flake = nix::getFlake(*evalState, FlakeRef(flakeUri));
|
||||||
|
std::cout << "Location: " << flake.path << "\n";
|
||||||
|
std::cout << "Description: " << flake.description << "\n";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct CmdFlake : virtual MultiCommand, virtual Command
|
struct CmdFlake : virtual MultiCommand, virtual Command
|
||||||
{
|
{
|
||||||
CmdFlake()
|
CmdFlake()
|
||||||
: MultiCommand({make_ref<CmdFlakeList>()})
|
: MultiCommand({make_ref<CmdFlakeList>(), make_ref<CmdFlakeInfo>()})
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue