[download]

local/bin/lexguy

   1 #!/bin/bash
   2 #         ▓███████
   3 #       ▓███████       D O T F I L E S
   4 #       ▓███████         L E X G U Y
   5 #    ▓█████████████
   6 #       ▓███████       LGPL <http://www.gnu.org/licenses/>
   7 #       ▓███████     © 2020 Alexey Gagin <http://www.lexa.by/dotfiles/>
   8 #       ▓██  ▓██
   9 
  10 f=~/.cache/lexguy && rm -f $f
  11 
  12 name=${1,,}
  13 Name=$(echo "$name" | sed 's/./ \u\0/g')
  14 
  15 file=$2
  16 File=$(echo "${file##*/}" | sed 's/./ \u\0/g')
  17 
  18 ################################################################################
  19 
  20 year=$(git log --format=%cs "$file" | tail -n -1 | cut -d - -f 1)
  21 Year=$(git log --format=%cs "$file" | head -n  1 | cut -d - -f 1)
  22 
  23 [[ $year != $Year ]] && year+=-$Year
  24 
  25 [[ ! $year ]] && year=$(date +%Y -r "$file")
  26 [[ ! $year ]] && year=$(date +%Y)
  27 
  28 ################################################################################
  29 
  30 line=1
  31 bang=$(head -c 2 "$file")
  32 
  33 [[ $bang == '#!' ]] && line=2
  34 [[ $bang == '<!' ]] && line=2
  35 [[ $bang == '<?' ]] && line=2
  36 
  37 ################################################################################
  38 
  39 case ${file##*.} in
  40      lua) comm=--;;
  41      css) comm=' *';;
  42     html) comm=' !';;
  43      xml) comm=' !';;
  44      svg) comm=' !';;
  45        c) comm=//;;
  46        h) comm=//;;
  47      php) comm=//;;
  48       js) comm=//;;
  49        *) comm=\#;;
  50 esac
  51 
  52 comm=$(printf '%-2s' "$comm")
  53 
  54 ################################################################################
  55 
  56 case ${file##*.} in
  57     svg) perm='CC BY-SA <http://www.creativecommons.org/licenses/>';;
  58       *) perm='LGPL <http://www.gnu.org/licenses/>';;
  59 esac
  60 
  61 ################################################################################
  62 
  63 a=${#Name} b=${#File}
  64 c=$(( a - b )) c=${c#-}
  65 
  66 (( a > b )) && d=$(( a - c / 2 ))
  67 (( b > a )) && d=$(( b - c / 2 ))
  68 (( d > 2 )) || d=1
  69 
  70 Name=$(printf "%${d}s" "$Name")
  71 File=$(printf "%${d}s" "$File")
  72 
  73 ################################################################################
  74 
  75 [[ $line == 1 ]] && echo > $f
  76 
  77 # █▓▒░
  78 cat <<GUY >> $f
  79 $comm        ▓███████
  80 $comm      ▓███████      $Name
  81 $comm      ▓███████      $File
  82 $comm   ▓█████████████
  83 $comm      ▓███████       $perm
  84 $comm      ▓███████     © $year Alexey Gagin <http://www.lexa.by/$name/>
  85 $comm      ▓██  ▓██
  86 GUY
  87 
  88 [[ $bang == '<!' ]] && echo >> $f
  89 [[ $bang == '<?' ]] && echo >> $f
  90 
  91 ################################################################################
  92 
  93 [[ ! -f $file ]] && cat $f && exit
  94 
  95 grep -q '███████'        "$file" ||
  96 sed  -i "$line e cat $f" "$file"