Compare commits

...

11 commits

Author SHA1 Message Date
6a641c7e5c tmp install script 2024-05-13 18:16:06 -04:00
434cb22405 add delete script 2024-04-22 16:15:21 -04:00
383580a1ee remove bunkchat from repo 2024-04-22 15:26:03 -04:00
d3145c6073 refactor bunkdeck with some add'l error handling and fixed format 2024-04-15 14:05:55 -04:00
29d6b0de45 prompt fuss 2024-04-13 19:39:57 -04:00
08646a05d4 fuss with prompts 2024-04-13 19:36:15 -04:00
b13b57f15b handle re-install gracefully 2024-04-13 19:35:41 -04:00
06725dfcd5 fix path typo
also modify info prompt
2024-04-13 15:21:16 -04:00
ef8b1bbcb2 fix install script 2024-04-13 15:13:03 -04:00
7f11ba1b61 add install script 2024-04-13 15:01:26 -04:00
cd14df1f11 change default chat.log location and tone of prompts 2024-04-13 14:49:13 -04:00
8 changed files with 304 additions and 148 deletions

View file

@ -1,25 +1,26 @@
#!/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
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
attachToDeck () {
# does not currently protect against nesting sessions (tmux does this for us)
tmux attach-session -d -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
@ -32,11 +33,25 @@ function startNewDeck {
tmux attach -t $shellPane
}
function killDeck {
tmux kill-session -t bunkdeck
killDeck () {
if isExistingDeck; then
tmux kill-session -t $sessionname
else
echo "you don't have bunkdeck running!"
fi
}
function growPane {
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"
@ -62,7 +77,7 @@ function growPane {
esac
}
function shrinkPane {
shrinkPane () {
case $2 in
shell)
tmux resize-pane -t $shellPane -R "$3"
@ -88,6 +103,28 @@ function shrinkPane {
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"
}
usageText () {
echo "usage: bunkdeck [COMMAND]"
echo
echo "commands:"
echo " (none) attach to existing bunkdeck or start new one"
echo " kill kill running bunkdeck"
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"
}
case $1 in
@ -96,26 +133,24 @@ case $1 in
;;
"")
if isExistingDeck; then
tmux attach-session -t bunkdeck
attachToDeck
else
startNewDeck
fi
;;
leave)
leaveDeck
;;
grow)
growPane "$@"
;;
shrink)
shrinkPane "$@"
;;
help)
helpText
;;
*)
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 " shrink shrink the size of a bunkdeck window"
exit 1
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

122
install.sh Executable file
View file

@ -0,0 +1,122 @@
#!/bin/sh -e
installtarget=/usr/local/bin
bunkchatrepo=https://git.bunk.computer/bunk/bunkchat.git
missingtmux() {
echo
echo 'ERROR: tmux not found in $PATH'
echo ' please install tmux or add it to $PATH'
exit 1
}
missinggit() {
echo
echo 'ERROR: git not found in $PATH'
echo ' please install git or add it to $PATH'
exit 1
}
# check for tmux and cowsay
# if not prompt and exit
checkdeps() {
which tmux 1>/dev/null || missingtmux
which git 1>/dev/null || git
echo
echo 'deps located'
}
clonebunkchat() {
echo "cloning bunkchat repo"
git clone $bunkchatrepo
}
# if not found prompt for git clone or exit
prompttoclone() {
echo
echo "INFO: could not locate bunkchat scripts"
echo
printf "install bunkchat? (Y/n): "
read -r response
case $response in
n)
echo "exiting bunkchat install"
exit 0
;;
y)
clonebunkchat
;;
"")
clonebunkchat
;;
*)
prompttoclone
;;
esac
}
installbunkchat() {
(cd ../bunkchat && ./install.sh)
}
missingbunkchat() {
echo "bunk chat not installed"
# check for bunkchat repo in parent dir
needclone=1
for f in ./*
do
case $f in
bunkchat)
needclone=0
break
;;
esac
done
if [ $needclone == 1 ] ; then
prompttoclone
fi
# run bunkchat install script
installbunkchat
}
# check for installed bunkchat && continue
checkbunkchat() {
which heed 1>/dev/null || missingbunkchat
which proclaim 1>/dev/null || missingbunkchat
which scry 1>/dev/null || missingbunkchat
}
# install buckdeck in /usr/local/bin
installbunkdeck() {
echo "installing bunkchat"
cp bunkdeck $installtarget
chmod 755 ${installtarget}/bunkdeck
chown root:root ${installtarget}/bunkdeck
echo
echo "SUCCESS! bunkdeck installed!"
}
infocron() {
echo
echo "INFO: bunkdeck comes with a script to clear chat history"
echo " if you would like to enable this copy the script to crontab scripts"
echo " and enable a cron for your desired cadence"
echo
echo "# cp delete.sh /root/crontab-scripts/delete-bunkchat.sh"
echo "# crontab -u root -e"
echo "# EXAMPLE FOR WEEKLY HISTORY DELETION"
echo "0 0 * * 6 /root/crontab-scripts/delete-bunkchat.sh"
}
# check for root perms
if ! [ "$(id -u)" = 0 ]; then
echo
echo "ERROR: please run install with root permissions"
exit 1
fi
checkdeps
checkbunkchat
installbunkdeck
infocron
exit 0

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` - 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

3
scry
View file

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

40
uninstall.sh Executable file
View file

@ -0,0 +1,40 @@
#!/bin/sh -e
installtarget=/usr/local/bin
# check for root perms
if ! [ "$(id -u)" = 0 ]; then
echo
echo "ERROR: please run install with root permissions"
exit 1
fi
echo
echo "uninstalling bunkdeck"
echo
printf "also uninstall bunkchat commands? (y/N): "
read -r response
case $response in
n)
rm ${installtarget}/bunkdeck
;;
"")
rm ${installtarget}/bunkdeck
;;
y)
(../bunkchat/uninstall.sh)
# 2>/dev/null || \
# echo && echo "ERROR: couldn't run bunkchat uninstall script" && exit 1
rm ${installtarget}/bunkdeck
;;
*)
echo
echo "ERROR: invalid response"
exit 1
;;
esac
echo
echo "SUCCESS: bunkdeck uninstalled"
echo " remember to clean up crontab /root/crontab-scripts/delete-bunkchat.sh"
exit 0