Merge pull request 'add optional file parameter to allow for use in a loop without object_id clashes' (#334) from stephan/cdist:master into master

Reviewed-on: ungleich-public/cdist#334
This commit is contained in:
nico14571 2022-05-20 12:53:13 +00:00
commit 1edc4d0a60
2 changed files with 23 additions and 2 deletions

View file

@ -37,6 +37,12 @@ state
source source
forwarded to :strong:`__file` type forwarded to :strong:`__file` type
file
forwarded to :strong:`__file` type
This can be used if multiple users need to have a dotfile updated,
which will result in duplicate object id errors. When using the
file parameter the object id can be some unique value.
MESSAGES MESSAGES
-------- --------
@ -61,6 +67,15 @@ EXAMPLES
# Install default xmonad config for user 'eve'. Parent directory is created automatically. # Install default xmonad config for user 'eve'. Parent directory is created automatically.
__dot_file .xmonad/xmonad.hs --user eve --state exists --source "$__files/xmonad.hs" __dot_file .xmonad/xmonad.hs --user eve --state exists --source "$__files/xmonad.hs"
# install .vimrc for root and some users
for user in root userx usery userz; do
__dot_file "${user}_dot_vimrc" \
--user $user \
--file .vimrc \
--state exists \
--source "$__files/$user/.vimrc"
done
SEE ALSO SEE ALSO
-------- --------

View file

@ -20,13 +20,19 @@ user="$(cat "${__object}/parameter/user")"
home="$(cat "${__object}/explorer/home")" home="$(cat "${__object}/explorer/home")"
primary_group="$(cat "${__object}/explorer/primary_group")" primary_group="$(cat "${__object}/explorer/primary_group")"
dirmode="$(cat "${__object}/parameter/dirmode")" dirmode="$(cat "${__object}/parameter/dirmode")"
if [ -f "${__object}/parameter/file" ]; then
file="$(cat "${__object}/parameter/file")"
else
file="${__object_id}"
fi
# Create parent directory. Type __directory has flag 'parents', but it # Create parent directory. Type __directory has flag 'parents', but it
# will leave us with root-owned directory in user home, which is not # will leave us with root-owned directory in user home, which is not
# acceptable. So we create parent directories one-by-one. XXX: maybe # acceptable. So we create parent directories one-by-one. XXX: maybe
# it should be fixed in '__directory'? # it should be fixed in '__directory'?
set -- set --
subpath=${__object_id} subpath=${file}
while subpath="$(dirname "${subpath}")" ; do while subpath="$(dirname "${subpath}")" ; do
[ "${subpath}" = . ] && break [ "${subpath}" = . ] && break
set -- "${subpath}" "$@" set -- "${subpath}" "$@"
@ -64,4 +70,4 @@ if [ "${source}" = "-" ] ; then
fi fi
unset source unset source
__file "${home}/${__object_id}" --owner "$user" --group "$primary_group" "$@" __file "${home}/${file}" --owner "$user" --group "$primary_group" "$@"