From e6697be7702ef1df4857cb59bbd4082118f738c4 Mon Sep 17 00:00:00 2001 From: Gordon Grant-Stuart Date: Sat, 29 Jul 2023 13:10:22 +0100 Subject: [PATCH] Updating repo to current version --- .Books/atmo.sh | 15 ++++------ .Books/booksenv.sh | 12 ++++---- .Books/branchy.sh | 22 --------------- .Books/compile.sh | 34 +++++++++++++++-------- .Books/download.sh | 7 ++--- .Books/history | 5 ---- .Books/load.sh | 14 ---------- .Books/rollback.sh | 68 ++++++++++++++++++++++++++++++---------------- .Books/save.sh | 13 --------- .Books/upload.sh | 20 ++++++++------ .Books/watchy.sh | 36 ------------------------ .Books/write.sh | 41 ++++++++++++---------------- init.sh | 5 ++++ 13 files changed, 115 insertions(+), 177 deletions(-) delete mode 100755 .Books/branchy.sh delete mode 100644 .Books/history delete mode 100755 .Books/load.sh delete mode 100755 .Books/save.sh delete mode 100755 .Books/watchy.sh diff --git a/.Books/atmo.sh b/.Books/atmo.sh index 82180ca..65e3395 100755 --- a/.Books/atmo.sh +++ b/.Books/atmo.sh @@ -1,25 +1,20 @@ #!/bin/bash -SCRIPT_DIR=$(dirname $(realpath $0)) -BG_DIR="${SCRIPT_DIR/\/.Books/}/backgrounds" - while [[ $chosen != 'chosen' ]]; do clear echo -e "============================================\033[1;38;5;94m" - ls $BG_DIR + ls $HOME/.Books/backgrounds echo -e "\033[38;5;95m============================================" - cd $BG_DIR + cd $HOME/.Books/backgrounds read -e -p " Choose a background:$(echo -e "\033[1;38;5;94m") " bg - - if [[ -e "$bg" && "$bg" =~ \.(jpg|jpeg)$ ]]; then echo - $SCRIPT_DIR/viu "$bg" -w64 + $HOME/.Books/viu "$bg" -w64 echo read -sn1 -p "This one? [Y|n]" yn if [[ ! ${yn^^} == 'N' ]]; then - rm -f $SCRIPT_DIR/backgrounds/atmo.jpg - ln -s "$(realpath "$bg")" $SCRIPT_DIR/backgrounds/atmo.jpg + rm -f $HOME/.Books/backgrounds/atmo.jpg + ln -s "$(realpath "$bg")" $HOME/.Books/backgrounds/atmo.jpg chosen='chosen' fi echo diff --git a/.Books/booksenv.sh b/.Books/booksenv.sh index acd0567..050b7e0 100755 --- a/.Books/booksenv.sh +++ b/.Books/booksenv.sh @@ -10,14 +10,14 @@ darkbrown="\[\033[38;5;95m\]" export MANUSKRIPT_BIN="$HOME/.Books/manuskript/bin/manuskript" # export MANUSKRIPT_BIN="manuskript" -alias upload="$HOME/.Books/upload.sh" -alias download="$HOME/.Books/download.sh" -alias write="$HOME/.Books/write.sh" -alias wryte="$HOME/.Books/write.sh" -alias manuskript="$HOME/.Books/write.sh" alias atmo="$HOME/.Books/atmo.sh" alias compile="$HOME/.Books/compile.sh" -# alias rollback="$HOME/.Books/rollback.sh" +alias download="$HOME/.Books/download.sh" +alias manuskript="$HOME/.Books/write.sh" +alias rollback="$HOME/.Books/rollback.sh" +alias upload="$HOME/.Books/upload.sh" +alias write="$HOME/.Books/write.sh" +alias wryte="$HOME/.Books/write.sh" # mkdir -p /tmp/manuskriptbackups # find /tmp/manuskriptbackups/ -ctime +1 | xargs -I% rm % # remove backups older than a day diff --git a/.Books/branchy.sh b/.Books/branchy.sh deleted file mode 100755 index 0c4710f..0000000 --- a/.Books/branchy.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash - -SCRIPT_DIR=$(dirname $(realpath $0)) -BOOK_DIR=${SCRIPT_DIR/\/.Books/} - -# PERIOD=10 - -while [[ ! `pgrep -f "manuskript $1"` ]]; do - sleep 0.5 -done -notify-send "Making backups of $1 every $PERIOD seconds." -tick=1 -while [[ `pgrep -f "manuskript $1"` ]]; do - sleep 1 - if [[ $tick -ge $PERIOD ]]; then - committy "$1" - tick=0 - fi - tick=$(( $tick + 1 )) -done -notify-send "No longer making backups of $1." -rm -f $BOOK_DIR/nohup.out diff --git a/.Books/compile.sh b/.Books/compile.sh index aee8d4b..a2867ed 100755 --- a/.Books/compile.sh +++ b/.Books/compile.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash SCRIPT_DIR=$(dirname $(realpath $0)) -BOOK_DIR=${SCRIPT_DIR/\/.Books/} +BOOK_DIR="$(cat $HOME/.Books/bookdir)" ####### defaults ######### YAML=$SCRIPT_DIR/frontmatter.yml @@ -11,17 +11,29 @@ SCENE_BREAK="\n\n### #\n\n" LINE_BREAK="\n" ####### options ######### -while getopts "hy:edsf:" opt; do - case $opt in - y) YAML=$OPTARG ;; - e) OUTPUT_FORMAT=epub ;; - d) OUTPUT_FORMAT=docx ;; - s) TEMPLATE=md2short.sh ;; - f) OUTPUT_FORMAT=$OPTARG ;; - h) echo "USAGE: compile [-y frontmatter.yml ] [ -e | -d | -f format ] FILE.msk" ;; +while [[ $# -gt 1 ]]; do + case "$1" in + -y) shift; YAML=$1 ;; + -e) OUTPUT_FORMAT=epub ;; + -d) OUTPUT_FORMAT=docx ;; + -s) TEMPLATE=md2short.sh ;; + -f) shift; OUTPUT_FORMAT=$1 ;; + -h) echo "USAGE: compile [-y frontmatter.yml ] [ -e | -d | -f format ] FILE.msk"; exit 0 ;; esac + shift done -shift $((OPTIND-1)) + +# while getopts "hy:edsf:" opt; do +# case $opt in +# y) YAML=$OPTARG ;; +# e) OUTPUT_FORMAT=epub ;; +# d) OUTPUT_FORMAT=docx ;; +# s) TEMPLATE=md2short.sh ;; +# f) OUTPUT_FORMAT=$OPTARG ;; +# h) echo "USAGE: compile [-y frontmatter.yml ] [ -e | -d | -f format ] FILE.msk" ;; +# esac +# done +# shift $((OPTIND-1)) msk=$1 echo -e "*********** compiling *******************\033[19D$msk " @@ -82,7 +94,7 @@ case $OUTPUT_FORMAT in echo -en "\033[1;38;5;94m" $SCRIPT_DIR/pandoc-templates/bin/$TEMPLATE --output "$booktitle.$OUTPUT_FORMAT" --overwrite $compiled_md #&> /dev/null ;; - epub) + epub | mobi ) compile echo -en "\033[1;38;5;94m" pandoc --from=markdown --to=epub --css=$SCRIPT_DIR/epub.css --output="$booktitle.$OUTPUT_FORMAT" --toc $compiled_md #&> /dev/null diff --git a/.Books/download.sh b/.Books/download.sh index 974c2b8..728d837 100755 --- a/.Books/download.sh +++ b/.Books/download.sh @@ -1,9 +1,8 @@ #!/usr/bin/env bash -SCRIPT_DIR=$(dirname $(realpath $0)) -BOOK_DIR=${SCRIPT_DIR/\/.Books/} +BOOK_DIR="$(cat $HOME/.Books/bookdir)" -[[ ! -e $SCRIPT_DIR/initted ]] && $BOOK_DIR/init.sh -[[ ! -e $BOOK_DIR/backgrounds ]] && ln -s "$SCRIPT_DIR/backgrounds" "$BOOK_DIR/backgrounds" +[[ ! -e $HOME/.Books/initted ]] && $BOOK_DIR/init.sh +[[ ! -e $BOOK_DIR/backgrounds ]] && ln -s "$HOME/.Books/backgrounds" "$BOOK_DIR/backgrounds" cd $BOOK_DIR && git pull diff --git a/.Books/history b/.Books/history deleted file mode 100644 index c908aa1..0000000 --- a/.Books/history +++ /dev/null @@ -1,5 +0,0 @@ -download -upload -compile -atmo -wryte diff --git a/.Books/load.sh b/.Books/load.sh deleted file mode 100755 index 06ef99d..0000000 --- a/.Books/load.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash - -SCRIPT_DIR=$(dirname $(realpath $0)) - -[[ ! -e $SCRIPT_DIR/.Books/initted ]] && $SCRIPT_DIR/init.sh -[[ ! -e $SCRIPT_DIR/backgrounds ]] && ln -s "$SCRIPT_DIR/.Books/backgrounds" "$SCRIPT_DIR/backgrounds" - -cd $SCRIPT_DIR && git pull -mv -f $SCRIPT_DIR/*.msk $SCRIPT_DIR/.Books/backup/ - -for dir in $SCRIPT_DIR/.Books/unpacked/*; do - TITLE=${dir##*/} - cd "$SCRIPT_DIR/.Books/unpacked/$TITLE" && zip -qu -9 -r "$SCRIPT_DIR/$TITLE.msk" * -done diff --git a/.Books/rollback.sh b/.Books/rollback.sh index 6b2a57a..83a1b42 100755 --- a/.Books/rollback.sh +++ b/.Books/rollback.sh @@ -1,28 +1,48 @@ #!/usr/bin/env bash -# check args -SCRIPT_DIR=$(dirname $(realpath $0)) -BOOK_DIR=${SCRIPT_DIR/\/.Books/} +BOOK_DIR="$(cat $HOME/.Books/bookdir)" -if [[ $# -eq 2 && -e $1 && $2 =~ [0-9]+ ]]; then - # ls -1 /tmp/manuskriptbackups/ | wc -l - rollto=$(find /tmp/manuskriptbackups/ -name "*$1.*" -cmin +$2 | sort | tail -n1) - if [[ -n $rollto ]]; then - if [[ `pgrep -f "manuskript $1"` ]]; then - echo $1 is still open in Manuskript - else - mv $BOOK_DIR/$1 $BOOK_DIR/$1.$(date +"%Y-%m-%d_%H:%M:%S") - mv $rollto $BOOK_DIR/$1 - echo $1 rolled back to $rollto - fi - else - echo There is no backup of $1 from more than $2 minutes ago. - fi -else - echo - echo "USAGE : rollback FILE N" - echo - echo " FILE : .msk file" - echo " N : minutes to roll back" - echo +lb=$(echo -e '\033[38;5;94m') +db=$(echo -e '\033[38;5;95m') +blank=$(echo -e '\033[0m') +bold=$(echo -e '\033[1m') + + +#check if any instances of write.sh FORKED or manuskript are running first +if (ps -ef | grep -v grep | grep manuskript &>/dev/null); then + echo "You need to exit Manuskript before you roll back." + exit 1 fi +pkill -f "write.sh FORKED" + +cd $BOOK_DIR + +if ! (git log --oneline | grep -n autosave | grep -v HEAD &>/dev/null); then + echo "Nothing to roll back to." + exit +fi + +echo "===============================================" + +now=$(date +%s) + +git log --oneline | grep -n autosave | grep -v HEAD | head -n 10 | while read line; do + ln=${line%%:*} + savetime=$(date -d "$(echo $line | awk '{print $2 " " $3}')" +%s) + ago=$(( (now - savetime) / 60 )) + echo "${bold}${lb}${ln}${blank}@${db}$(date -d @$savetime +'%a %d %b %H:%M:%S')${blank}@${lb}${ago} minutes ago" +done | column -s@ -t --table-columns Save,Time, --table-right Save + +echo $db +read -ep " Choose a save to roll back to: $lb" saveno +echo +ddate=$(git log --oneline | grep -n --color=always autosave | grep --color=always -v HEAD | head -n $saveno | tail -n1 | awk '{print $2 " " $3}' | xargs -I@ date -d '@') +read -sn1 -p "$db Restore save from${lb} ${ddate}${db}? [y|N]" yn +if [ ${yn,,} == 'y' ]; then + savecommit=$(git log --oneline | grep -n autosave | grep -v HEAD | head -n $saveno | tail -n1 | sed -E 's/[0-9]*:([0-9a-f]*) .*/\1/') + echo + echo + git reset --hard $savecommit &>/dev/null + echo " Rolled back to $ddate." +fi +echo \ No newline at end of file diff --git a/.Books/save.sh b/.Books/save.sh deleted file mode 100755 index 236b137..0000000 --- a/.Books/save.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -SCRIPT_DIR=$(dirname $(realpath $0)) - -for msk in *.msk; do - TITLE="${msk%.msk}" - rm -rf "$SCRIPT_DIR/.Books/unpacked/$TITLE" - unzip -qou "$msk" -d "$SCRIPT_DIR/.Books/unpacked/$TITLE" -done - -cd $SCRIPT_DIR && git add . -git commit -m "Saved at $(date)" -git push diff --git a/.Books/upload.sh b/.Books/upload.sh index b7bc876..e293c21 100755 --- a/.Books/upload.sh +++ b/.Books/upload.sh @@ -1,12 +1,16 @@ #!/usr/bin/env bash -SCRIPT_DIR=$(dirname $(realpath $0)) -BOOK_DIR=${SCRIPT_DIR/\/.Books/} +BOOK_DIR="$(cat $HOME/.Books/bookdir)" +cd $BOOK_DIR -cd $BOOK_DIR && git add . -git commit -m "Saved at $(date) from $(hostname)" -git push #&& find /tmp/manuskriptbackups/ -cmin +60 | xargs -I% rm -f % - -if [[ -e "$SCRIPT_DIR/local.d/postupload.sh" ]]; then - $SCRIPT_DIR/local.d/postupload.sh +git add . +if (git log --oneline | grep autosave &>/dev/null); then # autosaves exist + firstautosavecommit=$(git log --oneline | grep autosave | tail -n1 | cut -d\ -f1) + git reset --soft ${firstautosavecommit}~1 +fi +git commit -m "Uploaded at $(date) from $(hostname)" +git push + +if [[ -e "$HOME/.Books/local.d/postupload.sh" ]]; then + $HOME/.Books/local.d/postupload.sh fi diff --git a/.Books/watchy.sh b/.Books/watchy.sh deleted file mode 100755 index 7d99c33..0000000 --- a/.Books/watchy.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash - -SCRIPT_DIR=$(dirname $(realpath $0)) -BOOK_DIR=${SCRIPT_DIR/\/.Books/} - -# PERIOD=10 - -mds() { - md5sum "$1" | awk '{print $1}' -} - -savey() { - newhash=$(mds "$1") - if [[ ! $newhash == $hash ]]; then - cp "$1" "/tmp/manuskriptbackups/$1.$(date +"%Y-%m-%d_%H:%M:%S")" - hash=$newhash - fi -} - - -while [[ ! `pgrep -f "manuskript $1"` ]]; do - sleep 0.5 -done -notify-send "Making backups of $1 every $PERIOD seconds." -tick=1 -hash=$(mds "$1") -while [[ `pgrep -f "manuskript $1"` ]]; do - sleep 1 - if [[ $tick -ge $PERIOD ]]; then - savey "$1" - tick=0 - fi - tick=$(( $tick + 1 )) -done -notify-send "No longer making backups of $1." -rm -f $BOOK_DIR/nohup.out diff --git a/.Books/write.sh b/.Books/write.sh index 01b3e17..fbb61a8 100755 --- a/.Books/write.sh +++ b/.Books/write.sh @@ -1,30 +1,23 @@ #!/usr/bin/env bash -# SCRIPT_DIR=$(dirname $(realpath $0)) -# BOOK_DIR=${SCRIPT_DIR/\/.Books/} +BOOK_DIR="$(cat $HOME/.Books/bookdir)" -# PERIOD=10 +if [[ $1 == 'FORKED' ]]; then + sleep 60 + while (ps -ef | grep -v grep | grep manuskript &>/dev/null); do + cd $BOOK_DIR + git add . + git commit -m "$(date +'%Y-%m-%d %H:%M:%S') autosave." + sleep 60 + done + exit +fi -# bronch() { -# screen -d -m nohup $MANUSKRIPT_BIN "$1" & -# screen -d -m nohup $SCRIPT_DIR/branchy.sh "$1" & -# } +if (ps -ef | grep -v grep | grep manuskript &>/dev/null); then + echo "Manuskript is already running." + exit +fi -# worch() { -# screen -d -m nohup $MANUSKRIPT_BIN "$1" & -# screen -d -m nohup $SCRIPT_DIR/watchy.sh "$1" & -# } -# if [[ -f "$1" && -d "${1/.msk/}" ]]; then -# bronch "$1" -# elif [[ -d "$1" && -f "$1.msk" ]]; then -# bronch "$1.msk" -# fi - -# if [[ -e "$1" && $(cat $1 | wc -c) -gt 10 ]]; then -# bronch "$1" -# else -# screen -d -m nohup $MANUSKRIPT_BIN & -# fi - -screen -d -m nohup $MANUSKRIPT_BIN &>/dev/null & \ No newline at end of file +screen -d -m nohup $MANUSKRIPT_BIN &>/dev/null & +screen -d -m nohup $0 FORKED &>/dev/null & diff --git a/init.sh b/init.sh index 0a252b4..1ffa7c5 100755 --- a/init.sh +++ b/init.sh @@ -104,5 +104,10 @@ if [[ $(echo $rou | egrep -c [^:]*:[^@]*@ ) -eq 0 ]]; then #sed -i "s/https:\/\/git.grant-stuart.com/https:\/\/gordon:$answer@git.grant-stuart.com/g; s/https:\/\/git.grant-stuart.com/\&/g" $SCRIPT_DIR/.git/config fi +echo -e "$lightbrown Edit your Author details." +echo -e "$darkbrown Press any key to begin." +read -n1 +nano $HOME/.Books/frontmatter.yml || vi $HOME/.Books/frontmatter.yml + # sed -i "s%WIBBLE%$SCRIPT_DIR%g" $HOME/.Books/booksenv.sh touch $HOME/.Books/initted