parent
8960c09eed
commit
26ac257e4f
@ -0,0 +1,49 @@ |
||||
# pkgs.nix-gitignore {#sec-pkgs-nix-gitignore} |
||||
|
||||
`pkgs.nix-gitignore` is a function that acts similarly to `builtins.filterSource` but also allows filtering with the help of the gitignore format. |
||||
|
||||
## Usage {#sec-pkgs-nix-gitignore-usage} |
||||
|
||||
`pkgs.nix-gitignore` exports a number of functions, but you\'ll most likely need either `gitignoreSource` or `gitignoreSourcePure`. As their first argument, they both accept either 1. a file with gitignore lines or 2. a string with gitignore lines, or 3. a list of either of the two. They will be concatenated into a single big string. |
||||
|
||||
```nix |
||||
{ pkgs ? import <nixpkgs> {} }: |
||||
|
||||
nix-gitignore.gitignoreSource [] ./source |
||||
# Simplest version |
||||
|
||||
nix-gitignore.gitignoreSource "supplemental-ignores\n" ./source |
||||
# This one reads the ./source/.gitignore and concats the auxiliary ignores |
||||
|
||||
nix-gitignore.gitignoreSourcePure "ignore-this\nignore-that\n" ./source |
||||
# Use this string as gitignore, don't read ./source/.gitignore. |
||||
|
||||
nix-gitignore.gitignoreSourcePure ["ignore-this\nignore-that\n", ~/.gitignore] ./source |
||||
# It also accepts a list (of strings and paths) that will be concatenated |
||||
# once the paths are turned to strings via readFile. |
||||
``` |
||||
|
||||
These functions are derived from the `Filter` functions by setting the first filter argument to `(_: _: true)`: |
||||
|
||||
```nix |
||||
gitignoreSourcePure = gitignoreFilterSourcePure (_: _: true); |
||||
gitignoreSource = gitignoreFilterSource (_: _: true); |
||||
``` |
||||
|
||||
Those filter functions accept the same arguments the `builtins.filterSource` function would pass to its filters, thus `fn: gitignoreFilterSourcePure fn ""` should be extensionally equivalent to `filterSource`. The file is blacklisted if it\'s blacklisted by either your filter or the gitignoreFilter. |
||||
|
||||
If you want to make your own filter from scratch, you may use |
||||
|
||||
```nix |
||||
gitignoreFilter = ign: root: filterPattern (gitignoreToPatterns ign) root; |
||||
``` |
||||
|
||||
## gitignore files in subdirectories {#sec-pkgs-nix-gitignore-usage-recursive} |
||||
|
||||
If you wish to use a filter that would search for .gitignore files in subdirectories, just like git does by default, use this function: |
||||
|
||||
```nix |
||||
gitignoreFilterRecursiveSource = filter: patterns: root: |
||||
# OR |
||||
gitignoreRecursiveSource = gitignoreFilterSourcePure (_: _: true); |
||||
``` |
@ -1,70 +0,0 @@ |
||||
<section xmlns="http://docbook.org/ns/docbook" |
||||
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
xmlns:xi="http://www.w3.org/2001/XInclude" |
||||
xml:id="sec-pkgs-nix-gitignore"> |
||||
<title>pkgs.nix-gitignore</title> |
||||
|
||||
<para> |
||||
<function>pkgs.nix-gitignore</function> is a function that acts similarly to <literal>builtins.filterSource</literal> but also allows filtering with the help of the gitignore format. |
||||
</para> |
||||
|
||||
<section xml:id="sec-pkgs-nix-gitignore-usage"> |
||||
<title>Usage</title> |
||||
|
||||
<para> |
||||
<literal>pkgs.nix-gitignore</literal> exports a number of functions, but you'll most likely need either <literal>gitignoreSource</literal> or <literal>gitignoreSourcePure</literal>. As their first argument, they both accept either 1. a file with gitignore lines or 2. a string with gitignore lines, or 3. a list of either of the two. They will be concatenated into a single big string. |
||||
</para> |
||||
|
||||
<programlisting><![CDATA[ |
||||
{ pkgs ? import <nixpkgs> {} }: |
||||
|
||||
nix-gitignore.gitignoreSource [] ./source |
||||
# Simplest version |
||||
|
||||
nix-gitignore.gitignoreSource "supplemental-ignores\n" ./source |
||||
# This one reads the ./source/.gitignore and concats the auxiliary ignores |
||||
|
||||
nix-gitignore.gitignoreSourcePure "ignore-this\nignore-that\n" ./source |
||||
# Use this string as gitignore, don't read ./source/.gitignore. |
||||
|
||||
nix-gitignore.gitignoreSourcePure ["ignore-this\nignore-that\n", ~/.gitignore] ./source |
||||
# It also accepts a list (of strings and paths) that will be concatenated |
||||
# once the paths are turned to strings via readFile. |
||||
]]></programlisting> |
||||
|
||||
<para> |
||||
These functions are derived from the <literal>Filter</literal> functions by setting the first filter argument to <literal>(_: _: true)</literal>: |
||||
</para> |
||||
|
||||
<programlisting><![CDATA[ |
||||
gitignoreSourcePure = gitignoreFilterSourcePure (_: _: true); |
||||
gitignoreSource = gitignoreFilterSource (_: _: true); |
||||
]]></programlisting> |
||||
|
||||
<para> |
||||
Those filter functions accept the same arguments the <literal>builtins.filterSource</literal> function would pass to its filters, thus <literal>fn: gitignoreFilterSourcePure fn ""</literal> should be extensionally equivalent to <literal>filterSource</literal>. The file is blacklisted iff it's blacklisted by either your filter or the gitignoreFilter. |
||||
</para> |
||||
|
||||
<para> |
||||
If you want to make your own filter from scratch, you may use |
||||
</para> |
||||
|
||||
<programlisting><![CDATA[ |
||||
gitignoreFilter = ign: root: filterPattern (gitignoreToPatterns ign) root; |
||||
]]></programlisting> |
||||
</section> |
||||
|
||||
<section xml:id="sec-pkgs-nix-gitignore-usage-recursive"> |
||||
<title>gitignore files in subdirectories</title> |
||||
|
||||
<para> |
||||
If you wish to use a filter that would search for .gitignore files in subdirectories, just like git does by default, use this function: |
||||
</para> |
||||
|
||||
<programlisting><![CDATA[ |
||||
gitignoreFilterRecursiveSource = filter: patterns: root: |
||||
# OR |
||||
gitignoreRecursiveSource = gitignoreFilterSourcePure (_: _: true); |
||||
]]></programlisting> |
||||
</section> |
||||
</section> |
Loading…
Reference in new issue