From 199e6e727a023bc8a8e1bd217cbfeda5874b2d1a Mon Sep 17 00:00:00 2001 From: Daniel Liu Date: Tue, 5 Jan 2021 22:50:01 -0500 Subject: [PATCH] starting v2 --- README.md | 9 ++--- pb | 118 +++++++++++++----------------------------------------- 2 files changed, 31 insertions(+), 96 deletions(-) diff --git a/README.md b/README.md index 3afba86..f62b3f1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ All you really need is just the pb file, the others are there for demonstration purposes, you can just download that file by itself if you don't want the extra garbage. +This project was inspired by Luke's [lb](https://github.com/LukeSmithxyz/lb). I found it a bit annoying to have to edit the html snippet that gets inserted for new blog posts, so this project abstracts the snippet out as a template file that the user can edit. Of course, that means that this is much more bloated. + # 'Installation' Before running the script, open it up and change the variables at the top of the file to your liking. @@ -7,12 +9,12 @@ You need a couple of things to get the script: - A blog index file (a page with a list of all of your posts) - A rolling blog file (a feed of posts will be placed here) - A rss file +- A template for each blog entry In each of these files, you need to include the comments: ``` - ``` # Usage @@ -25,9 +27,6 @@ Publishes a draft, which means that it takes the html snippet you wrote and shov ### d / delete Deletes an already published blog post, this does not delete your draft. -### b / backup -Simply copies all draft and published blog entries into the backup directory. - ### r / refresh (planned) Used when you change the template file and want to keep all blog entries consistent. It deletes all html files and republishes them all. @@ -38,4 +37,4 @@ You can use certain keywords that will be substituted in: - {{TITLE}} for the title of the blog post - {{DATE}} - {{URL}} pointing to that post -- {{BODY}} the html of that post +- {{BODY}} the html body of the blog post diff --git a/pb b/pb index 5f85f3c..13201c2 100755 --- a/pb +++ b/pb @@ -1,120 +1,56 @@ #!/bin/sh -# pinosaur's blog script +# pinosaur's blog script v2! data_dir="blog" -website_url="https://www.youtube.com/watch?v=oHg5SJYRHA0/" # no ending slash -blog_index_file="blogindex.html" +website_url="https://www.youtube.com/watch?v=oHg5SJYRHA0/" rolling_file="rolling.html" +blog_index_file="blogindex.html" rss_file="rss.xml" blog_template="template.html" -index_template="index_entry.html" -rolling_template="rolling_entry.html" -rss_template="rss_entry.html" - -[ ! -z "$EDITOR" ] && EDITOR="vim" +database_file="$data_dir/database" +index_template="$data_dir/templates/index_entry.html" +rolling_template="$data_dir/templates/rolling_entry.html" +rss_template="$data_dir/templates/rss_entry.html" init() { read -p "Initialize blog here? [y/n] " ask - [ "$ask" != "y" ] && echo "Cancelled init" && exit 0 + [ "$ask" != "y" ] && printf "Initialization cancelled.\n" && exit 0 - mkdir -p "$data_dir/drafts" "$data_dir/published" "$data_dir/html" "$data_dir/templates" "$data_dir/backups" - echo '{{TITLE}}' >> "$data_dir/templates/$index_template" - echo -e '
\n

{{TITLE}}

\n

{{DATE}}

\n

{{BODY}}

\n
' >> "$data_dir/templates/$rolling_template" - echo -e '\n{{TITLE}}\n\n<\description>\n<\item>' \ - >> "$data_dir/templates/$rss_template" + mkdir -p "$data_dir/drafts" "$data_dir/published" "$data_dir/html" "$data_dir/templates" - echo "Successfully created blog files." -} -refresh() { - read -p "Are you sure you want to refresh? [y/n] " ask - [ "$ask" != "y" ] && echo "Aborting..." && exit 0 - - echo -e "$blog_index_file\n$rolling_file\n$rss_file" | xargs sed -i "//,//{//!{//!d}}" - echo "Successfully refreshed." -} + printf '
  • {{DATE}} - {{TITLE}}
  • ' > "$index_template" + printf '
    \n

    {{TITLE}}

    \n

    {{DATE}}

    \n

    {{BODY}}

    \n
    \n' > "$rolling_template" + printf '\n{{TITLE}}\n{{URL}}\n\n{{BODY}}\n\n' > "$rss_template" + touch "$database_file" -backup() { - backup_name=`mktemp --tmpdir="$data_dir/backups" -d "backup_$(date +'%b-%d')_XXX"` - echo "Creating backup, will be placed in $backup_name" - cp -r "$data_dir/drafts/" "$backup_name" - cp -r "$data_dir/published/" "$backup_name" + printf 'Successfully initialized pb.\n' } new() { - [ -z "$1" ] && echo "Please give your blog post a name (you should put it inside quotations)" && exit 1 - sanitized=`echo -n "$1" | sed -e 's/[^A-Za-z0-9 _-]//g'` - [ -f "$data_dir/drafts/$sanitized.draft.html" ] && echo "Blog of that name already exists." && exit 1 - $EDITOR "$data_dir/drafts/$sanitized.draft.html" -} - -sub() { - cat - |\ - sed "1i " |\ - sed "\$a " |\ - sed "s|{{TITLE}}|$1|g; - s|{{DATE}}|`date +'%a, %b %d %H:%M'`|g; - s|{{URL}}|$website_url/blog/html/$1.html|g" |\ - sed "/{{BODY}}/r $data_dir/drafts/$1.draft.html" |\ - sed "/{{BODY}}/d" -} - -# $1 is directory -choose() { - options=`ls -1 "$1" | sed 's/\.draft\.html$//;s/\.html$//'` - [ -z "$options" ] && echo "No drafts to publish" && exit 0 - echo "$options" | nl - read -p 'Choose an entry by number > ' choice - chosen=`ls -1 "$1" | sed -n "$choice p"` - [ -z "$chosen" ] && echo "Invalid choice" && exit 1 + printf 'new\n' } publish() { - choose "$data_dir/drafts" - to_publish=${chosen%.draft.html} - - cat $blog_template | sub "$to_publish" > "$data_dir/html/$to_publish.html" - - # make this part less horrendous - temp_index="$(mktemp)" - cat "$data_dir/templates/$index_template" | sub "$to_publish" >> $temp_index - temp_rolling="$(mktemp)" - cat "$data_dir/templates/$rolling_template" | sub "$to_publish" >> $temp_rolling - temp_rss="$(mktemp)" - cat "$data_dir/templates/$rss_template" | sub "$to_publish" >> $temp_rss - - # Add new entry to blog index (do something about indent??) - sed -i "//r $temp_index" "$blog_index_file" - sed -i "//r $temp_rolling" "$rolling_file" - sed -i "//r $temp_rss" "$rss_file" - - mv "$data_dir/drafts/$to_publish.draft.html" "$data_dir/published/" - echo "Successfully published $to_publish" + printf 'publish\n' } delete() { - choose "$data_dir/published" - to_delete=${chosen%.draft.html} - - mv "$data_dir/published/$to_delete.draft.html" "$data_dir/drafts/" &&\ - rm "$data_dir/html/$to_delete.html" - - # remove entries from files - echo -e "$blog_index_file\n$rolling_file\n$rss_file" | xargs sed -i "//,// d" - - echo "Successfully deleted $to_delete" + printf 'delete\n' } -# check to see if all required files are present -[ -f $blog_index_file ] && [ -f $rolling_file ] && [ -f $blog_template ] && [ -f $rss_file ] || { echo "You are missing a file, please check that you have $blog_index_file, $blog_template, $rolling_file and $rss_file in your home directory" && exit 1; } +[ -f $blog_index_file ] && [ -f $rolling_file ] && [ -f $rss_file ] && [ -f $blog_template ] || { echo "You are missing a file, please check that you have $blog_index_file, $blog_template, $rolling_file and $rss_file in your home directory" && exit 1; } + +[ -f $blog ] -# check if blog dir exists -[ ! -d $data_dir ] && init && exit 0 +[ ! -d $data_dir ] && init && exit 0 case $1 in - n|new) new "$2";; + n|new) new;; p|publish) publish;; d|delete) delete;; - b|backup) backup;; - r|refresh) refresh;; - h|*) echo -e "=-=-=-=-=-=-= Pb =-=-=-=-=-=-=\nAvailable commands:\nn - new blog post\np - publish existing blog post\nd - deletes published post\nb - creates a backup";; + r|refresh) printf 'refresh\n';; + h|*) printf 'help\n';; esac + + + -- 2.20.1