mirror of
https://cgit.krebsco.de/krops
synced 2024-11-26 21:19:47 +01:00
populate: no name clashes anymore
This commit is contained in:
parent
5ae2b7f369
commit
2e93a93ac2
1 changed files with 17 additions and 17 deletions
|
@ -1,7 +1,7 @@
|
||||||
with import ../../lib;
|
with import ../../lib;
|
||||||
with shell;
|
with shell;
|
||||||
|
|
||||||
{ coreutils, dash, findutils, git, jq, openssh, rsync, writeDash }:
|
{ coreutils, dash, findutils, git, jq, openssh, pass, rsync, writeDash }:
|
||||||
|
|
||||||
let
|
let
|
||||||
check = { force, target }: let
|
check = { force, target }: let
|
||||||
|
@ -20,21 +20,21 @@ let
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
pop.file = target: file: rsync' target (quote file.path);
|
pop.file = target: source: rsync' target (quote source.path);
|
||||||
|
|
||||||
pop.git = target: git: shell' target /* sh */ ''
|
pop.git = target: source: shell' target /* sh */ ''
|
||||||
if ! test -e ${quote target.path}; then
|
if ! test -e ${quote target.path}; then
|
||||||
git clone --recurse-submodules ${quote git.url} ${quote target.path}
|
git clone --recurse-submodules ${quote source.url} ${quote target.path}
|
||||||
fi
|
fi
|
||||||
cd ${quote target.path}
|
cd ${quote target.path}
|
||||||
if ! url=$(git config remote.origin.url); then
|
if ! url=$(git config remote.origin.url); then
|
||||||
git remote add origin ${quote git.url}
|
git remote add origin ${quote source.url}
|
||||||
elif test "$url" != ${quote git.url}; then
|
elif test "$url" != ${quote source.url}; then
|
||||||
git remote set-url origin ${quote git.url}
|
git remote set-url origin ${quote source.url}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO resolve git_ref to commit hash
|
# TODO resolve git_ref to commit hash
|
||||||
hash=${quote git.ref}
|
hash=${quote source.ref}
|
||||||
|
|
||||||
if ! test "$(git log --format=%H -1)" = "$hash"; then
|
if ! test "$(git log --format=%H -1)" = "$hash"; then
|
||||||
if ! git log -1 "$hash" >/dev/null 2>&1; then
|
if ! git log -1 "$hash" >/dev/null 2>&1; then
|
||||||
|
@ -48,8 +48,8 @@ let
|
||||||
git clean -dfx
|
git clean -dfx
|
||||||
'';
|
'';
|
||||||
|
|
||||||
pop.pass = target: pass: let
|
pop.pass = target: source: let
|
||||||
passPrefix = "${pass.dir}/${pass.name}";
|
passPrefix = "${source.dir}/${source.name}";
|
||||||
in /* sh */ ''
|
in /* sh */ ''
|
||||||
umask 0077
|
umask 0077
|
||||||
|
|
||||||
|
@ -66,28 +66,28 @@ let
|
||||||
rel_name=''${rel_name%.gpg}
|
rel_name=''${rel_name%.gpg}
|
||||||
|
|
||||||
pass_date=$(
|
pass_date=$(
|
||||||
${git}/bin/git -C ${quote pass.dir} log -1 --format=%aI "$gpg_path"
|
${git}/bin/git -C ${quote source.dir} log -1 --format=%aI "$gpg_path"
|
||||||
)
|
)
|
||||||
pass_name=${quote pass.name}/$rel_name
|
pass_name=${quote source.name}/$rel_name
|
||||||
tmp_path=$tmp_dir/$rel_name
|
tmp_path=$tmp_dir/$rel_name
|
||||||
|
|
||||||
${coreutils}/bin/mkdir -p "$(${coreutils}/bin/dirname "$tmp_path")"
|
${coreutils}/bin/mkdir -p "$(${coreutils}/bin/dirname "$tmp_path")"
|
||||||
PASSWORD_STORE_DIR=${quote pass.dir} pass show "$pass_name" > "$tmp_path"
|
PASSWORD_STORE_DIR=${quote source.dir} ${pass}/bin/pass show "$pass_name" > "$tmp_path"
|
||||||
${coreutils}/bin/touch -d "$pass_date" "$tmp_path"
|
${coreutils}/bin/touch -d "$pass_date" "$tmp_path"
|
||||||
done
|
done
|
||||||
|
|
||||||
${rsync' target /* sh */ "$tmp_dir"}
|
${rsync' target /* sh */ "$tmp_dir"}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
pop.pipe = target: pipe: /* sh */ ''
|
pop.pipe = target: source: /* sh */ ''
|
||||||
${quote pipe.command} | {
|
${quote source.command} | {
|
||||||
${shell' target /* sh */ "cat > ${quote target.path}"}
|
${shell' target /* sh */ "cat > ${quote target.path}"}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# TODO rm -fR instead of ln -f?
|
# TODO rm -fR instead of ln -f?
|
||||||
pop.symlink = target: symlink: shell' target /* sh */ ''
|
pop.symlink = target: source: shell' target /* sh */ ''
|
||||||
ln -fns ${quote symlink.target} ${quote target.path}
|
ln -fns ${quote source.target} ${quote target.path}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
populate = target: name: source: let
|
populate = target: name: source: let
|
||||||
|
|
Loading…
Reference in a new issue