diff --git a/scripts/remote_publish.sh b/scripts/remote_publish.sh index cf8b2ea..916f986 100755 --- a/scripts/remote_publish.sh +++ b/scripts/remote_publish.sh @@ -1,11 +1,14 @@ #!/bin/bash # Remote publish script for marcus-web # Pushes local changes if needed, then builds on SDF +# Optionally deploys to gopher with --gopher or --gopher-only set -e SDF_HOST="mnw@sdf.org" REMOTE_DIR="~/marcus-web" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" # Colors for output RED='\033[0;31m' @@ -13,7 +16,47 @@ GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color +# Flags +GOPHER=false +GOPHER_ONLY=false + +# Parse arguments +while [[ $# -gt 0 ]]; do + case $1 in + --gopher) + GOPHER=true + shift + ;; + --gopher-only) + GOPHER_ONLY=true + GOPHER=true + shift + ;; + --help|-h) + echo "Usage: $0 [OPTIONS]" + echo "" + echo "Options:" + echo " --gopher Deploy to both Hugo site and gopher" + echo " --gopher-only Deploy only to gopher (skip Hugo)" + echo " --help, -h Show this help message" + exit 0 + ;; + *) + echo -e "${RED}Unknown option: $1${NC}" + echo "Use --help for usage information" + exit 1 + ;; + esac +done + echo -e "${GREEN}=== Remote Publish ===${NC}" +if [[ "$GOPHER" == "true" ]]; then + if [[ "$GOPHER_ONLY" == "true" ]]; then + echo -e "${YELLOW}Mode: Gopher only${NC}" + else + echo -e "${YELLOW}Mode: Hugo + Gopher${NC}" + fi +fi echo "" # Check if we're in a git repo @@ -119,18 +162,52 @@ echo "" echo -e "${GREEN}=== Connecting to SDF ===${NC}" echo "" -# Build the remote command -REMOTE_CMD="cd $REMOTE_DIR && git pull && hugo && mkhomepg -p" - -# Try SSH with key auth first, fall back to password prompt +# Test SSH connectivity +SSH_AUTH="password" if ssh -o BatchMode=yes -o ConnectTimeout=5 "$SDF_HOST" "echo 'SSH key auth successful'" 2>/dev/null; then + SSH_AUTH="key" echo "Using SSH key authentication..." - ssh "$SDF_HOST" "$REMOTE_CMD" else - echo "SSH key auth failed or not configured, using password..." + echo "Using password authentication..." +fi + +# Hugo deployment (unless --gopher-only) +if [[ "$GOPHER_ONLY" != "true" ]]; then + echo "" + echo -e "${GREEN}=== Deploying Hugo Site ===${NC}" + REMOTE_CMD="cd $REMOTE_DIR && git pull && hugo && mkhomepg -p" ssh "$SDF_HOST" "$REMOTE_CMD" + echo "" + echo -e "${GREEN}Hugo site published!${NC}" + echo "Site is live at: https://mnw.sdf.org/" +fi + +# Gopher deployment (if --gopher or --gopher-only) +if [[ "$GOPHER" == "true" ]]; then + echo "" + echo -e "${GREEN}=== Deploying to Gopher ===${NC}" + + # Build gopher content locally + echo "Converting posts to gopher format..." + cd "$PROJECT_ROOT" + python3 "$SCRIPT_DIR/gopher/convert_to_gopher.py" --all --output "$PROJECT_ROOT/gopher_build/blog/" + + echo "Generating gophermaps..." + python3 "$SCRIPT_DIR/gopher/generate_gophermaps.py" --output "$PROJECT_ROOT/gopher_build/blog/" + + # Sync to SDF (--delete removes posts where phlog was set to false) + echo "Syncing to SDF gopherspace..." + rsync -avz --delete "$PROJECT_ROOT/gopher_build/blog/" "$SDF_HOST:~/gopher/blog/" + + # Fix permissions on SDF + echo "Setting permissions..." + ssh "$SDF_HOST" "find ~/gopher/blog -type f -exec chmod 644 {} \; && find ~/gopher/blog -type d -exec chmod 755 {} \;" + + echo "" + echo -e "${GREEN}Gopher published!${NC}" + echo "Gopher is live at: gopher://sdf.org/1/users/mnw/blog/" + echo "Web proxy: https://gopher.floodgap.com/gopher/gw?a=gopher://sdf.org/1/users/mnw/blog/" fi echo "" -echo -e "${GREEN}=== Published successfully! ===${NC}" -echo "Site is live at: https://mnw.sdf.org/" +echo -e "${GREEN}=== All done! ===${NC}"