blog-sort-languages.nix (1165B)
1 { 2 pkgs, 3 domain, 4 ... 5 }: let 6 blog-sort-languages = pkgs.writeShellScriptBin "blog-sort-languages" '' 7 # functions 8 function lastmod { 9 echo -n "Amending lastmod value... " 10 mod_timestamp="$(date +%FT%H:%M:00)" 11 sed -i "s/lastmod: .*/lastmod: $mod_timestamp/g" "$1" 12 echo -e "$i \e[32mdone\e[39m" 13 } 14 for i in $HOME/vault/src/blog.${domain}/content/languages/*; do 15 if [[ "$i" = *index.md ]]; then continue; fi # there's probably a better way of doing this, but I can't figure it out 16 echo -n "Processing $(basename "$i")... " 17 shasum_original="$(sha512sum "$i" | awk '{print $1}')" 18 file_header="$(head -n 8 "$i")" 19 file_body="$(tail -n +9 "$i" | sort | uniq -i)" 20 { 21 printf "%s\n" "$file_header" 22 printf "%s" "$file_body" 23 } >"$i" 24 shasum_modified="$(sha512sum "$i" | awk '{print $1}')" 25 if [[ "$shasum_original" != "$shasum_modified" ]]; then 26 lastmod "$i" 1>/dev/null 27 echo -e "\e[32mmodified\e[39m" 28 else 29 echo -e "\e[33munmodified\e[39m" 30 fi 31 done 32 ''; 33 in { 34 environment.systemPackages = [blog-sort-languages]; 35 }