pkgs: add drone-rsync
A very simple wrapper script that I will migrate to, since 'drone-scp' does not work for me anymore.
This commit is contained in:
parent
7e4e41a07f
commit
9c80bc07b9
|
@ -12,6 +12,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: {
|
|||
|
||||
dragger = pkgs.callPackage ./dragger { };
|
||||
|
||||
drone-rsync = pkgs.callPackage ./drone-rsync { };
|
||||
|
||||
drone-scp = pkgs.callPackage ./drone-scp { };
|
||||
|
||||
ff2mpv-go = pkgs.callPackage ./ff2mpv-go { };
|
||||
|
|
43
pkgs/drone-rsync/default.nix
Normal file
43
pkgs/drone-rsync/default.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{ lib, makeWrapper, openssh, rsync, shellcheck, sshpass, stdenvNoCC }:
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "drone-rsync";
|
||||
version = "0.1.0";
|
||||
|
||||
src = ./drone-rsync;
|
||||
|
||||
buildInputs = [
|
||||
makeWrapper
|
||||
shellcheck
|
||||
];
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
buildPhase = ''
|
||||
shellcheck $src
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp $src $out/bin/${pname}
|
||||
chmod a+x $out/bin/${pname}
|
||||
'';
|
||||
|
||||
wrapperPath = lib.makeBinPath [
|
||||
openssh
|
||||
rsync
|
||||
sshpass
|
||||
];
|
||||
|
||||
fixupPhase = ''
|
||||
patchShebangs $out/bin/${pname}
|
||||
wrapProgram $out/bin/${pname} --prefix PATH : "${wrapperPath}"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Helper script to run rsync in a CI pipeline";
|
||||
homepage = "https://gitea.belanyi.fr/ambroisie/nix-config";
|
||||
license = with licenses; [ mit ];
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ ambroisie ];
|
||||
};
|
||||
}
|
31
pkgs/drone-rsync/drone-rsync
Executable file
31
pkgs/drone-rsync/drone-rsync
Executable file
|
@ -0,0 +1,31 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ARGS=(
|
||||
# Show readable progress in log
|
||||
--verbose
|
||||
--human-readable
|
||||
--progress
|
||||
# Have a one-to-one copy
|
||||
--archive
|
||||
--compress
|
||||
--recursive
|
||||
--delete
|
||||
# Configure ssh client
|
||||
--rsh "ssh -p ${SYNC_PORT:-22} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
||||
)
|
||||
|
||||
eval "$(ssh-agent)"
|
||||
SSHPASS="${SYNC_PASSPHRASE:-}" sshpass -P 'passphrase' -v -e ssh-add <(echo "${SYNC_KEY}")
|
||||
|
||||
if [ -n "${SYNC_DRY_RUN:-}" ]; then
|
||||
ARGS+=(--dry-run)
|
||||
fi
|
||||
|
||||
# shellcheck disable=2086
|
||||
# FIXME: have a safer way to allow globbing the source
|
||||
rsync \
|
||||
"${ARGS[@]}" \
|
||||
${SYNC_SOURCE} \
|
||||
"${SYNC_USERNAME}@${SYNC_HOST}:${SYNC_TARGET}"
|
Loading…
Reference in a new issue