summary refs log tree commit diff
path: root/lib/strings.nix
Commit message (Collapse)AuthorAge
* lib: Add getName to mirror getVersionJohn Ericson2019-11-24
|
* Doc fix: use correct function name in type signature for concatIMapStringsSepNathan van Doorn2019-03-18
|
* lib.makePerlPath -> perlPackages.makePerlPathvolth2018-12-15
|
* make-derivation: use pname-version as default name if both are presentPatrick Hilhorst2018-11-06
|
* Merge pull request #49383 from tazjin/docs/lib-docstringsGraham Christensen2018-10-29
|\ | | | | Update library function "docstrings" for nixdoc generation
| * lib/strings: Update documentation comments for doc generationVincent Ambo2018-10-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | lib.isStorePath: fix `false` result when passed a path objectTim Cuthbertson2018-10-20
|/ | | | | Since `isStorePath` relies on comparing against builtins.storeDir (a string), we need to convert the input into a string as well.
* lib/trivial: add a few examples of usage of assertMsg/assertOneOfProfpatsch2018-09-06
|
* Merge branch 'no-toPath'Shea Levy2018-09-06
|\
| * treewide: Remove uses of builtins.toPath.Shea Levy2018-05-22
| | | | | | | | | | | | | | | | 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.
* | function rewritten by @InfinisilAaron Andersen2018-08-21
| |
* | as requested:Aaron Andersen2018-08-21
| | | | | | | | | | | | | | - 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)
* | treewide: fix build with disallowed aliases (#43872)volth2018-07-21
|/ | | fixes build with disallowed aliases
* lib: Add more configure flag helpersJohn Ericson2018-05-11
| | | | | Add with/without to match enable/disable, and add `--{enable,with}-key=value` versions of both.
* lib.makeSearchPath: allow null in search pathMatthew Bauer2018-05-09
| | | | | This makes things match ‘buildInputs’ where inputs are allowed to be null.
* lib.isStorePath: Fix derivation detectionShea Levy2018-03-09
|
* nixpkgs.lib: Add escapeNixStringRyan Trinkle2017-12-02
|
* Convert libs to a fixed-pointGraham Christensen2017-09-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 )
* lib: introduce imap0, imap1 (#25543)zimbatm2017-07-04
| | | | | | | | | | | | | | | | * 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
* lib/string: make `isStorePath` total (#26216)Profpatsch2017-05-30
| | | fix #9278
* lib: trivial spelling fixesTom Saeger2017-04-19
|
* lib.readPathsFromFile: simplify, /cc #24036Orivej Desh2017-03-19
| | | | This part isn't needed after 36de745e1b7.
* readPathsFromFile: fixup after #23851Vladimír Čunát2017-03-19
| | | | | The final newline would produce an empty string; let's filter all empty lines as well.
* libs: make splitString also split last separator (#23851)Léo Gaspard2017-03-15
| | | | | | * libs: make splitString also split last separator * libs: add tests for splitStrings
* getVersion: first try drv.version before parsing drv.nameDomen Kožar2016-08-13
|
* fix documentation typo in lib/strings.nix (#17684)Данило Глинський (Danylo Hlynskyi)2016-08-12
|
* hasSuffix: human readable inputsDomen Kožar2016-08-10
|
* lib: add fileContents functionEric Sagnes2016-08-01
|
* lib: Make escapeShellArg more robustaszlig2016-06-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Merge pull request #16180 from zimbatm/shell-escapingzimbatm2016-06-19
|\ | | | | Escape all shell arguments uniformly
| * Escape all shell arguments uniformlyzimbatm2016-06-12
| |
* | Remove unecessary branching on old nix versionszimbatm2016-06-17
|/ | | | | All these builtins are available since 1.10 or earlier (1.10 being the lib/minver.nix)
* lib: revert my bogus comment fixNikolay Amiantov2016-05-19
| | | | See https://github.com/NixOS/nixpkgs/commit/5445e521b6524587489c6968cc27347977b9b7b8#commitcomment-17531945
* firefox: restore gstreamer support for older firefox releasesNikolay Amiantov2016-05-19
|
* make*Path: implement via makeSearchPathOutputNikolay Amiantov2016-04-25
|
* makeSearchPathOutputs: refactor to makeSearchPathOutputNikolay Amiantov2016-04-25
|
* makeSearchPath (and derivatives): check outputUnspecifiedNikolay Amiantov2016-04-13
|
* makePerlPath: try to guess outputsNikolay Amiantov2016-04-13
|
* makeSearchPathOutputs: init functionNikolay Amiantov2016-04-13
|
* makeBinPath: guess outputsNikolay Amiantov2016-04-13
|
* Merge branch 'master' into closure-sizeVladimír Čunát2016-04-10
|\ | | | | | | | | | | Comparison to master evaluations on Hydra: - 1255515 for nixos - 1255502 for nixpkgs
| * Stronger warning against usage of splitStringEelco Dolstra2016-04-01
| |
* | Merge branch 'master' into closure-sizeVladimír Čunát2016-04-01
|\| | | | | | | | | Beware that stdenv doesn't build. It seems something more will be needed than just resolution of merge conflicts.
| * lib/strings: document all the functionszimbatm2016-03-10
| |
* | Merge branch 'staging' into closure-sizeVladimír Čunát2016-01-19
|\|
| * lib.getVersion: extend the function to cope with strings as well as derivationsPeter Simons2016-01-05
| |
* | Merge branch 'master' into closure-sizeVladimír Čunát2015-12-31
|\| | | | | | | | | TODO: there was more significant refactoring of qtbase and plasma 5.5 on master, and I'm deferring pointing to correct outputs to later.
| * lib/strings: add readPathsFromFileThomas Tuegel2015-12-16
| |
* | Merge branch 'master' into closure-sizeLuca Bruno2015-12-11
|\|
| * add makeBinPath function for abstracting away pkg/bin:pkg2/bin..Domen Kožar2015-12-10
| |