nix-configs

Personal NixOS and home-manager configuration files
Log | Files | Refs

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 }