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 If you're using the index file mode you can optionally add a link description with: ./gempost.sh 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.