#!/bin/bash WHOAMI=$(whoami) while true; do read -p "> " cmd case $cmd in post) categories=("Programming" "Design" "Business" "Science" "Personal" "Tutorial" "Review" "Cancel") PS3="Select category: " select category in "${categories[@]}"; do [ -n "$category" ] && break done [ "$category" = "Cancel" ] && exit 0 tmpfile=$(mktemp /tmp/$WHOAMI.draft.post.XXXXXX) trap "rm -f $tmpfile" EXIT INT TERM vim -c "syntax on" \ -c "autocmd BufEnter * call matchadd('Title', '\\%1l.*')" \ -c "setlocal ft=gitcommit" \ "$tmpfile" if [ -s "$tmpfile" ]; then content=$(cat "$tmpfile") title=$(head -n 1 $tmpfile) mkdir -p "/asftp/posts/$category/" echo "$content" > "/asftp/posts/$category/$(date +%Y%m%d_%H%M%S) $title - $WHOAMI" else echo "No content saved" fi ;; recent) folder="${1:-.}" echo "Recent posts:" select filename in $(ls -t "$folder"); do if [ -n "$filename" ]; then less "$folder/$filename" break fi done ;; chat) mkdir -p /tmp/chatlogs room="general" # Default room chat_file="/tmp/chatlogs/$room.log" touch "$chat_file" echo "Joined chat room: $room" echo "Commands: /join [room], /leave, /users, /showlast, /exit" # Start tail in background to show messages tail -f "$chat_file" & tail_pid=$! # Give tail time to start sleep 0.1 while true; do read -p "[$room]> " input case $input in /exit|/leave) kill $tail_pid 2>/dev/null break ;; /users) who | awk '{print $1}' | sort -u ;; /showlast) echo "Last 50 messages in [$room]:" echo "----------------------------------------" tail -n 50 "$chat_file" echo "----------------------------------------" ;; /join*) new_room=$(echo "$input" | cut -d' ' -f2) if [ -n "$new_room" ]; then # Kill current tail kill $tail_pid 2>/dev/null # Switch to new room room="$new_room" chat_file="/tmp/chatlogs/$room.log" touch "$chat_file" # Start new tail for new room tail -f "$chat_file" & tail_pid=$! sleep 0.1 echo "Joined room: $room" echo "Last 50 messages in [$room]:" tail -n 50 "$chat_file" else echo "Usage: /join [room_name]" fi ;; *) if [ -n "$input" ]; then echo "[$(date +%H:%M)] $WHOAMI: $input" >> "$chat_file" fi ;; esac done ;; clear) clear ;; exit) exit 0 ;; *) echo "Unknown command: $cmd" ;; esac done