Merge pull request #7754 from obsidiansystems/narrower-scope-derivation-flag

Scope down `--derivation` to just the commands that use it
This commit is contained in:
Théophane Hufschmitt 2023-02-09 19:51:43 +01:00 committed by GitHub
commit 5597d68e2d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 21 additions and 14 deletions

View file

@ -127,6 +127,16 @@ ref<EvalState> EvalCommand::getEvalState()
return ref<EvalState>(evalState); return ref<EvalState>(evalState);
} }
MixOperateOnOptions::MixOperateOnOptions()
{
addFlag({
.longName = "derivation",
.description = "Operate on the [store derivation](../../glossary.md#gloss-store-derivation) rather than its outputs.",
.category = installablesCategory,
.handler = {&operateOn, OperateOn::Derivation},
});
}
BuiltPathsCommand::BuiltPathsCommand(bool recursive) BuiltPathsCommand::BuiltPathsCommand(bool recursive)
: recursive(recursive) : recursive(recursive)
{ {

View file

@ -96,9 +96,6 @@ struct SourceExprCommand : virtual Args, MixFlakeOptions
std::optional<std::string> expr; std::optional<std::string> expr;
bool readOnlyMode = false; bool readOnlyMode = false;
// FIXME: move this; not all commands (e.g. 'nix run') use it.
OperateOn operateOn = OperateOn::Output;
SourceExprCommand(bool supportReadOnlyMode = false); SourceExprCommand(bool supportReadOnlyMode = false);
std::vector<std::shared_ptr<Installable>> parseInstallables( std::vector<std::shared_ptr<Installable>> parseInstallables(
@ -153,8 +150,15 @@ private:
std::string _installable{"."}; std::string _installable{"."};
}; };
struct MixOperateOnOptions : virtual Args
{
OperateOn operateOn = OperateOn::Output;
MixOperateOnOptions();
};
/* A command that operates on zero or more store paths. */ /* A command that operates on zero or more store paths. */
struct BuiltPathsCommand : public InstallablesCommand struct BuiltPathsCommand : InstallablesCommand, virtual MixOperateOnOptions
{ {
private: private:

View file

@ -167,13 +167,6 @@ SourceExprCommand::SourceExprCommand(bool supportReadOnlyMode)
.handler = {&expr} .handler = {&expr}
}); });
addFlag({
.longName = "derivation",
.description = "Operate on the [store derivation](../../glossary.md#gloss-store-derivation) rather than its outputs.",
.category = installablesCategory,
.handler = {&operateOn, OperateOn::Derivation},
});
if (supportReadOnlyMode) { if (supportReadOnlyMode) {
addFlag({ addFlag({
.longName = "read-only", .longName = "read-only",

View file

@ -106,7 +106,7 @@ void printClosureDiff(
using namespace nix; using namespace nix;
struct CmdDiffClosures : SourceExprCommand struct CmdDiffClosures : SourceExprCommand, MixOperateOnOptions
{ {
std::string _before, _after; std::string _before, _after;

View file

@ -27,7 +27,7 @@ static std::string filterPrintable(const std::string & s)
return res; return res;
} }
struct CmdWhyDepends : SourceExprCommand struct CmdWhyDepends : SourceExprCommand, MixOperateOnOptions
{ {
std::string _package, _dependency; std::string _package, _dependency;
bool all = false; bool all = false;

View file

@ -3,7 +3,7 @@
source common.sh source common.sh
drv=$(nix-instantiate --experimental-features ca-derivations ./content-addressed.nix -A rootCA --arg seed 1) drv=$(nix-instantiate --experimental-features ca-derivations ./content-addressed.nix -A rootCA --arg seed 1)
nix --experimental-features 'nix-command ca-derivations' show-derivation --derivation "$drv" --arg seed 1 nix --experimental-features 'nix-command ca-derivations' show-derivation "$drv" --arg seed 1
buildAttr () { buildAttr () {
local derivationPath=$1 local derivationPath=$1