---
Noticed the hardcoded URL at the end of the script and figured that should be fixed as well.
gemlog.sh | 60 ++++++++++++++++++++++++++++++-------------------------
1 file changed, 33 insertions(+), 27 deletions(-)
diff --git a/gemlog.sh b/gemlog.sh
index 09aed60..2c821a2 100755
--- a/gemlog.sh
+++ b/gemlog.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/usr/bin/env sh
# Copyright 2020 nytpu
#
@@ -14,6 +14,7 @@
#
# You should have received a copy of the GNU Affero General Public License
# Header and footer file locations can be relative to directory where gemlog.sh is run, or absolute.
+
export header_file="_header.gmi"
export footer_file="_footer.gmi"
#export header_file="~/.config/gemlog.sh/header.gmi"
@@ -22,27 +23,27 @@ export footer_file="_footer.gmi"
# along with this program. If not, see <https://www.gnu.org/licenses/>.
make_globals() {
- if [[ -f "$HOME/.config/gemlog.sh/config.sh" ]]; then
- source "$HOME/.config/gemlog.sh/config.sh"
- elif [[ -f "./config.sh" ]]; then
- source "./config.sh"
+ if [ -f "$HOME/.config/gemlog.sh/config.sh" ]; then
+ . "$HOME/.config/gemlog.sh/config.sh"
+ elif [ -f "./config.sh" ]; then
+ . "./config.sh"
else
printf "No config file!\n"
exit
fi
- if [[ ! -f $header_file ]]; then
- printf "No header file matching config.sh value: $header_file"
+ if [ ! -f $header_file ]; then
+ printf "No header file matching config.sh value: $header_file\n"
exit
- elif [[ ! -f $footer_file ]]; then
- printf "No footer file matching config.sh value: $footer_file"
+ elif [ ! -f $footer_file ]; then
+ printf "No footer file matching config.sh value: $footer_file\n"
exit
fi
- date_format_8601="+%Y-%m-%dT%H:%M:%S%:z" # *formal* ISO-8601 format including time zone
- date_format_8601_timeless="+%Y-%m-%dT12:00:00%:z" # *formal* ISO-8601 format with fixed preset time
- monthnames=( "invalid" "January" "February" "March" "April" "May" "June" "July" "August" "September" "October" "November" "December" )
+ date_format_8601="+%Y-%m-%dT%H:%M:%S%z" # *formal* ISO-8601 format including time zone
+ date_format_8601_timeless="+%Y-%m-%dT12:00:00%z" # *formal* ISO-8601 format with fixed preset time
+ monthnames="invalid January February March April May June July August September October November December"
}
get_post_title() {
@@ -53,7 +54,7 @@ make_atom() {
echo "Bulding atom feed..."
atomfile="$gemlog_feed.$RANDOM"
- while [[ -f $atomfile ]]; do atomfile="$gemlog_feed.$RANDOM"; done
+ while [ -f $atomfile ]; do atomfile="$gemlog_feed.$RANDOM"; done
{
pubdate=$(date "$date_format_8601")
@@ -75,18 +76,20 @@ make_atom() {
<rights>© $global_author - $global_license</rights>
EOF
n=0
- while IFS='' read -r i; do
- ((n >= $number_of_feed_articles)) && break
+ tz="$(date +%z)"
+ find * -type f -name "[[:digit:]]*.gmi" | sort -r \
+ | while IFS='' read -r i; do
+ expr "$n" '>=' "$number_of_feed_articles" > /dev/null && break
printf "\n <entry>\n <title>"
get_post_title "$i" | tr -d '\n'
printf "</title>\n <id>$global_url${i#'./'}</id>\n"
printf " <link rel='alternate' href='$global_url${i#'./'}'/>\n <updated>"
- echo "$i" | perl -ne '/^(\d{4}-\d{2}-\d{2}).*/; print "$1T12:00:00:z"' | tr -d '\n'
+ echo "$i" | perl -ne '/^(\d{4}-\d{2}-\d{2}).*/; print "$1T12:00:00"' | tr -d '\n' | sed "s/\$/$tz/"
# change or remove the <summary></summary> block if you want a different description or no description at all
printf "</updated>\n <summary>You need a gemini client to view this post. $global_url${i#'./'}</summary>\n </entry>\n"
- n=$(( n + 1 ))
- done < <(find * -type f -name "[[:digit:]]*.gmi" | sort -r)
+ n=$(expr "$n" '+' 1)
+ done
printf "</feed>\n"
} 3>&1 >"$atomfile"
@@ -99,14 +102,15 @@ build_entries() {
echo "Building index..."
indexfile="$index.$RANDOM"
- while [[ -f $indexfile ]]; do indexfile="$index.$RANDOM"; done
+ while [ -f $indexfile ]; do indexfile="$index.$RANDOM"; done
{
# header of the page (above the posts list)
perl -pe 's/\$(\w+)/$ENV{$1}/g' "$header_file"
curyear=""
curmonth=""
- while IFS='' read -r i; do
+ find * -type f -name "[[:digit:]]*.gmi" | sort -r \
+ | while IFS='' read -r i; do
post=$(basename $i)
title=$(get_post_title "$i")
pubdate=$(echo $i | perl -ne '/^(\d{4}-\d{2}-\d{2}).*/; print $1')
@@ -121,13 +125,13 @@ build_entries() {
if $use_month_divider_nl; then
printf "\n"
elif $use_month_divider_hd; then
- printf "\n### ${monthnames[${newcurmonth#0}]}\n\n"
+ printf "\n### $(echo "$monthnames" | cut -d' ' -f${newcurmonth#0})\n\n"
fi
curmonth="$newcurmonth"
fi
printf "=> $post $pubdate — $title\n"
- done < <(find * -type f -name "[[:digit:]]*.gmi" | sort -r)
+ done
# footer of the page (below the list of posts)
perl -pe 's/\$(\w+)/$ENV{$1}/g' "$footer_file"
@@ -137,11 +141,12 @@ build_entries() {
chmod 644 "$index"
}
-toot() {
+toot_prompt() {
filename=$(find * -type f -name "[[:digit:]]*.gmi" | sort -r | head -n 1 | xargs basename)
title=$(get_post_title "$filename")
- read -r -p "do you want to toot the newest post? [y/N] " response
- if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
+ printf "do you want to toot the newest post? [y/N] "
+ read response
+ if echo "$response" | grep -Eqi '^yes$|^y$'
then
echo "tooting..."
# change this if you want the toot to have different content
@@ -152,6 +157,7 @@ toot() {
make_globals
make_atom
build_entries
-toot
+toot_prompt
-gemget -o - "gemini://warmedal.se/~antenna/submit?gemini%3A%2F%2Fnytpu.com%2Fgemlog%2F"
+urlencoded="$(echo -n "$global_url" | perl -MURI::Escape -ne 'print uri_escape($_)')"
+gemget -o - "gemini://warmedal.se/~antenna/submit?$urlencoded"
--
2.33.1