Useful scripts
This commit is contained in:
parent
cdcb99614b
commit
3f8dc335a0
4 changed files with 140 additions and 0 deletions
24
scripts/prefix/bin/coc
Executable file
24
scripts/prefix/bin/coc
Executable file
|
@ -0,0 +1,24 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# "coc" stands for "compile on change" and runs the supplied compile
|
||||
# command when the given list of files is changed.
|
||||
#
|
||||
# coc [command] [fileToCompile] [filesToWatch]
|
||||
#
|
||||
# If no explicit list of files to watch is given, fileToCompile is
|
||||
# watched.
|
||||
|
||||
command=$1
|
||||
file=$2
|
||||
shift 2
|
||||
watchedFiles=$@
|
||||
|
||||
if [ -z "$watchedFiles" ] ; then
|
||||
watchedFiles=$file
|
||||
fi
|
||||
|
||||
while true ; do
|
||||
date
|
||||
inotifywait -e modify $watchedFiles
|
||||
$command $file
|
||||
done
|
74
scripts/prefix/bin/mvln
Executable file
74
scripts/prefix/bin/mvln
Executable file
|
@ -0,0 +1,74 @@
|
|||
#!/bin/bash
|
||||
# Moves and links a file back at its initial location
|
||||
# It can not cross filesystems!
|
||||
#
|
||||
# Usage: mvln PATH1 PATH2
|
||||
# Depends on: realpath, basename, dirname
|
||||
|
||||
if [[ $# -ne 2 ]]
|
||||
then
|
||||
echo "Usage: mvln <PATH1> <PATH2>"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Step 1: building full path out of both arguments #############################
|
||||
[[ $1 =~ ^/ ]] && F1=$1 || F1=$(realpath -s $1)
|
||||
[[ $2 =~ ^/ ]] && F2=$2 || F2=$(realpath -s $2)
|
||||
|
||||
# Step 2: enumerating all interesting cases ####################################
|
||||
# PATH1 can be:
|
||||
if [[ -f $F1 ]]
|
||||
then STATE1="0" # a regular file
|
||||
elif [[ -d $PWD/$F1 ]]
|
||||
then STATE1="1" # a directory
|
||||
elif [[ -e $F1 ]]
|
||||
then STATE1="8" # an other kind of file
|
||||
else STATE1="9" # a non-existent file
|
||||
fi
|
||||
|
||||
# PATH2 can be:
|
||||
if [[ -d $F2 ]]
|
||||
then STATE2="0" # a directory
|
||||
elif [[ -d $(dirname $F2) ]]
|
||||
then STATE2="1" # a non-existent file in an existent directory
|
||||
elif [[ -e $F2 ]]
|
||||
then STATE2="8" # any other kind of file
|
||||
else STATE2="9" # a non-existent file in a non-existent directory
|
||||
fi
|
||||
|
||||
# Step 3: eat this my little state automaton ###################################
|
||||
STATE="$STATE1$STATE2"
|
||||
case $STATE in
|
||||
[89]* )
|
||||
echo "$F1 is not a proper file (or a non-existent one)"
|
||||
echo "Note that only regular files and directories are allowed"
|
||||
exit $STATE
|
||||
;;
|
||||
*[89] )
|
||||
echo "$F2 can not be created (containing directory does not exist)"
|
||||
echo "or exists already (refusing to overwrite)"
|
||||
exit $STATE
|
||||
;;
|
||||
[01]0 ) # file or dir to an existing dir
|
||||
DEGUB="File/Dir to same name in existing dir"
|
||||
PATH1=$F1
|
||||
PATH2=$F2/$(basename $F1)
|
||||
;;
|
||||
[01]1 ) # file to new file name in an existing dir
|
||||
DEGUB="File/Dir to new name in existing dir"
|
||||
PATH1=$F1
|
||||
PATH2=$F2
|
||||
;;
|
||||
* )
|
||||
echo "Uncaught error (this is f*****g bad)"
|
||||
exit $STATE
|
||||
;;
|
||||
esac
|
||||
|
||||
#echo $DEGUB
|
||||
|
||||
# Step 4: eventually act upon gathered knowledge ###############################
|
||||
mv $PATH1 $PATH2
|
||||
cd $(dirname $PATH1)
|
||||
ln -s $PATH2 $(basename $PATH1)
|
||||
|
33
scripts/prefix/bin/vpn
Executable file
33
scripts/prefix/bin/vpn
Executable file
|
@ -0,0 +1,33 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [[ $# -ne 1 ]]
|
||||
then
|
||||
echo "$(basename $0) requires exactly one of: hard, medium, off"
|
||||
exit 1
|
||||
else
|
||||
case $1 in
|
||||
"hard")
|
||||
PROFILE="2947fbbad4"
|
||||
;;
|
||||
"medium")
|
||||
PROFILE="OodCanine"
|
||||
;;
|
||||
"off")
|
||||
;;
|
||||
*)
|
||||
echo "Wrong command, either hard, medium or off"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
|
||||
sudo systemctl stop openvpn@2947fbbad4.service
|
||||
sudo systemctl stop openvpn@OodCanine.service
|
||||
sleep 1s
|
||||
|
||||
if [[ -n $PROFILE ]]
|
||||
then
|
||||
sudo systemctl start openvpn@$PROFILE.service
|
||||
fi
|
||||
echo "$PROFILE started"
|
||||
fi
|
||||
|
9
scripts/prefix/bin/zathura-sync
Executable file
9
scripts/prefix/bin/zathura-sync
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
pos="$1"
|
||||
pdffile="$2"
|
||||
zathura --synctex-forward "$pos" "$pdffile" || \
|
||||
(
|
||||
zathura -x "emacsclient --eval '(progn (find-file \"%{input}\") (goto-line %{line}))'" "$pdffile" &
|
||||
sleep 1; zathura --synctex-forward "$pos" "$pdffile" )
|
||||
|
||||
exit
|
Loading…
Reference in a new issue