瀏覽代碼

Reverted date commands to GNU Date commands
Added detection of date version. Tries to use gdate

Carlos Bautista 12 年之前
父節點
當前提交
cae7d16376
共有 1 個文件被更改,包括 30 次插入22 次删除
  1. 30 22
      bb.sh

+ 30 - 22
bb.sh

@@ -152,8 +152,6 @@ global_variables() {
     # The locale to use for the dates displayed on screen (not for the timestamps)
     date_format="%B %d, %Y"
     date_locale="C"
-    # Date options which work on both BSD and GNU date variants
-    date_R='+%a, %d %h %Y %H:%M:%S %z'
 }
 
 # Prints the required google analytics code
@@ -184,8 +182,7 @@ google_analytics() {
 #
 # $1 	the file to edit
 edit() {
-    # timestamp="$(date -r $1 +'%Y%m%d%k%M')"
-    timestamp="$(stat -f "%Sm" -t  '%Y%m%d%k%M' $1)"
+    timestamp="$(date -r $1 +'%Y%m%d%k%M')"
     $EDITOR "$1"
     touch -t $timestamp "$1"
 }
@@ -246,11 +243,9 @@ create_html_page() {
         echo "$title" >> "$filename"
         echo '</a></h3>' >> "$filename"
         if [ "$timestamp" == "" ]; then
-            # echo '<div class="subtitle">'$(LC_ALL=date_locale date +"$date_format")' &mdash; ' >> "$filename"
-            echo '<div class="subtitle">'$(date "$date_R")' &mdash; ' >> "$filename"
+            echo '<div class="subtitle">'$(LC_ALL=date_locale date +"$date_format")' &mdash; ' >> "$filename"
         else
-            # echo '<div class="subtitle">'$(LC_ALL=date_locale date +"$date_format" --date="$timestamp") ' &mdash; ' >> "$filename"
-            echo '<div class="subtitle">'"$timestamp"' &mdash; ' >> "$filename"
+            echo '<div class="subtitle">'$(LC_ALL=date_locale date +"$date_format" --date="$timestamp") ' &mdash; ' >> "$filename"
         fi
         echo "$global_author</div>" >> "$filename"
         echo '<!-- text begin -->' >> "$filename" # This marks the text body, after the title, date...
@@ -381,8 +376,7 @@ all_posts() {
         title="$(awk '/<h3><a class="ablack" href=".+">/, /<\/a><\/h3>/{if (!/<h3><a class="ablack" href=".+">/ && !/<\/a><\/h3>/) print}' $i)"
         echo -n '<li><a href="'$global_url/$i'">'$title'</a> &mdash;' >> "$contentfile"
         # Date
-        #date="$(LC_ALL=date_locale date -r "$i" +"$date_format")"
-        date="$(stat -f "%Sm" -t "%a, %d %h %Y %H:%M:%S %z")"
+        date="$(LC_ALL=date_locale date -r "$i" +"$date_format")"
         echo " $date</li>" >> "$contentfile"
     done
     echo ""
@@ -441,7 +435,7 @@ list_posts() {
     n=1
     for i in $(ls -t *.html); do
         if [ "$i" == "$index_file" ] || [ "$i" == "$archive_index" ]; then continue; fi
-        line="$n # $(awk '/<h3><a class="ablack" href=".+">/, /<\/a><\/h3>/{if (!/<h3><a class="ablack" href=".+">/ && !/<\/a><\/h3>/) print}' $i) # $(stat -f "%Sm" -t "%a, %d %h %Y %H:%M:%S %z"   $i)"
+        line="$n # $(awk '/<h3><a class="ablack" href=".+">/, /<\/a><\/h3>/{if (!/<h3><a class="ablack" href=".+">/ && !/<\/a><\/h3>/) print}' $i) # $(LC_ALL=date_locale date -r $i +"date_format")"
         lines="${lines}""$line""\n" # Weird stuff needed for the newlines
         n=$(( $n + 1 ))
     done 
@@ -460,8 +454,8 @@ make_rss() {
     echo '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">' >> "$rssfile"
     echo '<channel><title>'$global_title'</title><link>'$global_url'</link>' >> "$rssfile"
     echo '<description>'$global_description'</description><language>en</language>' >> "$rssfile"
-    echo '<lastBuildDate>'$(date "$date_R")'</lastBuildDate>' >> "$rssfile"
-    echo '<pubDate>'$(date "$date_R")'</pubDate>' >> "$rssfile"
+    echo '<lastBuildDate>'$(date -R)'</lastBuildDate>' >> "$rssfile"
+    echo '<pubDate>'$(date -R)'</pubDate>' >> "$rssfile"
     echo '<atom:link href="'$global_url/$blog_feed'" rel="self" type="application/rss+xml" />' >> "$rssfile"
 
     n=0
@@ -477,9 +471,8 @@ make_rss() {
         echo "]]></description><link>$global_url/$i</link>" >> "$rssfile"
         echo "<guid>$global_url/$i</guid>" >> "$rssfile"
         echo "<dc:creator>$global_author</dc:creator>" >> "$rssfile"
+        echo '<pubDate>'$(date -r "$i" -R)'</pubDate></item>' >> "$rssfile"
 
-        #echo '<pubDate>'$(date -r "$i" -R)'</pubDate></item>' >> "$rssfile"
-        echo '<pubDate>'$(stat -f "%Sm" -t "%a, %d %h %Y %H:%M:%S %z"  "$i" )'</pubDate></item>' >> "$rssfile"
         n=$(( $n + 1 ))
     done
 
@@ -575,13 +568,11 @@ rebuild_all_entries() {
         awk '/<!-- text begin -->/, /<!-- text end -->/{if (!/<!-- text begin -->/ && !/<!-- text end -->/) print}' "$i" >> "$contentfile"
 
         # Original post timestamp
+        timestamp="$(date -R -r $i)"
 
-        #timestamp="$(date -R -r $i)"
-        timestamp="$(stat -f "%Sm" -t "%a, %d %h %Y %H:%M:%S %z" $i)"
         create_html_page "$contentfile" "$i.rebuilt" no "$title" "$timestamp"
         # keep the original timestamp!
-        #timestamp="$(date -r $i +'%Y%m%d%k%M')"
-        timestamp="$(stat -f "%Sm" -t  '%Y%m%d%k%M' $i)"
+        timestamp="$(date -r $i +'%Y%m%d%k%M')"
         mv "$i.rebuilt" "$i"
         chmod 644 "$i"
         touch -t $timestamp "$i"
@@ -621,14 +612,31 @@ reset() {
     fi
 }
 
+date_version_detect() {
+	if !(date --version >/dev/null 2>&1)  ; then
+		# date utility is BSD. Test if gdate is installed 
+		if gdate --version >/dev/null 2>&1 ; then
+                   alias date=gdate
+		   echo Using gdate.
+		else
+		   echo ERROR: Not GNU date found.
+		   echo Try installing gdate utility or coreutils.
+		   echo Exiting...
+		   exit
+		fi
+	fi    
+}
+
 # Main function
 # Encapsulated on its own function for readability purposes
 #
 # $1     command to run
 # $2     file name of a draft to continue editing (optional)
 do_main() {
+    # Detect if using BSD date or GNU date
+    date_version_detect
     # Use config file or fallback to inline configuration
-    source "$global_config" ||  global_variables
+    source "$global_config" &> /dev/null ||  global_variables
 
     # Check for $EDITOR
     if [[ -z "$EDITOR" ]]; then
@@ -663,8 +671,8 @@ do_main() {
     # We're going to back up just in case
     ls *.html &> /dev/null
     if [[ $? -eq 0 ]]; then
-    tar cfz ".backup.tar.gz" *.html
-    chmod 600 ".backup.tar.gz"
+        tar cfz ".backup.tar.gz" *.html
+        chmod 600 ".backup.tar.gz"
     fi
 
     if [ "$1" == "reset" ]; then