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();
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
auto sourceInfo = fetchFlake(state, flakeRef);
|
||||
|
|
|
@ -21,4 +21,18 @@ Value * makeFlakeRegistryValue(EvalState & state);
|
|||
|
||||
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;
|
||||
|
||||
struct FlakeCommand : virtual Args, StoreCommand, MixEvalArgs
|
||||
{
|
||||
std::string flakeUri;
|
||||
|
||||
public:
|
||||
FlakeCommand()
|
||||
{
|
||||
expectArg("flake-uri", &flakeUri);
|
||||
}
|
||||
};
|
||||
|
||||
struct Installable
|
||||
{
|
||||
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
|
||||
{
|
||||
CmdFlake()
|
||||
: MultiCommand({make_ref<CmdFlakeList>()})
|
||||
: MultiCommand({make_ref<CmdFlakeList>(), make_ref<CmdFlakeInfo>()})
|
||||
{
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue