| Commit message (Expand) | Author | Age | Files | Lines |
| * | lib/strings: forbid lists in isStorePath•••When a list is passed to isStorePath this is most likely a mistake and
it is therefore better to just return false. There is one case where
this theoretically makes sense (if a list contains a single element for
which isStorePath elem), but since that case is also probably seldomly
intentional, it may save someone from debbuging unclear evaluation
errors.
| sternenseemann | 2021-05-07 | 1 | -1/+1 |
| * | lib/strings: fix example for isStorePath•••Since it checks if dirOf x is the nix store dir, a trailing slash will
break this check and make it return false.
| sternenseemann | 2021-05-07 | 1 | -1/+1 |
| * | lib: fix documented type of fixedWidthString (#121396) | Lennart Spitzner | 2021-05-01 | 1 | -1/+1 |
| * | treewide: use lib.warnIf where appropriate | Alyssa Ross | 2021-04-28 | 1 | -2/+2 |
| * | lib/string: drop redundant string in description of toInt.•••Describing the string argument as a string is redundant and not needed
to describe what this function does.
| Alex Brandt | 2020-12-05 | 1 | -1/+1 |
| * | lib/strings: fix typo in example•••The example refers to a snake_case function name but Nix uses camelCase
function names. This ensures the example is correct for the given
function.
| Alex Brandt | 2020-12-04 | 1 | -2/+2 |
| * | lib/strings: fix examples for enableFeatureAs•••The As was missing in the examples on this library function. This will
ensure the examples refer to the function they document.
| Alex Brandt | 2020-12-03 | 1 | -2/+2 |
| * | Merge pull request #44928 from vcunat/p/configure-assert•••lib/strings: guard against an easy mistake | Eelco Dolstra | 2020-11-11 | 1 | -2/+6 |
| |\ |
|
| | * | lib/strings: guard against an easy mistake•••This would catch the bad `fwknop` flags fixed in 580cab57e4,
during evaluation already.
| Vladimír Čunát | 2018-08-12 | 1 | -2/+6 |
| * | | lib: Use Nix's static scope checking, fix error message, optimize•••Nix can perform static scope checking, but whenever code is inside
a `with` expression, the analysis breaks down, because it can't
know statically what's in the attribute set whose attributes were
brought into scope. In those cases, Nix has to assume that
everything works out.
Except it doesnt. Removing `with` from lib/ revealed an undefined
variable in an error message.
If that doesn't convince you that we're better off without `with`,
I can tell you that this PR results in a 3% evaluation performance
improvement because Nix can look up local variables by index.
This adds up with applications like the module system.
Furthermore, removing `with` makes the binding site of each
variable obvious, which helps with comprehension.
| Robert Hensing | 2020-10-22 | 1 | -21/+43 |
| * | | lib.splitString: use builtin.split | Etienne Laurin | 2020-10-18 | 1 | -21/+14 |
| * | | lib/strings: deprecate readPathsFromFile•••> NOTE: This function is not performant and should be avoided.
It's not used at all in-tree now, so we can remove it completely after
any remaining users are given notice.
| V | 2020-09-03 | 1 | -8/+9 |
| * | | lib/strings: Add floatToString | Silvan Mosberger | 2020-07-25 | 1 | -0/+16 |
| * | | lib/strings: Introduce escapeNixIdentifier | Silvan Mosberger | 2020-04-13 | 1 | -0/+15 |
| * | | Merge pull request #83241 from Infinisil/valid-drv-name•••lib/strings: Add `sanitizeDerivationName` function | Silvan Mosberger | 2020-04-02 | 1 | -0/+32 |
| |\ \ |
|
| | * | | lib/strings: Add sanitizeDerivationName function | Silvan Mosberger | 2020-03-30 | 1 | -0/+32 |
| * | | | Revert "Revert "Merge master into staging-next""•••In 87a19e9048773d5a363679617406ad148d36c3b8 I merged staging-next into master using the GitHub gui as intended.
In ac241fb7a570d6cf81d229ad22a8889602639160 I merged master into staging-next for the next staging cycle, however, I accidentally pushed it to master.
Thinking this may cause trouble, I reverted it in 0be87c79797a5fa384fbc356c74ed54f9f7829ea. This was however wrong, as it "removed" master.
This reverts commit 0be87c79797a5fa384fbc356c74ed54f9f7829ea.
| Frederik Rietdijk | 2020-02-05 | 1 | -1/+1 |
| * | | | Revert "Merge master into staging-next"•••I merged master into staging-next but accidentally pushed it to master.
This should get us back to 87a19e9048773d5a363679617406ad148d36c3b8.
This reverts commit ac241fb7a570d6cf81d229ad22a8889602639160, reversing
changes made to 76a439239eb310d9ad76d998b34d5d3bc0e37acb.
| Frederik Rietdijk | 2020-02-05 | 1 | -1/+1 |
| * | | | lib/strings: fix comment typo | Robert Helgesson | 2020-02-05 | 1 | -1/+1 |
| |/ / |
|
| * | | lib: Add getName to mirror getVersion | John Ericson | 2019-11-24 | 1 | -0/+17 |
| * | | Doc fix: use correct function name in type signature for concatIMapStringsSep | Nathan van Doorn | 2019-03-18 | 1 | -1/+1 |
| * | | lib.makePerlPath -> perlPackages.makePerlPath | volth | 2018-12-15 | 1 | -20/+0 |
| * | | make-derivation: use pname-version as default name if both are present | Patrick Hilhorst | 2018-11-06 | 1 | -0/+20 |
| * | | Merge pull request #49383 from tazjin/docs/lib-docstrings•••Update library function "docstrings" for nixdoc generation | Graham Christensen | 2018-10-29 | 1 | -51/+153 |
| |\ \ |
|
| | * | | lib/strings: Update documentation comments for doc generation•••Updates documentation comments with extra information for nixdoc[1]
compatibility.
Some documentation strings have additionally been reworded for
clarity.
"Faux types" are added where applicable, but some functions do things
that are not trivially representable in the type notation used so they
were ignored for this purpose.
[1]: https://github.com/tazjin/nixdoc
| Vincent Ambo | 2018-10-29 | 1 | -51/+153 |
| * | | | lib.isStorePath: fix `false` result when passed a path object•••Since `isStorePath` relies on comparing against builtins.storeDir
(a string), we need to convert the input into a string as well.
| Tim Cuthbertson | 2018-10-20 | 1 | -3/+6 |
| |/ / |
|
| * | | lib/trivial: add a few examples of usage of assertMsg/assertOneOf | Profpatsch | 2018-09-06 | 1 | -2/+5 |
| * | | Merge branch 'no-toPath' | Shea Levy | 2018-09-06 | 1 | -3/+2 |
| |\ \ |
|
| | * | | treewide: Remove uses of builtins.toPath.•••toPath has confusing semantics and is never necessary; it can always
either just be omitted or replaced by pre-concatenating `/.`. It has
been marked as "!!! obsolete?" for more than 10 years in a C++
comment, hopefully removing it will let us properly deprecate and,
eventually, remove it.
| Shea Levy | 2018-05-22 | 1 | -3/+2 |
| * | | | function rewritten by @Infinisil | Aaron Andersen | 2018-08-21 | 1 | -8/+1 |
| * | | | as requested:•••- moved function into strings.nix
- renamed function from makePerl5Lib
- removed duplicates entries in the resulting value
- rewrote the function from scratch after learning a few things (much cleaner now)
| Aaron Andersen | 2018-08-21 | 1 | -0/+16 |
| | |/
|/| |
|
| * | | treewide: fix build with disallowed aliases (#43872)•••fixes build with disallowed aliases | volth | 2018-07-21 | 1 | -1/+1 |
| |/ |
|
| * | lib: Add more configure flag helpers•••Add with/without to match enable/disable, and add
`--{enable,with}-key=value` versions of both.
| John Ericson | 2018-05-11 | 1 | -0/+33 |
| * | lib.makeSearchPath: allow null in search path•••This makes things match ‘buildInputs’ where inputs are allowed to be
null.
| Matthew Bauer | 2018-05-09 | 1 | -1/+1 |
| * | lib.isStorePath: Fix derivation detection | Shea Levy | 2018-03-09 | 1 | -1/+8 |
| * | nixpkgs.lib: Add escapeNixString | Ryan Trinkle | 2017-12-02 | 1 | -0/+8 |
| * | Convert libs to a fixed-point•••This does break the API of being able to import any lib file and get
its libs, however I'm not sure people did this.
I made this while exploring being able to swap out docFn with a stub
in #2305, to avoid functor performance problems. I don't know if that
is going to move forward (or if it is a problem or not,) but after
doing all this work figured I'd put it up anyway :)
Two notable advantages to this approach:
1. when a lib inherits another lib's functions, it doesn't
automatically get put in to the scope of lib
2. when a lib implements a new obscure functions, it doesn't
automatically get put in to the scope of lib
Using the test script (later in this commit) I got the following diff
on the API:
+ diff master fixed-lib
11764a11765,11766
> .types.defaultFunctor
> .types.defaultTypeMerge
11774a11777,11778
> .types.isOptionType
> .types.isType
11781a11786
> .types.mkOptionType
11788a11794
> .types.setType
11795a11802
> .types.types
This means that this commit _adds_ to the API, however I can't find a
way to fix these last remaining discrepancies. At least none are
_removed_.
Test script (run with nix-repl in the PATH):
#!/bin/sh
set -eux
repl() {
suff=${1:-}
echo "(import ./lib)$suff" \
| nix-repl 2>&1
}
attrs_to_check() {
repl "${1:-}" \
| tr ';' $'\n' \
| grep "\.\.\." \
| cut -d' ' -f2 \
| sed -e "s/^/${1:-}./" \
| sort
}
summ() {
repl "${1:-}" \
| tr ' ' $'\n' \
| sort \
| uniq
}
deep_summ() {
suff="${1:-}"
depth="${2:-4}"
depth=$((depth - 1))
summ "$suff"
for attr in $(attrs_to_check "$suff" | grep -v "types.types"); do
if [ $depth -eq 0 ]; then
summ "$attr" | sed -e "s/^/$attr./"
else
deep_summ "$attr" "$depth" | sed -e "s/^/$attr./"
fi
done
}
(
cd nixpkgs
#git add .
#git commit -m "Auto-commit, sorry" || true
git checkout fixed-lib
deep_summ > ../fixed-lib
git checkout master
deep_summ > ../master
)
if diff master fixed-lib; then
echo "SHALLOW MATCH!"
fi
(
cd nixpkgs
git checkout fixed-lib
repl .types
)
| Graham Christensen | 2017-09-16 | 1 | -2/+2 |
| * | lib: introduce imap0, imap1 (#25543)•••* lib: introduce imap0, imap1
For historical reasons, imap starts counting at 1 and it's not
consistent with the rest of the lib.
So for now we split imap into imap0 that starts counting at zero and
imap1 that starts counting at 1. And imap is marked as deprecated.
See https://github.com/NixOS/nixpkgs/commit/c71e2d42359f9900ea2c290d141c0d606471da16#commitcomment-21873221
* replace uses of lib.imap
* lib: move imap to deprecated.nix
| zimbatm | 2017-07-04 | 1 | -2/+2 |
| * | lib/string: make `isStorePath` total (#26216)•••fix #9278 | Profpatsch | 2017-05-30 | 1 | -1/+6 |
| * | lib: trivial spelling fixes | Tom Saeger | 2017-04-19 | 1 | -2/+2 |
| * | lib.readPathsFromFile: simplify, /cc #24036•••This part isn't needed after 36de745e1b7.
| Orivej Desh | 2017-03-19 | 1 | -3/+1 |
| * | readPathsFromFile: fixup after #23851•••The final newline would produce an empty string;
let's filter all empty lines as well.
| Vladimír Čunát | 2017-03-19 | 1 | -1/+1 |
| * | libs: make splitString also split last separator (#23851)•••* libs: make splitString also split last separator
* libs: add tests for splitStrings
| Léo Gaspard | 2017-03-15 | 1 | -1/+1 |
| * | getVersion: first try drv.version before parsing drv.name | Domen Kožar | 2016-08-13 | 1 | -1/+6 |
| * | fix documentation typo in lib/strings.nix (#17684) | Данило Глинський (Danylo Hlynskyi) | 2016-08-12 | 1 | -1/+1 |
| * | hasSuffix: human readable inputs | Domen Kožar | 2016-08-10 | 1 | -5/+5 |
| * | lib: add fileContents function | Eric Sagnes | 2016-08-01 | 1 | -0/+10 |
| * | lib: Make escapeShellArg more robust•••Quoting various characters that the shell *may* interpret specially is a
very fragile thing to do.
I've used something more robust all over the place in various Nix
expression I've written just because I didn't trust escapeShellArg.
Here is a proof of concept showing that I was indeed right in
distrusting escapeShellArg:
with import <nixpkgs> {};
let
payload = runCommand "payload" {} ''
# \x00 is not allowed for Nix strings, so let's begin at 1
for i in $(seq 1 255); do
echo -en "\\x$(printf %02x $i)"
done > "$out"
'';
escapers = with lib; {
current = escapeShellArg;
better = arg: let
backslashEscapes = stringToCharacters "\"\\ ';$`()|<>\r\t*[]&!~#";
search = backslashEscapes ++ [ "\n" ];
replace = map (c: "\\${c}") backslashEscapes ++ [ "'\n'" ];
in replaceStrings search replace (toString arg);
best = arg: "'${replaceStrings ["'"] ["'\\''"] (toString arg)}'";
};
testWith = escaper: let
escaped = escaper (builtins.readFile payload);
in runCommand "test" {} ''
if ! r="$(bash -c ${escapers.best "echo -nE ${escaped}"} 2> /dev/null)"
then
echo bash eval error > "$out"
exit 0
fi
if echo -n "$r" | cmp -s "${payload}"; then
echo success > "$out"
else
echo failed > "$out"
fi
'';
in runCommand "results" {} ''
echo "Test results:"
${lib.concatStrings (lib.mapAttrsToList (name: impl: ''
echo " ${name}: $(< "${testWith impl}")"
'') escapers)}
exit 1
''
The resulting output is the following:
Test results:
best: success
better: success
current: bash eval error
I did the "better" implementation just to illustrate that the method of
quoting only "harmful" characters results in madness in terms of
implementation and performance.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Cc: @edolstra, @zimbatm
| aszlig | 2016-06-20 | 1 | -8/+7 |
| * | Merge pull request #16180 from zimbatm/shell-escaping•••Escape all shell arguments uniformly | zimbatm | 2016-06-19 | 1 | -1/+10 |
| |\ |
|
| | * | Escape all shell arguments uniformly | zimbatm | 2016-06-12 | 1 | -1/+10 |