Léo Gaspard
da6619cffe
libs: make splitString also split last separator ( #23851 )
...
* libs: make splitString also split last separator
* libs: add tests for splitStrings
2017-03-15 21:16:04 +00:00
Domen Kožar
661415d4eb
getVersion: first try drv.version before parsing drv.name
2016-08-13 17:17:36 +02:00
Данило Глинський (Danylo Hlynskyi)
0a0b7eb5f2
fix documentation typo in lib/strings.nix ( #17684 )
2016-08-12 08:30:11 +00:00
Domen Kožar
221f7f18c1
hasSuffix: human readable inputs
2016-08-10 20:06:52 +02:00
Eric Sagnes
56575cc0ac
lib: add fileContents function
2016-08-01 18:35:25 +09:00
aszlig
df475092e9
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
2016-06-20 23:53:36 +02:00
zimbatm
b0f8416c5c
Merge pull request #16180 from zimbatm/shell-escaping
...
Escape all shell arguments uniformly
2016-06-19 23:27:52 +01:00
zimbatm
bec28d748c
Remove unecessary branching on old nix versions
...
All these builtins are available since 1.10 or earlier (1.10 being the
lib/minver.nix)
2016-06-17 11:06:48 +01:00
zimbatm
28fa4a2f03
Escape all shell arguments uniformly
2016-06-12 18:11:37 +01:00
Nikolay Amiantov
cdff1f61f0
lib: revert my bogus comment fix
...
See 5445e521b6 (commitcomment-17531945)
2016-05-19 01:26:04 +03:00
Nikolay Amiantov
5445e521b6
firefox: restore gstreamer support for older firefox releases
2016-05-19 00:28:49 +03:00
Nikolay Amiantov
c779e30d53
make*Path: implement via makeSearchPathOutput
2016-04-25 13:24:39 +03:00
Nikolay Amiantov
ab0a0c004e
makeSearchPathOutputs: refactor to makeSearchPathOutput
2016-04-25 13:24:39 +03:00
Nikolay Amiantov
9b9fea305f
makeSearchPath (and derivatives): check outputUnspecified
2016-04-13 22:09:41 +03:00
Nikolay Amiantov
e26119619f
makePerlPath: try to guess outputs
2016-04-13 22:05:45 +03:00
Nikolay Amiantov
2a3b3d6f8b
makeSearchPathOutputs: init function
2016-04-13 22:05:45 +03:00
Nikolay Amiantov
5ef56700b9
makeBinPath: guess outputs
2016-04-13 22:05:45 +03:00
Vladimír Čunát
30f14243c3
Merge branch 'master' into closure-size
...
Comparison to master evaluations on Hydra:
- 1255515 for nixos
- 1255502 for nixpkgs
2016-04-10 11:17:52 +02:00
Eelco Dolstra
fd2273e419
Stronger warning against usage of splitString
2016-04-01 13:52:54 +02:00
Vladimír Čunát
ab15a62c68
Merge branch 'master' into closure-size
...
Beware that stdenv doesn't build. It seems something more will be needed
than just resolution of merge conflicts.
2016-04-01 10:06:01 +02:00
zimbatm
7883ca774b
lib/strings: document all the functions
2016-03-10 12:31:06 +00:00
Vladimír Čunát
716aac2519
Merge branch 'staging' into closure-size
2016-01-19 09:55:31 +01:00
Peter Simons
7ca8e13918
lib.getVersion: extend the function to cope with strings as well as derivations
2016-01-05 20:09:39 +01:00
Vladimír Čunát
f9f6f41bff
Merge branch 'master' into closure-size
...
TODO: there was more significant refactoring of qtbase and plasma 5.5
on master, and I'm deferring pointing to correct outputs to later.
2015-12-31 09:53:02 +01:00
Thomas Tuegel
8baebb55d4
lib/strings: add readPathsFromFile
2015-12-16 15:00:34 -06:00
Luca Bruno
5b0352a6a4
Merge branch 'master' into closure-size
2015-12-11 18:31:00 +01:00
Domen Kožar
66c90e6e1f
add makeBinPath function for abstracting away pkg/bin:pkg2/bin..
2015-12-10 12:47:32 +01:00
Luca Bruno
a412927924
Merge remote-tracking branch 'origin/master' into closure-size
2015-11-25 21:37:30 +01:00
Christian Zagrodnick
1cdacc6aa2
lib/strings: add a toInt
helper ( close #11242 )
...
While the function itself is pretty easy, it's not straitforward to find a way to convert string to int with nix.
2015-11-25 08:50:02 +01:00
Vladimír Čunát
5227fb1dd5
Merge commit staging+systemd into closure-size
...
Many non-conflict problems weren't (fully) resolved in this commit yet.
2015-10-03 13:33:37 +02:00
Eelco Dolstra
214d4fb73c
Allow options with type "package" to be store paths
...
For example, this allows writing
nix.package = /nix/store/786mlvhd17xvcp2r4jmmay6jj4wj6b7f-nix-1.10pre4206_896428c;
Also, document types.package in the manual.
2015-08-07 03:09:57 +02:00
Eelco Dolstra
c399f94bb3
intersperse: Fix quadratic performance
2015-07-24 15:58:34 +02:00
Eelco Dolstra
2d9885db9e
Remove eqStrings
...
It's no longer needed. Also clean up some comments.
2015-07-24 15:58:34 +02:00
Eelco Dolstra
9cfd128a42
Use replaceStrings primop
2015-07-24 15:58:34 +02:00
Eelco Dolstra
6f6f66ac98
Use concatStringSep primop
2015-07-24 15:58:34 +02:00
Eelco Dolstra
0ae8b365b3
Rename misc.nix -> deprecated.nix
2015-07-23 18:31:54 +02:00
Eelco Dolstra
637e35deb9
Use foldl' instead of fold in some places
2015-07-23 18:31:54 +02:00
Nicolas B. Pierron
be65ac7c32
Issue 8152 - Reduce number of attribute set created by replaceChars.
2015-07-13 23:46:38 +02:00
Vladimír Čunát
c2fff72836
systemPackages, makeLibraryPath: try to guess outputs
2015-05-05 11:56:31 +02:00
Nikita Mikhailov
63ae447a0f
Add 'fixedWidthString' and 'fixedWidthNumber' formatting functions
2015-03-08 19:02:32 +01:00
Eelco Dolstra
6c2bf141cf
lib: Use arithmetic operators rather than builtins.add etc.
2014-10-05 01:10:06 +02:00
Igor Pashev
0383b57b3c
Added concatMapStringsSep and concatImapStringsSep
...
Example: configure rewrite rules for Mediawiki
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
${concatMapStringsSep "\n" (u: "RewriteCond %{REQUEST_URI} !^${u.urlPath}") serverInfo.serverConfig.servedDirs}
RewriteRule ${if config.enableUploads
2014-08-25 10:23:10 +02:00
Kirill Elagin
751a01063d
lib: Do not take string context into account
...
Close #2883 .
2014-06-11 20:22:58 +02:00
Vladimír Čunát
bf2bc0f0dc
lib/strings: add hasPrefix and simplify hasSuffix
...
It was discussed as a part of #2570 .
2014-05-13 11:05:37 +02:00
Vladimír Čunát
180bd65cd0
lib/strings: simplify removePrefix readability
...
It was discussed as a part of #2570 .
2014-05-13 11:04:38 +02:00
Eelco Dolstra
ea36f3b868
fetchFromGitHub: Use .tar.gz instead of .zip
...
Also clean up the name attribute of fetchzip derivations a bit.
2014-05-09 15:53:44 +02:00
Eelco Dolstra
785eaf2cea
Add some primops to lib
2013-11-12 13:48:30 +01:00
Eelco Dolstra
5fef92c4a0
Move pkgs/lib/ to lib/
2013-10-10 13:28:21 +02:00