From cd14df1f111da2cea10b995e9779625141fc6422 Mon Sep 17 00:00:00 2001 From: oxaliq Date: Fri, 12 Apr 2024 14:50:55 -0400 Subject: [PATCH 01/13] change default chat.log location and tone of prompts --- heed | 13 +++++++++---- proclaim | 34 +++++++++++++++++++--------------- scry | 3 ++- 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/heed b/heed index 96a82d5..8fa5231 100755 --- a/heed +++ b/heed @@ -1,12 +1,17 @@ #!/bin/sh -e +chatlog=var/log/bunkchat/chat.log + clear -figlet -f future heed - bunkchat +echo "╻ ╻┏━╸┏━╸╺┳┓ ┏┓ ╻ ╻┏┓╻╻┏ ┏━╸╻ ╻┏━┓╺┳╸" +echo "┣━┫┣╸ ┣╸ ┃┃ ╺━╸ ┣┻┓┃ ┃┃┗┫┣┻┓┃ ┣━┫┣━┫ ┃ " +echo "╹ ╹┗━╸┗━╸╺┻┛ ┗━┛┗━┛╹ ╹╹ ╹┗━╸╹ ╹╹ ╹ ╹ " + 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 " 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 +tail -f $chatlog diff --git a/proclaim b/proclaim index 48391ce..bc4213d 100755 --- a/proclaim +++ b/proclaim @@ -1,17 +1,18 @@ -#!/bin/bash -e +#!/bin/sh -e # make username uppercase username=$(echo "$USER" | tr '[:lower:]' '[:upper:]') -timezone="America/New_York" -declare prompt +timezone=UTC +chatlog=/var/log/bunkchat/chat.log +prompt="" makeSlug () { - # make time and date - time=$(TZ=${timezone} date +%I:%M%p) - date=$(TZ=${timezone} date +%m/%d) + # 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}" + # make name/time string + prompt="${username}-${date}-${time}" } # enter bunkchat mode (clear the screen) @@ -19,11 +20,14 @@ 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 + echo "┏━┓┏━┓┏━┓┏━╸╻ ┏━┓╻┏┳┓ ┏┓ ╻ ╻┏┓╻╻┏ ┏━╸╻ ╻┏━┓╺┳╸" + echo "┣━┛┣┳┛┃ ┃┃ ┃ ┣━┫┃┃┃┃ ╺━╸ ┣┻┓┃ ┃┃┗┫┣┻┓┃ ┣━┫┣━┫ ┃ " + echo "╹ ╹┗╸┗━┛┗━╸┗━╸╹ ╹╹╹ ╹ ┗━┛┗━┛╹ ╹╹ ╹┗━╸╹ ╹╹ ╹ ╹ " + echo "You may view old chat with 'scry'!" + echo "----------------------------------" + printf "speak to the server: " >&2 + read -r text + makeSlug + echo "${prompt}: $text" >> $chatlog + clear done diff --git a/scry b/scry index 432c623..1fe2cdf 100755 --- a/scry +++ b/scry @@ -1,3 +1,4 @@ #!/bin/sh -e +chatlog=/var/log/bunkchat/chat.log -less /srv/bunkchat.txt +less $chatlog From 7f11ba1b611b4ca367156e1bf198dae6feb06ea3 Mon Sep 17 00:00:00 2001 From: oxaliq Date: Sat, 13 Apr 2024 14:48:32 -0400 Subject: [PATCH 02/13] add install script --- build | 43 +++++++++++++++++++++++++++++++++++++++++++ proclaim | 2 +- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100755 build diff --git a/build b/build new file mode 100755 index 0000000..ddeb17b --- /dev/null +++ b/build @@ -0,0 +1,43 @@ +#!/bin/sh -e +# install.sh +installtarget=/usr/local/bin +chatlogdir=/var/log/bunkchat +chatlog=chat.log + +if ! [$(id -u) = 0]; then + echo "ERROR: please run install with root permission" >&2 + exit 1 +fi + +chattrfailed() { + set +e + rm -rf $chatlogdir + echo + echo "ERROR: could not set append only attribute in ${chatlogdir}" + echo " does your filesystem support 'chattr +a' ?" + exit 1 +} + +# do this setup first in case chattr fails +# mk chat directory and touch file +mkdir $chatlogdir +chmod 755 $chatlogdir + +touch ${chatlogdir}/${chatlog} +chmod 666 ${chatlogdir}/${chatlog} +# if chattr +a not supported on this file system catch error and clean up +chattr +a ${chatlogdir}/${chatlog} || chattrfailed + +cp proclaim heed scry $installtarget + +chmod 755 ${installtarget}/proclaim +chmod 755 ${installtarget}/heed +chmod 755 ${installtarget}/scry + +chown root:root ${installtarget}/proclaim +chown root:root ${installtarget}/heed +chown root:root ${installtarget}/scry + + +echo "SUCCESS! bunkchat installed!" +exit 0 diff --git a/proclaim b/proclaim index bc4213d..b958e0b 100755 --- a/proclaim +++ b/proclaim @@ -25,7 +25,7 @@ do echo "╹ ╹┗╸┗━┛┗━╸┗━╸╹ ╹╹╹ ╹ ┗━┛┗━┛╹ ╹╹ ╹┗━╸╹ ╹╹ ╹ ╹ " echo "You may view old chat with 'scry'!" echo "----------------------------------" - printf "speak to the server: " >&2 + printf "speak to the server: " read -r text makeSlug echo "${prompt}: $text" >> $chatlog From ef8b1bbcb29f031d3e2aa3f3e436d386bfebc356 Mon Sep 17 00:00:00 2001 From: maren Date: Sat, 13 Apr 2024 15:13:03 -0400 Subject: [PATCH 03/13] fix install script --- build => install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename build => install.sh (97%) diff --git a/build b/install.sh similarity index 97% rename from build rename to install.sh index ddeb17b..dc110ee 100755 --- a/build +++ b/install.sh @@ -4,7 +4,7 @@ installtarget=/usr/local/bin chatlogdir=/var/log/bunkchat chatlog=chat.log -if ! [$(id -u) = 0]; then +if ! [ "$(id -u)" = 0 ]; then echo "ERROR: please run install with root permission" >&2 exit 1 fi From 06725dfcd507e0e99aefb313fe296a4f54813d10 Mon Sep 17 00:00:00 2001 From: maren Date: Sat, 13 Apr 2024 15:21:16 -0400 Subject: [PATCH 04/13] fix path typo also modify info prompt --- heed | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/heed b/heed index 8fa5231..374bba2 100755 --- a/heed +++ b/heed @@ -1,6 +1,6 @@ #!/bin/sh -e -chatlog=var/log/bunkchat/chat.log +chatlog=/var/log/bunkchat/chat.log clear @@ -10,7 +10,7 @@ echo "╹ ╹┗━╸┗━╸╺┻┛ ┗━┛┗━┛╹ ╹╹ 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 " You can view earlier chat with 'scry'!" echo "#######################################################################" echo From b13b57f15b5df5cb028f60c326d5f353ac7cc477 Mon Sep 17 00:00:00 2001 From: maren Date: Sat, 13 Apr 2024 19:35:41 -0400 Subject: [PATCH 05/13] handle re-install gracefully --- install.sh | 57 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/install.sh b/install.sh index dc110ee..c82315c 100755 --- a/install.sh +++ b/install.sh @@ -1,14 +1,9 @@ #!/bin/sh -e -# install.sh + installtarget=/usr/local/bin chatlogdir=/var/log/bunkchat chatlog=chat.log -if ! [ "$(id -u)" = 0 ]; then - echo "ERROR: please run install with root permission" >&2 - exit 1 -fi - chattrfailed() { set +e rm -rf $chatlogdir @@ -18,26 +13,38 @@ chattrfailed() { exit 1 } -# do this setup first in case chattr fails -# mk chat directory and touch file -mkdir $chatlogdir -chmod 755 $chatlogdir +prep() { + mkdir -p $chatlogdir + chmod 755 $chatlogdir + touch ${chatlogdir}/${chatlog} + chmod 666 ${chatlogdir}/${chatlog} + # if chattr +a not supported on this file system, catch error and clean up + chattr +a ${chatlogdir}/${chatlog} || chattrfailed +} -touch ${chatlogdir}/${chatlog} -chmod 666 ${chatlogdir}/${chatlog} -# if chattr +a not supported on this file system catch error and clean up -chattr +a ${chatlogdir}/${chatlog} || chattrfailed +install() { + cp proclaim heed scry $installtarget + chmod 755 ${installtarget}/proclaim + chmod 755 ${installtarget}/heed + chmod 755 ${installtarget}/scry + chown root:root ${installtarget}/proclaim + chown root:root ${installtarget}/heed + chown root:root ${installtarget}/scry -cp proclaim heed scry $installtarget + echo "SUCCESS! bunkchat installed!" + exit 0 +} -chmod 755 ${installtarget}/proclaim -chmod 755 ${installtarget}/heed -chmod 755 ${installtarget}/scry +# check for root perms +if ! [ "$(id -u)" = 0 ]; then + echo "ERROR: please run install with root permission" >&2 + exit 1 +fi -chown root:root ${installtarget}/proclaim -chown root:root ${installtarget}/heed -chown root:root ${installtarget}/scry - - -echo "SUCCESS! bunkchat installed!" -exit 0 +# if chat.log exists, skip prep +if [ -f ${chatlogdir}/${chatlog} ]; then + install +else + prep + install +fi From 08646a05d44a55d8f0ba3e65b7977a7cf8c7a1bb Mon Sep 17 00:00:00 2001 From: maren Date: Sat, 13 Apr 2024 19:36:15 -0400 Subject: [PATCH 06/13] fuss with prompts --- heed | 9 ++++----- proclaim | 1 + 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/heed b/heed index 374bba2..9a6d241 100755 --- a/heed +++ b/heed @@ -7,11 +7,10 @@ clear echo "╻ ╻┏━╸┏━╸╺┳┓ ┏┓ ╻ ╻┏┓╻╻┏ ┏━╸╻ ╻┏━┓╺┳╸" echo "┣━┫┣╸ ┣╸ ┃┃ ╺━╸ ┣┻┓┃ ┃┃┗┫┣┻┓┃ ┣━┫┣━┫ ┃ " echo "╹ ╹┗━╸┗━╸╺┻┛ ┗━┛┗━┛╹ ╹╹ ╹┗━╸╹ ╹╹ ╹ ╹ " - -echo "#######################################################################" -echo " Take heed, $USER! This is a group chat with everyone on the server!" -echo " You can view earlier chat with 'scry'!" -echo "#######################################################################" +echo "Take heed, $USER! This is a group chat with everyone on the server!" +echo "You may post in chat with 'proclaim'!" +echo "You may view old chat with 'scry'!" +echo "----------------------------------" echo tail -f $chatlog diff --git a/proclaim b/proclaim index b958e0b..1d09759 100755 --- a/proclaim +++ b/proclaim @@ -23,6 +23,7 @@ do echo "┏━┓┏━┓┏━┓┏━╸╻ ┏━┓╻┏┳┓ ┏┓ ╻ ╻┏┓╻╻┏ ┏━╸╻ ╻┏━┓╺┳╸" echo "┣━┛┣┳┛┃ ┃┃ ┃ ┣━┫┃┃┃┃ ╺━╸ ┣┻┓┃ ┃┃┗┫┣┻┓┃ ┣━┫┣━┫ ┃ " echo "╹ ╹┗╸┗━┛┗━╸┗━╸╹ ╹╹╹ ╹ ┗━┛┗━┛╹ ╹╹ ╹┗━╸╹ ╹╹ ╹ ╹ " + echo "You may view current chat with 'heed'!" echo "You may view old chat with 'scry'!" echo "----------------------------------" printf "speak to the server: " From 29d6b0de4502e12e91e7c982f14d05f5fb014015 Mon Sep 17 00:00:00 2001 From: maren Date: Sat, 13 Apr 2024 19:39:57 -0400 Subject: [PATCH 07/13] prompt fuss --- proclaim | 1 + 1 file changed, 1 insertion(+) diff --git a/proclaim b/proclaim index 1d09759..1fd1777 100755 --- a/proclaim +++ b/proclaim @@ -23,6 +23,7 @@ do echo "┏━┓┏━┓┏━┓┏━╸╻ ┏━┓╻┏┳┓ ┏┓ ╻ ╻┏┓╻╻┏ ┏━╸╻ ╻┏━┓╺┳╸" echo "┣━┛┣┳┛┃ ┃┃ ┃ ┣━┫┃┃┃┃ ╺━╸ ┣┻┓┃ ┃┃┗┫┣┻┓┃ ┣━┫┣━┫ ┃ " echo "╹ ╹┗╸┗━┛┗━╸┗━╸╹ ╹╹╹ ╹ ┗━┛┗━┛╹ ╹╹ ╹┗━╸╹ ╹╹ ╹ ╹ " + echo "Proclaim your musings, $USER! This is a group chat with everyone on the server!" echo "You may view current chat with 'heed'!" echo "You may view old chat with 'scry'!" echo "----------------------------------" From d3145c607350b60ea6d2ddd4eb03e7bbd9512885 Mon Sep 17 00:00:00 2001 From: oxaliq Date: Mon, 15 Apr 2024 14:05:55 -0400 Subject: [PATCH 08/13] refactor bunkdeck with some add'l error handling and fixed format --- bunkdeck | 229 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 134 insertions(+), 95 deletions(-) diff --git a/bunkdeck b/bunkdeck index 907abaf..6de1c9a 100755 --- a/bunkdeck +++ b/bunkdeck @@ -1,121 +1,160 @@ -#!/bin/bash -set -e +#!/bin/sh -e +sessionname=bunkdeck heedPane="bunkdeck:0.0" proclaimPane="bunkdeck:0.1" shellPane="bunkdeck:0.2" -function isExistingDeck { - set +e - sessions=$(tmux list-sessions) - set -e +isExistingDeck () { + # format `-F '#S' # formats the result as just the session name` + # filter `-f "{==:#S,${sessionname}}` # only returns sessions named $sessionname + # capture error and redirect + sessions=$(tmux list-sessions -F '#S' -f "#{==:#S,${sessionname}}" 2>/dev/null) - if [[ $sessions == *"bunkdeck"* ]]; then - return 0 - else - return 1 - fi + if [ "${sessions}" = "${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 () { + tmux attach-session -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 From 383580a1ee75fafe299f88c18368d19c537a4090 Mon Sep 17 00:00:00 2001 From: oxaliq Date: Mon, 22 Apr 2024 15:26:03 -0400 Subject: [PATCH 09/13] remove bunkchat from repo --- bunkdeck | 16 ++++++---------- heed | 16 ---------------- install.sh | 49 ++----------------------------------------------- proclaim | 35 ----------------------------------- readme.md | 7 ++----- scry | 4 ---- 6 files changed, 10 insertions(+), 117 deletions(-) delete mode 100755 heed delete mode 100755 proclaim delete mode 100755 scry diff --git a/bunkdeck b/bunkdeck index 6de1c9a..590c05f 100755 --- a/bunkdeck +++ b/bunkdeck @@ -1,17 +1,12 @@ #!/bin/sh -e sessionname=bunkdeck -heedPane="bunkdeck:0.0" -proclaimPane="bunkdeck:0.1" -shellPane="bunkdeck:0.2" +heedPane=bunkdeck:0.0 +proclaimPane=bunkdeck:0.1 +shellPane=bunkdeck:0.2 isExistingDeck () { - # format `-F '#S' # formats the result as just the session name` - # filter `-f "{==:#S,${sessionname}}` # only returns sessions named $sessionname - # capture error and redirect - sessions=$(tmux list-sessions -F '#S' -f "#{==:#S,${sessionname}}" 2>/dev/null) - - if [ "${sessions}" = "${sessionname}" ] ; then + if tmux has -t $sessionname ; then return 0 else return 1 @@ -19,7 +14,8 @@ isExistingDeck () { } attachToDeck () { - tmux attach-session -t bunkdeck + # does not currently protect against nesting sessions (tmux does this for us) + tmux attach-session -d -t bunkdeck } startNewDeck () { diff --git a/heed b/heed deleted file mode 100755 index 9a6d241..0000000 --- a/heed +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -e - -chatlog=/var/log/bunkchat/chat.log - -clear - -echo "╻ ╻┏━╸┏━╸╺┳┓ ┏┓ ╻ ╻┏┓╻╻┏ ┏━╸╻ ╻┏━┓╺┳╸" -echo "┣━┫┣╸ ┣╸ ┃┃ ╺━╸ ┣┻┓┃ ┃┃┗┫┣┻┓┃ ┣━┫┣━┫ ┃ " -echo "╹ ╹┗━╸┗━╸╺┻┛ ┗━┛┗━┛╹ ╹╹ ╹┗━╸╹ ╹╹ ╹ ╹ " -echo "Take heed, $USER! This is a group chat with everyone on the server!" -echo "You may post in chat with 'proclaim'!" -echo "You may view old chat with 'scry'!" -echo "----------------------------------" -echo - -tail -f $chatlog diff --git a/install.sh b/install.sh index c82315c..046586a 100755 --- a/install.sh +++ b/install.sh @@ -1,50 +1,5 @@ #!/bin/sh -e -installtarget=/usr/local/bin -chatlogdir=/var/log/bunkchat -chatlog=chat.log -chattrfailed() { - set +e - rm -rf $chatlogdir - echo - echo "ERROR: could not set append only attribute in ${chatlogdir}" - echo " does your filesystem support 'chattr +a' ?" - exit 1 -} - -prep() { - mkdir -p $chatlogdir - chmod 755 $chatlogdir - touch ${chatlogdir}/${chatlog} - chmod 666 ${chatlogdir}/${chatlog} - # if chattr +a not supported on this file system, catch error and clean up - chattr +a ${chatlogdir}/${chatlog} || chattrfailed -} - -install() { - cp proclaim heed scry $installtarget - chmod 755 ${installtarget}/proclaim - chmod 755 ${installtarget}/heed - chmod 755 ${installtarget}/scry - chown root:root ${installtarget}/proclaim - chown root:root ${installtarget}/heed - chown root:root ${installtarget}/scry - - echo "SUCCESS! bunkchat installed!" - exit 0 -} - -# check for root perms -if ! [ "$(id -u)" = 0 ]; then - echo "ERROR: please run install with root permission" >&2 - exit 1 -fi - -# if chat.log exists, skip prep -if [ -f ${chatlogdir}/${chatlog} ]; then - install -else - prep - install -fi +# pull in bunkchat +# run bunkchat install script diff --git a/proclaim b/proclaim deleted file mode 100755 index 1fd1777..0000000 --- a/proclaim +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh -e - -# make username uppercase -username=$(echo "$USER" | tr '[:lower:]' '[:upper:]') -timezone=UTC -chatlog=/var/log/bunkchat/chat.log -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 - echo "┏━┓┏━┓┏━┓┏━╸╻ ┏━┓╻┏┳┓ ┏┓ ╻ ╻┏┓╻╻┏ ┏━╸╻ ╻┏━┓╺┳╸" - echo "┣━┛┣┳┛┃ ┃┃ ┃ ┣━┫┃┃┃┃ ╺━╸ ┣┻┓┃ ┃┃┗┫┣┻┓┃ ┣━┫┣━┫ ┃ " - echo "╹ ╹┗╸┗━┛┗━╸┗━╸╹ ╹╹╹ ╹ ┗━┛┗━┛╹ ╹╹ ╹┗━╸╹ ╹╹ ╹ ╹ " - echo "Proclaim your musings, $USER! This is a group chat with everyone on the server!" - echo "You may view current chat with 'heed'!" - echo "You may view old chat with 'scry'!" - echo "----------------------------------" - printf "speak to the server: " - read -r text - makeSlug - echo "${prompt}: $text" >> $chatlog - 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 1fe2cdf..0000000 --- a/scry +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -e -chatlog=/var/log/bunkchat/chat.log - -less $chatlog From 434cb22405c0c24a1b779e0e1e72e96200b7fe1e Mon Sep 17 00:00:00 2001 From: oxaliq Date: Mon, 22 Apr 2024 16:15:21 -0400 Subject: [PATCH 10/13] add delete script --- delete.sh | 6 ++++++ install.sh | 8 ++++++++ 2 files changed, 14 insertions(+) create mode 100644 delete.sh 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/install.sh b/install.sh index 046586a..04a2535 100755 --- a/install.sh +++ b/install.sh @@ -1,5 +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 From 8d976bfe63be828275017401a6d34ea6427c791c Mon Sep 17 00:00:00 2001 From: oxaliq Date: Mon, 22 Apr 2024 20:45:27 +0000 Subject: [PATCH 11/13] 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 From 6f0c932f9c9675805dfda3093ee36e10bfe31851 Mon Sep 17 00:00:00 2001 From: maren Date: Fri, 3 May 2024 02:55:38 +0000 Subject: [PATCH 12/13] license cc0 (#3) she's in the commons now Co-authored-by: maren Co-committed-by: maren --- LICENSE.txt | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..6ca207e --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,122 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. + From 6a641c7e5c0599fc1b7e6dd64904348d9d984799 Mon Sep 17 00:00:00 2001 From: oxaliq Date: Mon, 13 May 2024 18:16:06 -0400 Subject: [PATCH 13/13] tmp install script --- install.sh | 123 ++++++++++++++++++++++++++++++++++++++++++++++++--- uninstall.sh | 40 +++++++++++++++++ 2 files changed, 156 insertions(+), 7 deletions(-) create mode 100755 uninstall.sh diff --git a/install.sh b/install.sh index 04a2535..fb1647e 100755 --- a/install.sh +++ b/install.sh @@ -1,13 +1,122 @@ #!/bin/sh -e -# TODO +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 -# pull in bunkchat -# run bunkchat install script -# install buckdeck in /usr/local/bin +checkdeps() { + which tmux 1>/dev/null || missingtmux + which git 1>/dev/null || git + echo + echo 'deps located' +} -# prompt user to install delete.sh in /root/crontab-scripts/delete-bunkchat.sh -# prompt with crontab config +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 diff --git a/uninstall.sh b/uninstall.sh new file mode 100755 index 0000000..9ae4c23 --- /dev/null +++ b/uninstall.sh @@ -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