nix-configs

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

blog-sort-archives.nix (2019B)


      1 {
      2   pkgs,
      3   domain,
      4   ...
      5 }: let
      6   blog-sort-archives = pkgs.writeShellScriptBin "blog-sort-archives" ''
      7     # variables
      8     movies_export="$HOME/vault/src/blog.${domain}/content/posts/archived-movies.md"
      9     tvshows_export="$HOME/vault/src/blog.${domain}/content/posts/archived-television.md"
     10     # functions
     11     function lastmod {
     12       echo -n "Amending lastmod value... "
     13       mod_timestamp="$(date +%FT%H:%M:00)"
     14       sed -i "s/lastmod: .*/lastmod: $mod_timestamp/g" "$1"
     15       echo -e "$i \e[32mdone\e[39m"
     16     }
     17     # process
     18     movies_shasum_original="$(sha512sum "$movies_export" | awk '{print $1}')"
     19     movie_header="$(grep -v "^*" "$movies_export")"
     20     movies_raw="$(grep "^*" "$movies_export")"
     21     echo -n "Writing movies export... "
     22     {
     23       printf "%s\n" "$movie_header"
     24       printf "%s\n" "$movies_raw" | paste <( printf "%s\n" "$movies_raw" | sed 's/^\* //' | sed -E 's/^(The|A|An) //I' ) - | sort -f | cut -f2
     25     } >"$movies_export"
     26     movies_shasum_modified="$(sha512sum "$movies_export" | awk '{print $1}')"
     27 	if [[ "$movies_shasum_original" != "$movies_shasum_modified" ]]; then
     28 		lastmod "$movies_export" 1>/dev/null
     29 		echo -e "\e[32mmodified\e[39m"
     30 	else
     31 		echo -e "\e[33munmodified\e[39m"
     32 	fi
     33     # tv shows
     34     tvshows_shasum_original="$(sha512sum "$tvshows_export" | awk '{print $1}')"
     35     tvshows_header="$(grep -v "^*" "$tvshows_export")"
     36     tvshows_raw="$(grep "^*" "$tvshows_export")"
     37     echo -n "Writing TV shows export... "
     38     {
     39       printf "%s\n" "$tvshows_header"
     40       printf "%s\n" "$tvshows_raw" | paste <( printf "%s\n" "$tvshows_raw" | sed 's/^\* //' | sed -E 's/^(The|A|An) //I' ) - | sort -f | cut -f2
     41     } >"$tvshows_export"
     42     tvshows_shasum_modified="$(sha512sum "$tvshows_export" | awk '{print $1}')"
     43 	if [[ "$tvshows_shasum_original" != "$tvshows_shasum_modified" ]]; then
     44 		lastmod "$tvshows_export" 1>/dev/null
     45 		echo -e "\e[32mmodified\e[39m"
     46 	else
     47 		echo -e "\e[33munmodified\e[39m"
     48 	fi
     49   '';
     50 in {
     51   environment.systemPackages = [blog-sort-archives];
     52 }