summaryrefslogtreecommitdiff
path: root/hel
diff options
context:
space:
mode:
Diffstat (limited to 'hel')
-rw-r--r--hel/recv-media.nix26
1 files changed, 18 insertions, 8 deletions
diff --git a/hel/recv-media.nix b/hel/recv-media.nix
index 06483cdf..bde3e2e8 100644
--- a/hel/recv-media.nix
+++ b/hel/recv-media.nix
@@ -1,16 +1,26 @@
1{ stdenv, coreutils, writeScriptBin, eject, ffmpeg }: 1{ stdenv
2, coreutils
3, writeScriptBin
4, eject
5, notifyUser ? "gkleen"
6, showTitle ? true
7, ffmpeg ? null
8, gnused ? null
9}:
10
11assert showTitle -> ffmpeg != null && gnused != null;
2 12
3writeScriptBin "recv-media" '' 13writeScriptBin "recv-media" ''
4 #!${stdenv.shell} 14 #!${stdenv.shell}
5 15
6 pid=$? 16 pid=$?
7 17
8 exec 1> >(${eject}/bin/logger --id=$pid -t recv-media -p user.notice) 18 export PATH=/var/setuid-wrappers/:${eject}/bin:${coreutils}/bin:${if showTitle then ''${ffmpeg}/bin:${gnused}/bin:'' else ""}$PATH
9 exec 2> >(${eject}/bin/logger --id=$pid -t recv-media -p user.error)
10 19
11 [[ -z "$1" || -z "$2" ]] && exit 2 20 exec 1> >(logger --id=$pid -t recv-media -p user.notice)
21 exec 2> >(logger --id=$pid -t recv-media -p user.error)
12 22
13 PATH=${coreutils}/bin 23 [[ -z "$1" || -z "$2" ]] && exit 2
14 24
15 dir=/var/media 25 dir=/var/media
16 tmpFile="''${dir}"/.tmp/$(basename "$1") 26 tmpFile="''${dir}"/.tmp/$(basename "$1")
@@ -19,13 +29,13 @@ writeScriptBin "recv-media" ''
19 if ! cp -lnv --preserve=all "$1" "''${target}"; then 29 if ! cp -lnv --preserve=all "$1" "''${target}"; then
20 mkdir -pv $(dirname "''${tmpFile}") 30 mkdir -pv $(dirname "''${tmpFile}")
21 31
22 ${eject}/bin/ionice -c 3 -t cp -vn --preserve=all "$1" "''${tmpFile}" && mv -v "''${tmpFile}" "''${target}" 32 ionice -c 3 -t cp -vn --preserve=all "$1" "''${tmpFile}" && mv -v "''${tmpFile}" "''${target}"
23 touch -c -m -t "$2" "''${target}" 33 touch -c -m -t "$2" "''${target}"
24 fi 34 fi
25 35
26 ( 36 (
27 title=$(${ffmpeg}/bin/ffmpeg -i "''${target}" -f ffmetadata 2>/dev/null | sed -r '/^title=/!d; s/^title=//') 37 title=$(ffmpeg -i "''${target}" -f ffmetadata 2>/dev/null | sed -r '/^title=/!d; s/^title=//')
28 [[ -z "''${title}" ]] && title=$(basename "$1") 38 [[ -z "''${title}" ]] && title=$(basename "$1")
29 printf "%s\n%s\n" "''${title}" "" | /var/setuid-wrappers/notify-gkleen -a recv-media || true 39 printf "%s\n%s\n" "''${title}" "" | notify-${notifyUser} -a recv-media || true
30 ) || true 40 ) || true
31'' 41''