improved gemini index and atom

This commit is contained in:
Yann Esposito (Yogsototh) 2021-05-02 10:32:40 +02:00
parent 973f1c9936
commit 492ef0f32b
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646
4 changed files with 93 additions and 2 deletions

View file

@ -71,8 +71,10 @@ $(DST_DIR)/%.gmi: $(SRC_DIR)/%.org $(GMI)
# OPTIM PHASE
OPTIM_DIR ?= _optim
ENGINE_DIR ?= engine
ENGINE_SCRIPTS := $(shell find $(ENGINE_DIR) -type f)
OPTIM := engine/pre-deploy.sh
$(OPTIM_DIR)/index.html:$(DST_RAW_FILES) $(DST_GMI_FILES) $(DST_PANDOC_FILES) $(HTML_INDEX) $(OPTIM)
$(OPTIM_DIR)/index.html:$(DST_RAW_FILES) $(DST_GMI_FILES) $(DST_PANDOC_FILES) $(HTML_INDEX) $(ENGINE_SCRIPTS) $(OPTIM)
mkdir -p $(OPTIM_DIR)
$(OPTIM)

View file

@ -30,7 +30,7 @@ finddate(){ < $1 | awk '/^date: /' | head -n1 | perl -pe 's/^.*\[//;s/ .*$//;' }
findtitle(){ < $1 | head -n1 | perl -pe 's/^# //' }
getcontent(){
< $1 perl -pe 'use URI; $base="'$2'"; s# (href|src)="((?!https?://)[^"]*)"#" ".$1."=\"".URI->new_abs($2,$base)->as_string."\""#eig' }
findkeywords(){ < $1 | awk '/^keywords: /' | head -n1 | perl -pe 's/^[^:]\s+//' }
findkeywords(){ < $1 | awk '/^keywords: /' | head -n1 | sed 's/keywords: //' }
mkcategories(){
for keyword in $*; do
printf "\\n<category>%s</category>" $keyword

83
engine/mk-gemini-index.sh Executable file
View file

@ -0,0 +1,83 @@
#!/usr/bin/env zsh
cd "$(git rev-parse --show-toplevel)" || exit 1
# Directory
webdir="_optim"
postsdir="$webdir/posts"
indexfile="$webdir/index.gmi"
# maximal number of articles to put in the RSS file
maxarticles=100
# RSS Metas
rsstitle="her.esy.fun"
websiteurl="gemini://her.esy.fun"
rssdescription="her.esy.fun articles, mostly random personal thoughts"
rsslang="en"
rssauthor="yann@esposito.host (Yann Esposito)"
# title and keyword shouldn't be changed
formatdate() {
# format the date for RSS
local d=$1
LC_TIME=en_US date --date $d +'%Y-%m-%d'
}
finddate(){ < $1 | awk '/^date: /' | head -n1 | perl -pe 's/^.*\[//;s/ .*$//;' }
findtitle(){ < $1 | head -n1 | perl -pe 's/^# //' }
getcontent(){
< $1 perl -pe 'use URI; $base="'$2'"; s# (href|src)="((?!https?://)[^"]*)"#" ".$1."=\"".URI->new_abs($2,$base)->as_string."\""#eig' }
findkeywords(){ < $1 | awk '/^keywords: /' | head -n1 | sed 's/keywords: //' }
autoload -U colors && colors
tmpdir=$(mktemp -d)
typeset -a dates
dates=( )
for fic in $postsdir/**/*.gmi; do
postfile="$(echo "$fic"|sed 's#^'$postsdir'/##')"
blogfile="$(echo "$fic"|sed 's#^'$webdir'/##')"
printf "%-30s" $postfile
xfic="$fic"
d=$(finddate $xfic)
echo -n " [$d]"
rssdate=$(formatdate $d)
title=$(findtitle $xfic)
keywords=( $(findkeywords $xfic) )
printf ": %-55s" "$title ($keywords)"
absoluteurl="${websiteurl}/${blogfile}"
{
printf "=> %s %s: %s [%s]\n" "$absoluteurl" "$rssdate" "$title" "$keywords"
} >> "$tmpdir/${d}-$(basename $fic).gmi"
dates=( $d $dates )
echo " [${fg[green]}OK${reset_color}]"
done
echo "Publishing"
for fic in $(ls $tmpdir/*.gmi | sort -r | head -n $maxarticles ); do
echo "${fic:t}"
cat $fic >> $tmpdir/gmi
done
rssmaxdate=$(formatdate $(for d in $dates; do echo $d; done | sort -r | head -n 1))
rssbuilddate=$(formatdate $(date))
{
cat <<END
,---,
/ <=> \\
( (O) )
\\ /
'---'
YOGSOTOTH
The index of my articles.
I talk about programming and sometime movies.
Some articles are only intended for gemini.
Enjoy!
END
cat $tmpdir/gmi
} > "$indexfile"
rm -rf $tmpdir
echo "* Gemini Index [done]"

View file

@ -121,5 +121,11 @@ cat <<END
END
} > "$rssfile"
# HACK TO UPDATE OLD RSS FEEDS
legacyenrss="$webdir/Scratch/en/blog/feed/feed.xml"
legacyfrrss="$webdir/Scratch/fr/blog/feed/feed.xml"
cp -f "$rssfile" "$legacyenrss"
cp -f "$rssfile" "$legacyfrrss"
rm -rf $tmpdir
echo "* RSS [done]"