X-Git-Url: https://plomlompom.com/repos/?p=redo-blog;a=blobdiff_plain;f=processor%2Ffeed.xml.do;h=eed86ed353a327063311d59b7eb5aebe01e09910;hp=717fa89c9590c96afdb645f4860288649e2e4067;hb=2ae432349212cc00c3df9935a04edecc1f551241;hpb=a1eaed02a2a373d149239952dc515b759044d5c1 diff --git a/processor/feed.xml.do b/processor/feed.xml.do index 717fa89..eed86ed 100644 --- a/processor/feed.xml.do +++ b/processor/feed.xml.do @@ -4,22 +4,23 @@ . ./helpers.sh metadata_dir=metadata author_file="$metadata_dir"/author -uuid_file="$metadata_dir"/uuid +meta_file="$metadata_dir"/automatic_metadata title_file="$metadata_dir"/title url_file="$metadata_dir"/url redo-ifchange "$url_file" redo-ifchange "$author_file" -redo-ifchange "$uuid_file" +redo-ifchange "$meta_file" redo-ifchange "$title_file" # Build some variables. XML-escape even file contents that should not contain # dangerous characters, just to avoid any XML trouble. -srcdir=`pwd` -basepath=$(get_basepath "${metadata_dir}/") -title=`read_and_escape_file "$title_file" | head -1` -author=`read_and_escape_file "$author_file" | head -1` -uuid=`read_and_escape_file "$uuid_file" | head -1` +srcdir=$(pwd) tmp_snippets_dir=.tmp_feed_snippets +basepath=$(get_basepath "${metadata_dir}/") +title=$(read_and_escape_file "$title_file" | head -1) +author=$(read_and_escape_file "$author_file" | head -1) +uuid=$(get_uuid_from_meta_file "$meta_file") +feed_gen_date=$(get_creation_date_from_meta_file_seconds "$meta_file") # Write majority of feed head. cat << EOF @@ -36,27 +37,30 @@ printf "urn:uuid:%s\n" "$uuid" mkdir -p "$tmp_snippets_dir" for file in ./*.rst ./*.md; do if [ -e "$file" ]; then - uuid_file="${metadata_dir}/${file%.*}.uuid" - redo-ifchange "$uuid_file" - published=`stat -c%y "${uuid_file}"` - published_unix=$(date -u "+%s%N" -d "${published}") + meta_file="${metadata_dir}/${file%.*}.automatic_metadata" + redo-ifchange "$meta_file" + published=$(get_creation_date_from_meta_file_nanoseconds "$meta_file") snippet_file=./${metadata_dir}/"${file%.*}.feed_snippet" redo-ifchange "$snippet_file" - ln -s "$srcdir/$snippet_file" "./${tmp_snippets_dir}/${published_unix}" + ln -s "$srcdir/$snippet_file" "./${tmp_snippets_dir}/${published}" fi done -# Derive feed modification date from snippets. -mod_dates=$(grep -hE "^" ./${metadata_dir}/*.feed_snippet | sed -E 's/<.?updated>//g') -last_mod_unix=0 +# Derive feed modification date from snippets. Fallback to blog creation date. +n_snippet_files=`ls -1 ./${metadata_dir}/*.feed_snippet 2>/dev/null | wc -l` +if [ $n_snippet_files != 0 ] +then + mod_dates=$(grep -hE "^" ./${metadata_dir}/*.feed_snippet | sed -E 's/<.?updated>//g') +fi +last_mod_unix=$feed_gen_date for date in $mod_dates; do date_unix=$(date -u "+%s" -d "${date}") if [ "$date_unix" -gt "$last_mod_unix" ]; then last_mod_unix=$date_unix fi done -lastmod_rfc3339=`date -u "+%Y-%m-%dT%TZ" -d "@${last_mod_unix}"` -printf "%s\n\n" "$lastmod_rfc3339" +last_mod_rfc3339=`date -u "+%Y-%m-%dT%TZ" -d "@${last_mod_unix}"` +printf "%s\n\n" "$last_mod_rfc3339" # Write feed entries. for file in ./${tmp_snippets_dir}/*; do