[rancid] html colorized mail diffs

nachofw nachofw at adinet.com.uy
Sat Jan 30 01:45:52 UTC 2016


Hi guys, im trying to send colorized mails diffs from rancid.I’ve found a very nice bash script that converts the output from diff to html. Can anyone help me make it work with rancid? So far I have tried this config with no succes:MAILHEADERS="Content-Type: text/html; charset=ISO-8859-1"; export MAILHEADERSDIFFSCRIPT="diff2html"; export DIFFSCRIPT The script which works perfectly from command line: #!/bin/bash## Convert diff output to colorized HTML. cat <<XX<html><head><title>Colorized Diff</title></head><style>.diffdiv  { border: solid 1px black;           }.comment  { color: gray;                       }.diff     { color: #8A2BE2;                    }.minus3   { color: blue;                       }.plus3    { color: maroon;                     }.at2      { color: lime;                       }.plus     { color: green; background: #E7E7E7; }.minus    { color: red;   background: #D7D7D7; }.only     { color: purple;                     }</style><body><pre>XX echo -n '<span class="comment">' first=1diffseen=0lastonly=0 OIFS=$IFSIFS='' # The -r option keeps the backslash from being an escape char.read -r s while [[ $? -eq 0 ]]do    # Get beginning of line to determine what type    # of diff line it is.    t1=${s:0:1}    t2=${s:0:2}    t3=${s:0:3}    t4=${s:0:4}    t7=${s:0:7}     # Determine HTML class to use.    if    [[ "$t7" == 'Only in' ]]; then        cls='only'        if [[ $diffseen -eq 0 ]]; then            diffseen=1            echo -n '</span>'        else            if [[ $lastonly -eq 0 ]]; then                echo "</div>"            fi        fi        if [[ $lastonly -eq 0 ]]; then            echo "<div class='diffdiv'>"        fi        lastonly=1    elif [[ "$t4" == 'diff' ]]; then        cls='diff'        if [[ $diffseen -eq 0 ]]; then            diffseen=1            echo -n '</span>'        else            echo "</div>"        fi        echo "<div class='diffdiv'>"        lastonly=0    elif  [[ "$t3" == '+++'  ]]; then        cls='plus3'        lastonly=0    elif  [[ "$t3" == '---'  ]]; then        cls='minus3'        lastonly=0    elif  [[ "$t2" == '@@'   ]]; then        cls='at2'        lastonly=0    elif  [[ "$t1" == '+'    ]]; then        cls='plus'        lastonly=0    elif  [[ "$t1" == '-'    ]]; then        cls='minus'        lastonly=0    else        cls=        lastonly=0    fi     # Convert &, <, > to HTML entities.    s=$(sed -e 's/\&/\&/g' -e 's/</\</g' -e 's/>/\>/g' <<<"$s")    if [[ $first -eq 1 ]]; then        first=0    else        echo    fi     # Output the line.    if [[ "$cls" ]]; then        echo -n '<span class="'${cls}'">'${s}'</span>'    else        echo -n ${s}    fi    read -r sdoneIFS=$OIFS if [[ $diffseen -eq 0  &&  $onlyseen -eq 0 ]]; then     echo -n '</span>'else    echo "</div>"fiecho cat <<XX</pre></body></html>XX # vim: tabstop=4: shiftwidth=4: noexpandtab:# kate: tab-width 4; indent-width 4; replace-tabs false;  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.shrubbery.net/pipermail/rancid-discuss/attachments/20160129/f4457566/attachment.html>


More information about the Rancid-discuss mailing list