1
0
Fork 0
mirror of https://cgit.krebsco.de/krops synced 2024-11-26 21:19:47 +01:00

populate file: add exclude option

This commit is contained in:
Jörg Thalheim 2019-12-22 13:07:51 +00:00 committed by Lassulus
parent f2f8cbf1af
commit fff9b24ec9
3 changed files with 17 additions and 2 deletions

View file

@ -114,6 +114,13 @@ Supported attributes:
boolean that controls whether file contents should be checked to decide boolean that controls whether file contents should be checked to decide
whether a file has changed. This is useful when `path` points at files whether a file has changed. This is useful when `path` points at files
with mangled timestamps, e.g. the Nix store. with mangled timestamps, e.g. the Nix store.
* `exclude` (optional)
List of patterns that should excluded from being synced. The list will be
passed to the `--exclude` option of [`rsync`](https://rsync.samba.org/).
Checkout the filter rules section in the [rsync
manual](https://download.samba.org/pub/rsync/rsync.html) for further
information.
### `git` ### `git`

View file

@ -71,6 +71,11 @@
default = false; default = false;
type = lib.types.bool; type = lib.types.bool;
}; };
exclude = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [];
example = [".git"];
};
}; };
}; };
git = lib.types.submodule { git = lib.types.submodule {

View file

@ -45,7 +45,7 @@ let
''; '';
pop.file = target: source: let pop.file = target: source: let
configAttrs = ["useChecksum"]; configAttrs = ["useChecksum" "exclude"];
config = filterAttrs (name: _: elem name configAttrs) source; config = filterAttrs (name: _: elem name configAttrs) source;
in in
rsync' target config (quote source.path); rsync' target config (quote source.path);
@ -156,8 +156,11 @@ let
source_path=$source_path/ source_path=$source_path/
fi fi
${rsync}/bin/rsync \ ${rsync}/bin/rsync \
${optionalString (config.useChecksum or false) /* sh */ "--checksum"} \ ${optionalString config.useChecksum /* sh */ "--checksum"} \
${optionalString target.sudo /* sh */ "--rsync-path=\"sudo rsync\""} \ ${optionalString target.sudo /* sh */ "--rsync-path=\"sudo rsync\""} \
${concatMapStringsSep " "
(pattern: /* sh */ "--exclude ${quote pattern}")
config.exclude} \
-e ${quote (ssh' target)} \ -e ${quote (ssh' target)} \
-vFrlptD \ -vFrlptD \
--delete-excluded \ --delete-excluded \