1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#!/usr/bin/sh
bold=$(tput bold)
normal=$(tput sgr0)
blog_root=/home/shrik3/docs/blog
site_local=$blog_root/site
# trailing slash is necessary for rsync
webroot_remote=shrik3@shrik3.com:/srv/www/blog/
# for performance, limit the max number of URLs to pass to openring
limit=6
openring_in=~/docs/blog/webring_in.html
openring_out=~/docs/blog/site/layouts/partials/webring.html
webring_src="https://raw.githubusercontent.com/XXIIVV/webring/main/index.html"
print_help(){
echo "usage":
echo "without parameters: render the blog as normal"
echo "[optional]"
echo " --fedi include fedi timeline"
echo " --webring include webring"
echo " --misc include static files"
echo " --all include all options"
}
pull_timeline(){
echo "${bold} Fetching Timeline from fedi... ${normal}"
cd $blog_root/timelinebot
./timelinebot.py
}
# parse webring index.html into openring parameters
# | grep -Po # extract pattern from html
# | shuf | head -n # randomize and select n of them
# | sed # prefix each html with '-s'
pull_webring(){
echo "${bold} Pulling webring... ${normal}"
rss_list=$(curl $webring_src | grep -Po '.*href="\K.*(?=" class="rss")' | shuf | head -$limit | sed -e 's/^/-s /')
# rss_list=$(curl $webring_src | grep -Po '.*href="\K.*(?=" class="rss")' | shuf | sed -e 's/^/-s /')
openring $rss_list < $openring_in > $openring_out
}
sync_files(){
echo "${bold} Sync static files ... ${normal}"
cd $blog_root
./syncmisc
}
while [[ $# -gt 0 ]]; do
case $1 in
--fedi)
pull_timeline
shift 1;
;;
--webring)
pull_webring
shift 1;
;;
--misc)
gpg --export --armor --export-options export-minimal $GPGKEY > $blog_root/misc/gpg.asc
sync_files
shift 1;
;;
-*|--*)
print_help
exit 1
;;
*)
print_help
exit 1
;;
esac
done
# render blog
cd $site_local
echo "${bold} Rendering blog... ${normal}"
# update gpg pubkey
echo "${bold} Appending key $GPGKEY... ${normal}"
gpg --export --armor --export-options export-minimal $GPGKEY > $site_local/layouts/partials/pubkey.asc
# the render
hugo
# copy key into public dir
cp $site_local/layouts/partials/pubkey.asc $site_local/public/gpg.asc
# sync files
echo "${bold} Sync blog to remote server... ${normal}"
rsync -avh -og --chown=http:http --info=progress2 --info=name0 --update --delete-after $site_local/public/ $webroot_remote
# Reminder
echo
echo "${bold} Remember to commit the changes and push to remote repo ${normal}"
|