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`).
|
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
|
# Available settings
|
||||||
|
|
||||||
|
|
|
@ -116,10 +116,11 @@ T BaseSetting<T>::parse(const std::string & str) const
|
||||||
{
|
{
|
||||||
static_assert(std::is_integral<T>::value, "Integer required.");
|
static_assert(std::is_integral<T>::value, "Integer required.");
|
||||||
|
|
||||||
if (auto n = string2Int<T>(str))
|
try {
|
||||||
return *n;
|
return string2IntWithUnitPrefix<T>(str);
|
||||||
else
|
} catch (...) {
|
||||||
throw UsageError("setting '%s' has invalid value '%s'", name, str);
|
throw UsageError("setting '%s' has invalid value '%s'", name, str);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|
|
@ -66,4 +66,9 @@ exp_features=$(nix config show | grep '^experimental-features' | cut -d '=' -f 2
|
||||||
# Test that it's possible to retrieve a single setting's value
|
# Test that it's possible to retrieve a single setting's value
|
||||||
val=$(nix config show | grep '^warn-dirty' | cut -d '=' -f 2 | xargs)
|
val=$(nix config show | grep '^warn-dirty' | cut -d '=' -f 2 | xargs)
|
||||||
val2=$(nix config show warn-dirty)
|
val2=$(nix config show warn-dirty)
|
||||||
[[ $val == $val2 ]]
|
[[ $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" \
|
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=$!
|
pid1=$!
|
||||||
|
|
||||||
nix build --impure -v -o $TEST_ROOT/result-B -L --expr "$expr2" \
|
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=$!
|
pid2=$!
|
||||||
|
|
||||||
# Once the first build is done, unblock the second one.
|
# Once the first build is done, unblock the second one.
|
||||||
|
|
Loading…
Reference in a new issue