aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorla-ninpre <leobrekalini@gmail.com>2021-06-01 17:04:57 +0300
committerla-ninpre <leobrekalini@gmail.com>2021-06-01 17:04:57 +0300
commit75704efa248c4262d762e118f6421ffd263fd564 (patch)
treef6885db6d7665ea8f786ebb1dce5e1cb6113281a
parentd543ec9c1e7d02cd71599cbc62e11ba84c3f084c (diff)
downloadgemini-aaoth.xyz-75704efa248c4262d762e118f6421ffd263fd564.tar.gz
gemini-aaoth.xyz-75704efa248c4262d762e118f6421ffd263fd564.zip
add gemlog and tool to publish to it
the tool is a simple script that is very similar to one i created for aaoth.xyz, except that this script utilizes simple template. template variables are: - title -- post title - date -- date when post is written - tags -- space separated list of tags - gemlog_location -- relative path to gemlog homepage - gemlog_title -- title of link to gemlog homepage - gemlikes -- relative path to gemlikes `view` binary with query
-rwxr-xr-xgemlog-new123
-rw-r--r--gemlog/.template12
-rw-r--r--gemlog/index.gmi14
3 files changed, 149 insertions, 0 deletions
diff --git a/gemlog-new b/gemlog-new
new file mode 100755
index 0000000..fb1338d
--- /dev/null
+++ b/gemlog-new
@@ -0,0 +1,123 @@
+#!/bin/sh -ex
+
+# script to create new gemposts
+
+GEMINI_HOME="$HOME/Documents/gemini-aaoth.xyz"
+# gemlog page on your capsule, e.g. gemini://foo.bar/gemlog/
+# ^----^
+GEMLOG_DIR="gemlog"
+GEMLOG_HOME="$GEMINI_HOME/$GEMLOG_DIR"
+GEMLOG_INDEX="$GEMLOG_HOME/index.gmi"
+GEMLOG_TEMPLATE="$GEMLOG_HOME/.template"
+# gemlikes view binary location
+GEMLIKES="/cgi-bin/gemlikes/view"
+
+die() {
+ echo "$1" && exit 1
+}
+
+usage() {
+ echo "add new post to gemlog"
+ echo
+ echo "this script is using gemini subscription specification and also \
+ utilizes gemlikes utility for likes and comments"
+ echo
+ echo "usage:"
+ echo " $0 [OPTIONS]"
+ echo
+ echo "options:"
+ echo " -t, --title <title>"
+ echo " specify new post title"
+ echo " -g, --tags <tags>"
+ echo " specify new post tags (space separated, now they are just decorative)"
+ echo " -h, --help"
+ echo " print this help message"
+}
+
+read_title() {
+ echo "new post title:"
+ read -r _new_post_title
+}
+
+read_tags() {
+ echo "new post tags:"
+ read -r _new_post_tags
+}
+
+update_index() {
+ sed "$_new_post_loc i => $_new_post_rel_url $_new_post_date - $_new_post_title" < "$GEMLOG_INDEX" > "$GEMLOG_INDEX.tmp"
+ mv "$GEMLOG_INDEX.tmp" "$GEMLOG_INDEX"
+}
+
+edit_post() {
+ _new_post_gemlikes=$(echo "$_new_post_gemlikes" | sed 's/\//\\\//g')
+
+ cp "$GEMLOG_TEMPLATE" "$_new_post_filename"
+
+ [ -n "$_new_post_tags" ] && sed -e "s/{{ tags }}/\* tags: $_new_post_tags/" \
+ < "$_new_post_filename" > "$_new_post_filename.tmp"
+ mv "$_new_post_filename.tmp" "$_new_post_filename"
+
+ sed -e '/{{ tags }}/d' < "$_new_post_filename" > "$_new_post_filename.tmp"
+ mv "$_new_post_filename.tmp" "$_new_post_filename"
+
+ sed -e "s/{{ title }}/$_new_post_title/" \
+ -e "s/{{ gemlog_location }}/\/$GEMLOG_DIR\//" \
+ -e "s/{{ date }}/$_new_post_date/" \
+ -e "s/{{ gemlog_title }}/back to post list/" \
+ -e "s/{{ gemlikes }}/${_new_post_gemlikes#/}/" < "$_new_post_filename" \
+ > "$_new_post_filename.tmp"
+ mv "$_new_post_filename.tmp" "$_new_post_filename"
+
+ $EDITOR "$_new_post_filename"
+}
+
+main() {
+ if [ $# -gt 0 ]
+ then
+ while [ -n "$1" ]
+ do
+ case "$1" in
+ --title|-t)
+ shift
+ _new_post_title="$1"
+ ;;
+ --tags|-g)
+ shift
+ _new_post_tags="$1"
+ ;;
+ --help|-h)
+ shift
+ usage
+ exit
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+ shift
+ done
+ fi
+
+ [ -z "$_new_post_title" ] && read_title
+ [ -z "$_new_post_title" ] && die "title could not be empty"
+
+ [ -z "$_new_post_tags" ] && read_tags
+ [ -z "$_new_post_tags" ] && echo "no tags specified"
+
+ _new_post_date=$(date +%F)
+ _new_post_title_for_file=$(echo "$_new_post_title" | tr '[:upper:]' '[:lower:]' \
+ | sed 's/ /-/g')
+ _new_post_basename="$_new_post_date-$_new_post_title_for_file.gmi"
+ _new_post_filename="$GEMLOG_HOME/$_new_post_basename"
+ _new_post_rel_url="/$GEMLOG_DIR/$_new_post_basename"
+ _new_post_loc=$(awk '/^## posts/ { print NR+2 }' < "$GEMLOG_INDEX")
+ _new_post_gemlikes="$GEMLIKES?$_new_post_basename"
+
+ update_index
+
+ edit_post
+}
+
+main "$@"
diff --git a/gemlog/.template b/gemlog/.template
new file mode 100644
index 0000000..16ce570
--- /dev/null
+++ b/gemlog/.template
@@ -0,0 +1,12 @@
+# {{ title }}
+
+* date: {{ date }}
+* author: la-ninpre
+{{ tags }}
+
+
+
+## links
+
+=> {{ gemlog_location }} {{ gemlog_title }}
+=> {{ gemlikes }} like and comment!
diff --git a/gemlog/index.gmi b/gemlog/index.gmi
new file mode 100644
index 0000000..5d236da
--- /dev/null
+++ b/gemlog/index.gmi
@@ -0,0 +1,14 @@
+# aaoth.xyz gemlog
+
+hello to my gemlog. i will occasionally write here something about tech stuff and also some personal thought about different things.
+
+this gemlog is formatted according to gemini gemlog specification (see below).
+
+=> gemini://gemini.circumlunar.space/docs/companion/subscription.gmi subsribing to gemini pages
+
+## posts
+
+
+## other gemlogs
+
+=> gemini://perso.pw/blog/ solène's %