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 }