summaryrefslogtreecommitdiff
path: root/readme.txt
diff options
context:
space:
mode:
authorSteph Enders <steph@senders.io>2023-04-09 15:44:31 -0400
committerSteph Enders <steph@senders.io>2023-04-09 15:51:53 -0400
commit15c85716b2c22cd7aac616d1b46756a5736b6d52 (patch)
treed3053630080cd8e9f2c4b9ce46be915b10c67889 /readme.txt
Create a bash script to publish gemlogsmain
This script and configuration enables users to simply publish a gemtext file and modify their index file with the link. The readme.txt goes into how this will work. Error codes are also noted. The basic usage is built around how my capsule is laid out - so I have an index file at: gemini://senders.io/gemlog/ that uses a descending post order. This is useful for folks so the most recent post is at the top. But index files can be disabled - but if you're doing that then you're basically just using scp :) which I'd say write your own bash script for!
Diffstat (limited to 'readme.txt')
-rw-r--r--readme.txt79
1 files changed, 79 insertions, 0 deletions
diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..f8fd8af
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1,79 @@
+gempost.sh
+==========
+
+gempost.sh is a simple bash script for "publishing" gemini posts.
+
+usage
+-----
+
+To publish a singel file you can simply run:
+ ./gempost.sh <target-file>
+
+If you're using the index file mode you can optionally add a link description with:
+ ./gempost.sh <target-file> <link-description>
+
+It will based on your configuration:
+
+1. upload the file to your server
+2. modify an indexfile if configured
+3. run any remote post processing (like update your rss feed!)
+
+config
+------
+
+There is a "complete" sample config.sh file in the repository.
+It will look for configs in:
+ 1. GEMPOST_CONFIG_HOME
+ 2. $XDG_CONFIG_HOME/gempost/config.sh
+ 3. $HOME/.config/gempost/config.sh
+
+Then it will simply source the files making the values available.
+
+The available configurations are:
+
+ - GEMPOST_SSH_HOST
+ - the ssh host you wish to publish to - this is used as the entrypoint for both: scp and ssh
+ - scp $FILE $GEMPOST_SSH_HOST:$GEMPOST_REMOTE_PATH/$FILE_NAME
+ - ssh $GEMPOST_SSH_HOST "${GEMPOST_REMOTE_POST_PROCESS}"
+ - GEMPOST_REMOTE_PATH
+ - shown above - this will be where we publish the file to
+ - **NOTE** All paths get "realized" locally - so ~ or $HOME will be your LOCAL HOME FOLDER - use absolute paths to be safe!
+ - GEMPOST_REMOTE_POST_PROCESS
+ - This optional config is a remote ssh command
+ - GEMPOST_INDEX_ON
+ - 0 for disabled, 1 for enabled
+ - This enables the index update logic
+ - GEMPOST_REMOTE_INDEX_FILE
+ - The absolute path to the remote index file you wish to update
+ - GEMPOST_INDEX_LINK_PREFIX
+ - This will be the actual link prefix so "/gemlog" for example
+ - then we'll append ${GEMPOST_INDEX_LINK_PREFIX}/${FILE_NAME}
+ - GEMPOST_PREVIOUS_TITLE_FILE
+ - In order to properly prepend our link to the index file we need a target location we use the previous post as a target
+
+The previous title file is stored in one of:
+ 1. GEMPOST_PREVIOUS_TITLE_FILE
+ 2. $XDG_DATA_HOME/gempost/previous-index-title.txt
+ 3. $HOME/.local/share/gempost/previous-index-title.txt
+
+After the index file is update it'll put the current file name into this file to be used as the next marker.
+
+errors
+------
+
+There are a few errors that can occur (mostly around setups) - We don't trap remote process errors or scp/ssh errors - those will exit and usuall print out an error.
+
+But we have a few error codes in the file:
+
+ # Invalid arguments - Missing file to post
+ ERR_MISSING_TARGET_FILE=2
+ # Supplied file is not found
+ ERR_TARGET_FILE_NOT_FOUND=3
+ # No configuration file in expected locations
+ ERR_CONFIG_FILE_NOT_FOUND=4
+ # GEMPOST_INDEX_ON enabled but the previous title file supplied is empty
+ ERR_PREV_TITLE_EMPTY=5
+ # GEMPOST_INDEX_ON enabled but no previous title file found in expected locations
+ ERR_PREV_TITLE_FILE_NOT_FOUND=6
+
+An error will be written out for any of these, but if you're scripting around it these will be the error codes.