improved gemini index and atom
This commit is contained in:
parent
973f1c9936
commit
492ef0f32b
4
Makefile
4
Makefile
|
@ -71,8 +71,10 @@ $(DST_DIR)/%.gmi: $(SRC_DIR)/%.org $(GMI)
|
||||||
# OPTIM PHASE
|
# OPTIM PHASE
|
||||||
|
|
||||||
OPTIM_DIR ?= _optim
|
OPTIM_DIR ?= _optim
|
||||||
|
ENGINE_DIR ?= engine
|
||||||
|
ENGINE_SCRIPTS := $(shell find $(ENGINE_DIR) -type f)
|
||||||
OPTIM := engine/pre-deploy.sh
|
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)
|
mkdir -p $(OPTIM_DIR)
|
||||||
$(OPTIM)
|
$(OPTIM)
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ finddate(){ < $1 | awk '/^date: /' | head -n1 | perl -pe 's/^.*\[//;s/ .*$//;' }
|
||||||
findtitle(){ < $1 | head -n1 | perl -pe 's/^# //' }
|
findtitle(){ < $1 | head -n1 | perl -pe 's/^# //' }
|
||||||
getcontent(){
|
getcontent(){
|
||||||
< $1 perl -pe 'use URI; $base="'$2'"; s# (href|src)="((?!https?://)[^"]*)"#" ".$1."=\"".URI->new_abs($2,$base)->as_string."\""#eig' }
|
< $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(){
|
mkcategories(){
|
||||||
for keyword in $*; do
|
for keyword in $*; do
|
||||||
printf "\\n<category>%s</category>" $keyword
|
printf "\\n<category>%s</category>" $keyword
|
||||||
|
|
83
engine/mk-gemini-index.sh
Executable file
83
engine/mk-gemini-index.sh
Executable 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]"
|
|
@ -121,5 +121,11 @@ cat <<END
|
||||||
END
|
END
|
||||||
} > "$rssfile"
|
} > "$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
|
rm -rf $tmpdir
|
||||||
echo "* RSS [done]"
|
echo "* RSS [done]"
|
||||||
|
|
Loading…
Reference in a new issue