remove bunkchat scripts #2

Merged
oxaliq merged 10 commits from release into main 2024-04-22 20:45:27 +00:00
7 changed files with 155 additions and 148 deletions

233
bunkdeck
View file

@ -1,121 +1,156 @@
#!/bin/bash #!/bin/sh -e
set -e
heedPane="bunkdeck:0.0" sessionname=bunkdeck
proclaimPane="bunkdeck:0.1" heedPane=bunkdeck:0.0
shellPane="bunkdeck:0.2" proclaimPane=bunkdeck:0.1
shellPane=bunkdeck:0.2
function isExistingDeck { isExistingDeck () {
set +e if tmux has -t $sessionname ; then
sessions=$(tmux list-sessions) return 0
set -e else
return 1
if [[ $sessions == *"bunkdeck"* ]]; then fi
return 0
else
return 1
fi
} }
function startNewDeck { attachToDeck () {
tmux new -d -s bunkdeck heed # does not currently protect against nesting sessions (tmux does this for us)
tmux split-window -h -t bunkdeck -p 70 tmux attach-session -d -t bunkdeck
tmux split-window -t $heedPane -v -p 3
tmux send-keys -t $proclaimPane 'proclaim' C-m
tmux send-keys -t $shellPane 'cowsay "press [CTRL+b then o] to cycle through panes"' C-m
# turn on pane titling
tmux select-pane -t $heedPane -T heed
tmux select-pane -t $proclaimPane -T proclaim
tmux select-pane -t $shellPane -T shell
tmux set -g set-titles on
# attach session to shell
tmux attach -t $shellPane
} }
function killDeck { startNewDeck () {
tmux kill-session -t bunkdeck tmux new -d -s $sessionname heed
tmux split-window -h -t $sessionname -p 70
tmux split-window -t $heedPane -v -p 3
tmux send-keys -t $proclaimPane 'proclaim' C-m
tmux send-keys -t $shellPane 'cowsay "press [CTRL+b then o] to cycle through panes"' C-m
# turn on pane titling
tmux select-pane -t $heedPane -T heed
tmux select-pane -t $proclaimPane -T proclaim
tmux select-pane -t $shellPane -T shell
tmux set -g set-titles on
# attach session to shell
tmux attach -t $shellPane
} }
function growPane { killDeck () {
case $2 in if isExistingDeck; then
shell) tmux kill-session -t $sessionname
tmux resize-pane -t $shellPane -L "$3" else
;; echo "you don't have bunkdeck running!"
proclaim) fi
tmux resize-pane -t $proclaimPane -U "$3" }
;;
heed) leaveDeck () {
tmux resize-pane -t $heedPane -D "$3" # currently assumes that bunkdeck is only session running
;; # if bunkdeck leave is issued from within another session, silent failure occurs
*) if isExistingDeck && [ "${TMUX}" != "" ]; then
echo "usage: bunkdeck grow [WINDOW] [SIZE]" tmux detach -s $sessionname
echo echo "you are not inside bunkdeck! for help:"
echo "windows:" echo "$ bunkdeck help"
echo " shell horizontally grow the shell window" fi
echo " proclaim vertically grow the window where you send text" }
echo " heed vertically grow the window where you read texts"
growPane () {
case $2 in
shell)
tmux resize-pane -t $shellPane -L "$3"
;;
proclaim)
tmux resize-pane -t $proclaimPane -U "$3"
;;
heed)
tmux resize-pane -t $heedPane -D "$3"
;;
*)
echo "usage: bunkdeck grow [WINDOW] [SIZE]"
echo
echo "windows:"
echo " shell horizontally grow the shell window"
echo " proclaim vertically grow the window where you send text"
echo " heed vertically grow the window where you read texts"
echo echo
echo "size:" echo "size:"
echo " number of cells to grow the selected window" echo " number of cells to grow the selected window"
exit 1 exit 1
;; ;;
esac esac
} }
function shrinkPane { shrinkPane () {
case $2 in case $2 in
shell) shell)
tmux resize-pane -t $shellPane -R "$3" tmux resize-pane -t $shellPane -R "$3"
;; ;;
proclaim) proclaim)
tmux resize-pane -t $proclaimPane -D "$3" tmux resize-pane -t $proclaimPane -D "$3"
;; ;;
heed) heed)
tmux resize-pane -t $heedPane -U "$3" tmux resize-pane -t $heedPane -U "$3"
;; ;;
*) *)
echo "usage: bunkdeck shrink [WINDOW] [SIZE]" echo "usage: bunkdeck shrink [WINDOW] [SIZE]"
echo echo
echo "windows:" echo "windows:"
echo " shell horizontally shrink the shell window" echo " shell horizontally shrink the shell window"
echo " proclaim vertically shrink the window where you send text" echo " proclaim vertically shrink the window where you send text"
echo " heed vertically shrink the window where you read texts" echo " heed vertically shrink the window where you read texts"
echo echo
echo "size:" echo "size:"
echo " number of cells to shrink the selected window" echo " number of cells to shrink the selected window"
exit 1 exit 1
;; ;;
esac esac
} }
helpText () {
usageText
echo
echo "help:"
echo
echo " movement:"
echo " bunkdeck gives you three panes, 'proclaim' to chat, 'heed' to read chats"
echo " and 'shell' to do whatever you want!"
echo " to move between panes you press [CTL + b] at the same time"
echo " then [arrow key] to move to a new pane, or 'o' to cycle around"
}
case $1 in usageText () {
kill)
killDeck
;;
"")
if isExistingDeck; then
tmux attach-session -t bunkdeck
else
startNewDeck
fi
;;
grow)
growPane "$@"
;;
shrink)
shrinkPane "$@"
;;
*)
echo "usage: bunkdeck [COMMAND]" echo "usage: bunkdeck [COMMAND]"
echo echo
echo "commands:" echo "commands:"
echo " (none) attach to existing bunkdeck or start new one" echo " (none) attach to existing bunkdeck or start new one"
echo " kill kill running bunkdeck" echo " kill kill running bunkdeck"
echo " grow grow the size of a bunkdeck window" echo " leave close bunkdeck without killing it"
echo " grow grow the size of a bunkdeck window"
echo " shrink shrink the size of a bunkdeck window" echo " shrink shrink the size of a bunkdeck window"
exit 1 }
;;
esac
case $1 in
kill)
killDeck
;;
"")
if isExistingDeck; then
attachToDeck
else
startNewDeck
fi
;;
leave)
leaveDeck
;;
grow)
growPane "$@"
;;
shrink)
shrinkPane "$@"
;;
help)
helpText
;;
*)
usageText
;;
esac

