главная|main page

состояние|status

блог|blog

файлы|files

программы|software

summaryrefslogtreecommitdiff
path: root/bb.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bb.sh')
-rwxr-xr-xbb.sh47
1 files changed, 31 insertions, 16 deletions
diff --git a/bb.sh b/bb.sh
index 144f9b9..23bdab6 100755
--- a/bb.sh
+++ b/bb.sh
@@ -29,7 +29,7 @@ global_config=".config"
# by the 'global_config' file contents
global_variables() {
global_software_name="BashBlog"
- global_software_version="2.6"
+ global_software_version="2.7"
# Blog title
global_title="My fancy blog"
@@ -136,10 +136,14 @@ global_variables() {
template_twitter_button="Tweet"
template_twitter_comment="<Type your comment here but please leave the URL so that other people can follow the comments>"
- # The locale to use for the dates displayed on screen (not for the timestamps)
+ # The locale to use for the dates displayed on screen
date_format="%B %d, %Y"
- date_allposts_header="%B %Y"
date_locale="C"
+ date_inpost="bashblog_timestamp"
+ # Don't change these dates
+ date_format_full="%a, %d %b %Y %H:%M:%S %z"
+ date_format_timestamp="%Y%m%d%H%M.%S"
+ date_allposts_header="%B %Y"
# Perform the post title -> filename conversion
# Experts only. You may need to tune the locales too
@@ -285,9 +289,10 @@ invoke_editor() {
# "full" to edit full HTML, and not only text part (keeps old filename)
# leave empty for default behavior (edit only text part and change name)
edit() {
+ [[ ! -f "${1%%.*}.html" ]] && echo "Can't edit post "${1%%.*}.html", did you mean to use \"bb.sh post <draft_file>\"?" && exit -1
# Original post timestamp
- edit_timestamp=$(LC_ALL=C date -r "${1%%.*}.html" +"%a, %d %b %Y %H:%M:%S %z" )
- touch_timestamp=$(LC_ALL=C date -r "${1%%.*}.html" +'%Y%m%d%H%M')
+ edit_timestamp=$(LC_ALL=C date -r "${1%%.*}.html" +"$date_format_full" )
+ touch_timestamp=$(LC_ALL=C date -r "${1%%.*}.html" +"$date_format_timestamp")
tags_before=$(tags_in_post "${1%%.*}.html")
if [[ $2 == full ]]; then
invoke_editor "$1"
@@ -323,6 +328,7 @@ edit() {
rm "$TMPFILE"
fi
touch -t "$touch_timestamp" "$filename"
+ touch -t "$touch_timestamp" "$1"
chmod 644 "$filename"
echo "Posted $filename"
tags_after=$(tags_in_post "$filename")
@@ -454,11 +460,17 @@ create_html_page() {
echo "$title"
echo '</a></h3>'
if [[ -z $timestamp ]]; then
- echo "<div class=\"subtitle\">$(LC_ALL=$date_locale date +"$date_format") &mdash; "
+ echo "<!-- $date_inpost: #$(LC_ALL=$date_locale date +"$date_format_timestamp")# -->"
+ else
+ echo "<!-- $date_inpost: #$(LC_ALL=$date_locale date +"$date_format_timestamp" --date="$timestamp")# -->"
+ fi
+ if [[ -z $timestamp ]]; then
+ echo -n "<div class=\"subtitle\">$(LC_ALL=$date_locale date +"$date_format")"
else
- echo "<div class=\"subtitle\">$(LC_ALL=$date_locale date +"$date_format" --date="$timestamp") &mdash; "
+ echo -n "<div class=\"subtitle\">$(LC_ALL=$date_locale date +"$date_format" --date="$timestamp")"
fi
- echo "$author</div>"
+ [[ -n $author ]] && echo -e " &mdash; \n$author"
+ echo "</div>"
echo '<!-- text begin -->' # This marks the text body, after the title, date...
fi
cat "$content" # Actual content
@@ -900,7 +912,7 @@ make_rss() {
while [[ -f $rssfile ]]; do rssfile=$blog_feed.$RANDOM; done
{
- pubdate=$(LC_ALL=C date +"%a, %d %b %Y %H:%M:%S %z")
+ pubdate=$(LC_ALL=C date +"$date_format_full")
echo '<?xml version="1.0" encoding="UTF-8" ?>'
echo '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">'
echo "<channel><title>$global_title</title><link>$global_url/$index_file</link>"
@@ -921,7 +933,7 @@ make_rss() {
echo "]]></description><link>$global_url/${i#./}</link>"
echo "<guid>$global_url/$i</guid>"
echo "<dc:creator>$(get_post_author "$i")</dc:creator>"
- echo "<pubDate>$(LC_ALL=C date -r "$i" +"%a, %d %b %Y %H:%M:%S %z")</pubDate></item>"
+ echo "<pubDate>$(LC_ALL=C date -r "$i" +"$date_format_full")</pubDate></item>"
n=$(( n + 1 ))
done
@@ -989,6 +1001,7 @@ create_css() {
#description{font-size:large;margin-bottom:12px;}
h3{margin-top:42px;margin-bottom:8px;}
h4{margin-left:24px;margin-right:24px;}
+ img{max-width:100%;}
#twitter{line-height:20px;vertical-align:top;text-align:right;font-style:italic;color:#333;margin-top:24px;font-size:14px;}' > blog.css
fi
@@ -1022,8 +1035,7 @@ create_css() {
rebuild_all_entries() {
echo -n "Rebuilding all entries "
- for i in $(set +f; printf '%s\n' *.html) # no need to sort
- do
+ for i in $(set +f; printf '%s\n' *.html); do
is_boilerplate_file "$i" && continue;
contentfile=.tmp.$RANDOM
while [[ -f $contentfile ]]; do contentfile=.tmp.$RANDOM; done
@@ -1034,12 +1046,15 @@ rebuild_all_entries() {
get_html_file_content 'text' 'text' <"$i" >> "$contentfile"
- # Original post timestamp
- timestamp=$(LC_ALL=C date -r "$i" +"%a, %d %b %Y %H:%M:%S %z" )
+ # Read timestamp from post, if present, and sync file timestamp
+ timestamp=$(awk '/<!-- '$date_inpost': .+ -->/ { print }' "$i" | cut -d '#' -f 2)
+ [[ -n $timestamp ]] && touch -t "$timestamp" "$i"
+ # Read timestamp from file in correct format for 'create_html_page'
+ timestamp=$(LC_ALL=C date -r "$i" +"$date_format_full")
create_html_page "$contentfile" "$i.rebuilt" no "$title" "$timestamp" "$(get_post_author "$i")"
# keep the original timestamp!
- timestamp=$(LC_ALL=C date -r "$i" +'%Y%m%d%H%M')
+ timestamp=$(LC_ALL=C date -r "$i" +"$date_format_timestamp")
mv "$i.rebuilt" "$i"
chmod 644 "$i"
touch -t "$timestamp" "$i"
@@ -1103,7 +1118,7 @@ date_version_detect() {
stat -f "%Sm" -t "$format" "$2"
elif [[ $2 == --date* ]]; then
# convert between dates using BSD date syntax
- command date -j -f "%a, %d %b %Y %H:%M:%S %z" "${2#--date=}" "$1"
+ command date -j -f "$date_format_full" "${2#--date=}" "$1"
else
# acceptable format for BSD date
command date -j "$@"