From 8d976bfe63be828275017401a6d34ea6427c791c Mon Sep 17 00:00:00 2001 From: oxaliq Date: Mon, 22 Apr 2024 20:45:27 +0000 Subject: [PATCH] remove bunkchat scripts (#2) bunkdeck is now the repo for nice tools on top of bunkchat includes `bunkdeck` for scripting terminal multiplexing and `delete.sh` to add to crontab for periodic flushing of chatlog tested: - [x] local - [x] in tilde Co-authored-by: maren Reviewed-on: https://git.bunk.computer/bunk/bunkdeck/pulls/2 Reviewed-by: maren Co-authored-by: oxaliq Co-committed-by: oxaliq --- bunkdeck | 233 ++++++++++++++++++++++++++++++----------------------- delete.sh | 6 ++ heed | 12 --- install.sh | 13 +++ proclaim | 29 ------- readme.md | 7 +- scry | 3 - 7 files changed, 155 insertions(+), 148 deletions(-) create mode 100644 delete.sh delete mode 100755 heed create mode 100755 install.sh delete mode 100755 proclaim delete mode 100755 scry diff --git a/bunkdeck b/bunkdeck index 907abaf..590c05f 100755 --- a/bunkdeck +++ b/bunkdeck @@ -1,121 +1,156 @@ -#!/bin/bash -set -e +#!/bin/sh -e -heedPane="bunkdeck:0.0" -proclaimPane="bunkdeck:0.1" -shellPane="bunkdeck:0.2" +sessionname=bunkdeck +heedPane=bunkdeck:0.0 +proclaimPane=bunkdeck:0.1 +shellPane=bunkdeck:0.2 -function isExistingDeck { - set +e - sessions=$(tmux list-sessions) - set -e - - if [[ $sessions == *"bunkdeck"* ]]; then - return 0 - else - return 1 - fi +isExistingDeck () { + if tmux has -t $sessionname ; then + return 0 + else + return 1 + fi } -function startNewDeck { - tmux new -d -s bunkdeck heed - tmux split-window -h -t bunkdeck -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 +attachToDeck () { + # does not currently protect against nesting sessions (tmux does this for us) + tmux attach-session -d -t bunkdeck } -function killDeck { - tmux kill-session -t bunkdeck +startNewDeck () { + 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 { - 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" +killDeck () { + if isExistingDeck; then + tmux kill-session -t $sessionname + else + echo "you don't have bunkdeck running!" + fi +} + +leaveDeck () { + # currently assumes that bunkdeck is only session running + # if bunkdeck leave is issued from within another session, silent failure occurs + if isExistingDeck && [ "${TMUX}" != "" ]; then + tmux detach -s $sessionname + echo "you are not inside bunkdeck! for help:" + echo "$ bunkdeck help" + fi +} + +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 "size:" - echo " number of cells to grow the selected window" - exit 1 - ;; - esac + echo "size:" + echo " number of cells to grow the selected window" + exit 1 + ;; + esac } -function shrinkPane { - case $2 in - shell) - tmux resize-pane -t $shellPane -R "$3" - ;; - proclaim) - tmux resize-pane -t $proclaimPane -D "$3" - ;; - heed) - tmux resize-pane -t $heedPane -U "$3" - ;; - *) - echo "usage: bunkdeck shrink [WINDOW] [SIZE]" - echo - echo "windows:" - echo " shell horizontally shrink the shell window" - echo " proclaim vertically shrink the window where you send text" - echo " heed vertically shrink the window where you read texts" +shrinkPane () { + case $2 in + shell) + tmux resize-pane -t $shellPane -R "$3" + ;; + proclaim) + tmux resize-pane -t $proclaimPane -D "$3" + ;; + heed) + tmux resize-pane -t $heedPane -U "$3" + ;; + *) + echo "usage: bunkdeck shrink [WINDOW] [SIZE]" + echo + echo "windows:" + echo " shell horizontally shrink the shell window" + echo " proclaim vertically shrink the window where you send text" + echo " heed vertically shrink the window where you read texts" echo - echo "size:" - echo " number of cells to shrink the selected window" - exit 1 - ;; - esac + echo "size:" + echo " number of cells to shrink the selected window" + exit 1 + ;; + 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 - - kill) - killDeck - ;; - "") - if isExistingDeck; then - tmux attach-session -t bunkdeck - else - startNewDeck - fi - ;; - grow) - growPane "$@" - ;; - shrink) - shrinkPane "$@" - ;; - *) +usageText () { echo "usage: bunkdeck [COMMAND]" echo echo "commands:" echo " (none) attach to existing bunkdeck or start new one" 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" - 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 diff --git a/delete.sh b/delete.sh new file mode 100644 index 0000000..1e84a94 --- /dev/null +++ b/delete.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e +chatlog=/var/log/bunkchat/chat.log + +chattr -a $chatlog +echo > $chatlog +chattr +a $chatlog diff --git a/heed b/heed deleted file mode 100755 index 96a82d5..0000000 --- a/heed +++ /dev/null @@ -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 diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..04a2535 --- /dev/null +++ b/install.sh @@ -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 diff --git a/proclaim b/proclaim deleted file mode 100755 index 48391ce..0000000 --- a/proclaim +++ /dev/null @@ -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 diff --git a/readme.md b/readme.md index 5741545..2543c3a 100644 --- a/readme.md +++ b/readme.md @@ -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` - run this command to start the interface -* `proclaim` - post in chat -* `heed` - read the chat -* `scry` - read the old chat +* `bunkchat` - the actual chat functionality [git](https://git.bunk.computer/bunk/bunkchat) 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 diff --git a/scry b/scry deleted file mode 100755 index 432c623..0000000 --- a/scry +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -e - -less /srv/bunkchat.txt