6
delete.sh Normal file
View file

@ -0,0 +1,6 @@
#!/bin/sh -e
chatlog=/var/log/bunkchat/chat.log
chattr -a $chatlog
echo > $chatlog
chattr +a $chatlog

12
heed
View file

@ -1,12 +0,0 @@
#!/bin/sh -e
clear
figlet -f future heed - bunkchat
echo "#######################################################################"
echo "# Take heed, $USER! This is a group chat with everyone on the server! #"
echo "# You can view earlier chat with 'scry' or 'less /srv/bunkchat.txt' #"
echo "#######################################################################"
echo
tail -f /srv/bunkchat.txt

13
install.sh Executable file
View file

@ -0,0 +1,13 @@
#!/bin/sh -e
# TODO
# check for tmux and cowsay
# if not prompt and exit
# pull in bunkchat
# run bunkchat install script
# install buckdeck in /usr/local/bin
# prompt user to install delete.sh in /root/crontab-scripts/delete-bunkchat.sh
# prompt with crontab config

View file

@ -1,29 +0,0 @@
#!/bin/bash -e
# make username uppercase
username=$(echo "$USER" | tr '[:lower:]' '[:upper:]')
timezone="America/New_York"
declare prompt
makeSlug () {
# make time and date
time=$(TZ=${timezone} date +%I:%M%p)
date=$(TZ=${timezone} date +%m/%d)
# make name/time string
prompt="${username}-${date}-${time}"
}
# enter bunkchat mode (clear the screen)
clear
while true
do
figlet -f future proclaim - bunkchat
echo "You may view old chat with 'scry', heathen."
echo "-------------------------------------------"
read -r -p "speak to the server: " text
makeSlug
echo "${prompt}: $text" >> /srv/bunkchat.txt
clear
done

View file

@ -6,11 +6,8 @@ tmux wraps some hand-rolled local chat scripts, and the`bunkdeck` command starts
bunkdeck is comprised of these lil things: bunkdeck is comprised of these lil things:
* `bunkdeck` - run this command to start the interface * `bunkdeck` - run this command to start the interface
* `proclaim` - post in chat * `bunkchat` - the actual chat functionality [git](https://git.bunk.computer/bunk/bunkchat)
* `heed` - read the chat
* `scry` - read the old chat
on the server, these are all installed in `/usr/local/bin` so everyone can run them on the server, these are all installed in `/usr/local/bin` so everyone can run them
the file they all interact with, `/srv/bunkchat.txt` has permissions such that everyone can read and write to it the file they all interact with, `/var/log/bunkchat/chat.log` is append-only

3
scry
View file

@ -1,3 +0,0 @@
#!/bin/sh -e
less /srv/bunkchat.txt