init
This commit is contained in:
102
qckswp
Executable file
102
qckswp
Executable file
@ -0,0 +1,102 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
enable -n echo
|
||||||
|
|
||||||
|
readonly NORMAL="\33[0m"
|
||||||
|
readonly BOLD="\33[1m"
|
||||||
|
readonly RED="\33[31m"
|
||||||
|
readonly GREEN="\33[32m"
|
||||||
|
readonly YELLOW="\33[33m"
|
||||||
|
|
||||||
|
SCRIPT_NAME=$(basename $0)
|
||||||
|
|
||||||
|
function usage(){
|
||||||
|
echo -e "${BOLD}${SCRIPT_NAME} [verb]${NORMAL}"
|
||||||
|
echo -e " new [name] [bak] [load] : add quick swapible files"
|
||||||
|
echo -e " update [name] [bak] [load] : overwrite entry"
|
||||||
|
echo -e " delete [name] : remove entry"
|
||||||
|
echo -e " bak [name] : copy [name]'s [load] file over the its [bak] file"
|
||||||
|
echo -e " load [name] : copy [name]'s [bak] file over the its [load] file"
|
||||||
|
echo -e " list : list already added targets"
|
||||||
|
echo -e " clean : rm [load]"
|
||||||
|
echo -e "${YELLOW}${SCRIPT_NAME} is an utility for quickly swapping 2 predefined files either way.${NORMAL}"
|
||||||
|
echo -e "${YELLOW}For this a structures of \"name;[bak];[load]\" are used. These are saved/read from the file marked by \${QCKSWP_SAVES}.${NORMAL}"
|
||||||
|
echo -e "${YELLOW}Paths with semi colons in their names are not supported.${NORMAL}"
|
||||||
|
}
|
||||||
|
|
||||||
|
OPTSTR="h"
|
||||||
|
while getopts "${OPTSTR}" O; do
|
||||||
|
case $O in
|
||||||
|
h) usage && exit ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
! [ -f "$QCKSWP_SAVES" ] && echo -e "${RED}\${QCKSWP_SAVES} does not mark an existing file. Create it or change the variable!${NORMAL}" && exit 1
|
||||||
|
|
||||||
|
function argc_check(){
|
||||||
|
(( $1 != $2 )) && echo -e "${RED}Syntax error.${NORMAL}" && exit 1
|
||||||
|
}
|
||||||
|
function entry_exists_check(){
|
||||||
|
! egrep "^${1};.*" "${QCKSWP_SAVES}" &> /dev/null && echo -e "${RED}Entry does not exits.${NORMAL}" && exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function f(){
|
||||||
|
case $1 in
|
||||||
|
"b")
|
||||||
|
N=2
|
||||||
|
;;
|
||||||
|
"l")
|
||||||
|
N=3
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo "$(egrep "^${2};.*" "${QCKSWP_SAVES}" | cut -d ';' -f "$N")"
|
||||||
|
}
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
"new")
|
||||||
|
argc_check $# 4
|
||||||
|
egrep "^${2};.*" "${QCKSWP_SAVES}" &> /dev/null && echo -e "${RED}Entry already exits.${NORMAL}" && exit 1
|
||||||
|
echo "${2};${3};${4}" >> "${QCKSWP_SAVES}"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"update")
|
||||||
|
argc_check $# 4
|
||||||
|
entry_exists_check "$2"
|
||||||
|
sed -i "/^${2};.*/s/${2};${3};${4}" "${QCKSWP_SAVES}"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"delete")
|
||||||
|
argc_check $# 2
|
||||||
|
entry_exists_check "$2"
|
||||||
|
sed -i "/^${2};.*/d" "${QCKSWP_SAVES}"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"list")
|
||||||
|
argc_check $# 1
|
||||||
|
! tbt -i "${QCKSWP_SAVES}" && ! bat "${QCKSWP_SAVES}" && cat "${QCKSWP_SAVES}"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"bak")
|
||||||
|
argc_check $# 2
|
||||||
|
entry_exists_check "$2"
|
||||||
|
cp -r -v "$(f l "$2")" "$(f b "$2")" && echo -e "${GREEN}Successfull copy.${NORMAL}"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"load")
|
||||||
|
argc_check $# 2
|
||||||
|
entry_exists_check "$2"
|
||||||
|
cp -r -v "$(f b "$2")" "$(f l "$2")" && echo -e "${GREEN}Successfull copy.${NORMAL}"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"clean")
|
||||||
|
argc_check $# 2
|
||||||
|
entry_exists_check "$2"
|
||||||
|
rm -r $(f l "$2") && echo -e "${RED}Deletion complete.${RED}"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${RED}Syntax error.${NORMAL}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
Reference in New Issue
Block a user