mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-22 05:56:15 +02:00
Support unit prefixes in configuration settings
E.g. you can now say `--min-free 1G`.
This commit is contained in:
parent
d8d20307a8
commit
79c7d6205c
4 changed files with 19 additions and 6 deletions
|
@ -66,5 +66,12 @@ Configuration options can be set on the command line, overriding the values set
|
|||
|
||||
The `extra-` prefix is supported for settings that take a list of items (e.g. `--extra-trusted users alice` or `--option extra-trusted-users alice`).
|
||||
|
||||
## Integer settings
|
||||
|
||||
Settings that have an integer type support the suffixes `K`, `M`, `G`
|
||||
and `T`. These cause the specified value to be multiplied by 2^10,
|
||||
2^20, 2^30 and 2^40, respectively. For instance, `--min-free 1M` is
|
||||
equivalent to `--min-free 1048576`.
|
||||
|
||||
# Available settings
|
||||
|
||||
|
|
|
@ -116,10 +116,11 @@ T BaseSetting<T>::parse(const std::string & str) const
|
|||
{
|
||||
static_assert(std::is_integral<T>::value, "Integer required.");
|
||||
|
||||
if (auto n = string2Int<T>(str))
|
||||
return *n;
|
||||
else
|
||||
try {
|
||||
return string2IntWithUnitPrefix<T>(str);
|
||||
} catch (...) {
|
||||
throw UsageError("setting '%s' has invalid value '%s'", name, str);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
|
|
|
@ -67,3 +67,8 @@ exp_features=$(nix config show | grep '^experimental-features' | cut -d '=' -f 2
|
|||
val=$(nix config show | grep '^warn-dirty' | cut -d '=' -f 2 | xargs)
|
||||
val2=$(nix config show warn-dirty)
|
||||
[[ $val == $val2 ]]
|
||||
|
||||
# Test unit prefixes.
|
||||
[[ $(nix config show --min-free 64K min-free) = 65536 ]]
|
||||
[[ $(nix config show --min-free 1M min-free) = 1048576 ]]
|
||||
[[ $(nix config show --min-free 2G min-free) = 2147483648 ]]
|
||||
|
|
|
@ -62,11 +62,11 @@ EOF
|
|||
)
|
||||
|
||||
nix build --impure -v -o $TEST_ROOT/result-A -L --expr "$expr" \
|
||||
--min-free 1000 --max-free 2000 --min-free-check-interval 1 &
|
||||
--min-free 1K --max-free 2K --min-free-check-interval 1 &
|
||||
pid1=$!
|
||||
|
||||
nix build --impure -v -o $TEST_ROOT/result-B -L --expr "$expr2" \
|
||||
--min-free 1000 --max-free 2000 --min-free-check-interval 1 &
|
||||
--min-free 1K --max-free 2K --min-free-check-interval 1 &
|
||||
pid2=$!
|
||||
|
||||
# Once the first build is done, unblock the second one.
|
||||
|
|
Loading…
Reference in a new issue