Clean up the lock file handling flags
Added a flag --no-update-lock-file to barf if the lock file needs any changes. This is useful for CI systems if you're building a checkout. Fixes #2947. Renamed --no-save-lock-file to --no-write-lock-file. It is now a fatal error if the lock file needs changes but --no-write-lock-file is not given.
This commit is contained in:
@@ -16,10 +16,6 @@ class EvalState;
|
||||
struct Pos;
|
||||
class Store;
|
||||
|
||||
namespace flake {
|
||||
enum LockFileMode : unsigned int;
|
||||
}
|
||||
|
||||
/* A command that requires a Nix store. */
|
||||
struct StoreCommand : virtual Command
|
||||
{
|
||||
@@ -42,15 +38,9 @@ struct EvalCommand : virtual StoreCommand, MixEvalArgs
|
||||
|
||||
struct MixFlakeOptions : virtual Args
|
||||
{
|
||||
bool recreateLockFile = false;
|
||||
bool saveLockFile = true;
|
||||
bool useRegistries = true;
|
||||
|
||||
flake::LockFlags lockFlags;
|
||||
|
||||
MixFlakeOptions();
|
||||
|
||||
flake::LockFileMode getLockFileMode();
|
||||
};
|
||||
|
||||
struct SourceExprCommand : virtual Args, EvalCommand, MixFlakeOptions
|
||||
|
||||
+2
-2
@@ -38,12 +38,12 @@ public:
|
||||
Flake getFlake()
|
||||
{
|
||||
auto evalState = getEvalState();
|
||||
return flake::getFlake(*evalState, getFlakeRef(), useRegistries);
|
||||
return flake::getFlake(*evalState, getFlakeRef(), lockFlags.useRegistries);
|
||||
}
|
||||
|
||||
LockedFlake lockFlake()
|
||||
{
|
||||
return flake::lockFlake(*getEvalState(), getFlakeRef(), getLockFileMode(), lockFlags);
|
||||
return flake::lockFlake(*getEvalState(), getFlakeRef(), lockFlags);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+12
-18
@@ -22,17 +22,22 @@ MixFlakeOptions::MixFlakeOptions()
|
||||
mkFlag()
|
||||
.longName("recreate-lock-file")
|
||||
.description("recreate lock file from scratch")
|
||||
.set(&recreateLockFile, true);
|
||||
.set(&lockFlags.recreateLockFile, true);
|
||||
|
||||
mkFlag()
|
||||
.longName("no-save-lock-file")
|
||||
.description("do not save the newly generated lock file")
|
||||
.set(&saveLockFile, false);
|
||||
.longName("no-update-lock-file")
|
||||
.description("do not allow any updates to the lock file")
|
||||
.set(&lockFlags.updateLockFile, false);
|
||||
|
||||
mkFlag()
|
||||
.longName("no-write-lock-file")
|
||||
.description("do not write the newly generated lock file")
|
||||
.set(&lockFlags.writeLockFile, false);
|
||||
|
||||
mkFlag()
|
||||
.longName("no-registries")
|
||||
.description("don't use flake registries")
|
||||
.set(&useRegistries, false);
|
||||
.set(&lockFlags.useRegistries, false);
|
||||
|
||||
mkFlag()
|
||||
.longName("override-input")
|
||||
@@ -46,17 +51,6 @@ MixFlakeOptions::MixFlakeOptions()
|
||||
});
|
||||
}
|
||||
|
||||
flake::LockFileMode MixFlakeOptions::getLockFileMode()
|
||||
{
|
||||
using namespace flake;
|
||||
return
|
||||
useRegistries
|
||||
? recreateLockFile
|
||||
? (saveLockFile ? RecreateLockFile : UseNewLockFile)
|
||||
: (saveLockFile ? UpdateLockFile : UseUpdatedLockFile)
|
||||
: AllPure;
|
||||
}
|
||||
|
||||
SourceExprCommand::SourceExprCommand()
|
||||
{
|
||||
mkFlag()
|
||||
@@ -332,7 +326,7 @@ std::tuple<std::string, FlakeRef, flake::EvalCache::Derivation> InstallableFlake
|
||||
{
|
||||
auto state = cmd.getEvalState();
|
||||
|
||||
auto lockedFlake = lockFlake(*state, flakeRef, cmd.getLockFileMode(), cmd.lockFlags);
|
||||
auto lockedFlake = lockFlake(*state, flakeRef, cmd.lockFlags);
|
||||
|
||||
Value * vOutputs = nullptr;
|
||||
|
||||
@@ -386,7 +380,7 @@ std::vector<flake::EvalCache::Derivation> InstallableFlake::toDerivations()
|
||||
|
||||
Value * InstallableFlake::toValue(EvalState & state)
|
||||
{
|
||||
auto lockedFlake = lockFlake(state, flakeRef, cmd.getLockFileMode(), cmd.lockFlags);
|
||||
auto lockedFlake = lockFlake(state, flakeRef, cmd.lockFlags);
|
||||
|
||||
auto vOutputs = getFlakeOutputs(state, lockedFlake);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user