static-httpd

Sitio web estático (HTML + CSS) que sostiene el blog del autor
Log | Files | Refs

diff-to-html.sh (1171B)


      1 #!/bin/bash
      2 # diff-to-html.sh
      3 # Uso: ./diff-to-html.sh archivo.diff
      4 
      5 if [ -z "$1" ]; then
      6     echo "Uso: $0 <archivo.diff>"
      7     exit 1
      8 fi
      9 
     10 if [ ! -f "$1" ]; then
     11     echo "Error: El archivo '$1' no existe."
     12     exit 1
     13 fi
     14 
     15 cat << 'EOF'
     16 <pre><code class="diff">
     17 EOF
     18 
     19 while IFS= read -r line || [ -n "$line" ]; do
     20     # Convertir tabs a espacios (importante para indentación)
     21     line="${line//$'\t'/    }"
     22 
     23     # Escapar HTML
     24     escaped="${line//&/&amp;}"
     25     escaped="${escaped//</&lt;}"
     26     escaped="${escaped//>/&gt;}"
     27 
     28     if [[ $line == From\ * ]] || \
     29        [[ $line == Date:\ * ]] || \
     30        [[ $line == Subject:\ * ]] || \
     31        [[ $line == diff\ --git* ]] || \
     32        [[ $line == index\ * ]] || \
     33        [[ $line == ---\ * ]] || \
     34        [[ $line == +++\ * ]]; then
     35         echo "<span class=\"info\">$escaped</span>"
     36 
     37     elif [[ $line == @@* ]]; then
     38         echo "<span class=\"hunk\">$escaped</span>"
     39 
     40     elif [[ $line == +* ]]; then
     41         echo "<span class=\"add\">$escaped</span>"
     42 
     43     elif [[ $line == -* ]]; then
     44         echo "<span class=\"del\">$escaped</span>"
     45 
     46     else
     47         echo "$escaped"
     48     fi
     49 done < "$1"
     50 
     51 cat << 'EOF'
     52 </code></pre>
     53 EOF