shithub: werc

ref: 3e632e8d708e5038a318f9f4525cb96916b7359b
dir: /bin/fproc_cache.rc/

View raw version
#!/usr/bin/env rc
#. 9.rc # Not really needed when calling from werc, only would be needed if you use fproc_cache.rc standalone
# TODO: Allow to provide two arguments, second arg is a file name, use filename+size+mtime for hashing.
#    Useful when dealing with many big files (eg., thumb gallery generation).

proc=$1
tmpfile=/tmp/fmttmp.$pid
score=`{{tee $tmpfile || exit 1} | sha1sum}

cachedir=/tmp/fproc_cache/$score
mkdir -p $cachedir >[2]/dev/null

if(test -s $cachedir/$proc)
    cat $cachedir/$proc
if not
    if($proc < $tmpfile | tee $cachedir/$pid)
        mv $cachedir/$pid $cachedir/$proc

rm $tmpfile $cachedir/$pid >[2]/dev/null &